XML - DTD'ler

Yaygın olarak DTD olarak bilinen XML Belge Türü Bildirimi, XML dilini tam olarak tanımlamanın bir yoludur. DTD'ler, uygun XML dilinin gramer kurallarına göre XML belgelerinin yapısının kelime dağarcığını ve geçerliliğini kontrol eder.

Bir XML DTD, belgenin içinde belirtilebilir veya ayrı bir belgede tutulabilir ve ardından ayrı olarak beğenilebilir.

Sözdizimi

Bir DTD'nin temel sözdizimi aşağıdaki gibidir -

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

Yukarıdaki sözdiziminde,

  • DTD <! DOCTYPE sınırlayıcı ile başlar.

  • Bir element ayrıştırıcıya, belgeyi belirtilen kök öğeden ayrıştırmasını söyler.

  • DTD identifiersistemdeki bir dosyanın yolu veya internetteki bir dosyanın URL'si olabilecek belge türü tanımı için bir tanımlayıcıdır. DTD harici yolu işaret ediyorsa, denirExternal Subset.

  • The square brackets [ ]İç Alt Küme olarak adlandırılan isteğe bağlı bir varlık bildirimleri listesi ekleyin .

Dahili DTD

Öğeler XML dosyaları içinde bildirilmişse, DTD dahili DTD olarak adlandırılır. Buna dahili DTD olarak başvurmak için , XML bildirimindeki bağımsız öznitelik şu şekilde ayarlanmalıdır:yes. Bu, beyanın harici bir kaynaktan bağımsız çalıştığı anlamına gelir.

Sözdizimi

Dahili DTD'nin sözdizimi aşağıdadır -

<!DOCTYPE root-element [element-declarations]>

Burada kök öğe , kök öğenin adıdır ve öğe bildirimleri , öğeleri bildirdiğiniz yerdir.

Misal

Aşağıda, dahili DTD'nin basit bir örneği verilmiştir -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>

<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Yukarıdaki kodu gözden geçirelim -

Start Declaration - XML ​​bildirimine aşağıdaki ifade ile başlayın.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

DTD- XML ​​başlığından hemen sonra , genellikle DOCTYPE olarak adlandırılan belge türü bildirimi takip eder -

<!DOCTYPE address [

DOCTYPE bildiriminde, öğe adının başında bir ünlem işareti (!) Bulunur. DOCTYPE, ayrıştırıcıya bir DTD'nin bu XML belgesiyle ilişkilendirildiğini bildirir.

DTD Body - DOCTYPE bildiriminin ardından, öğeleri, öznitelikleri, varlıkları ve gösterimleri bildirdiğiniz DTD gövdesi gelir.

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

Burada <name> belgesinin kelime dağarcığını oluşturan birkaç öğe açıklanmıştır. <! ELEMENT adı (#PCDATA)>, öğe adını "#PCDATA" türünde olacak şekilde tanımlar . Burada #PCDATA, ayrıştırılabilir metin verileri anlamına gelir.

End Declaration - Son olarak, DTD'nin bildirim bölümü, bir kapatma ayracı ve bir kapanma açılı ayraç kullanılarak kapatılır (]>). Bu, tanımı etkili bir şekilde sona erdirir ve bundan sonra XML belgesi hemen izler.

Kurallar

  • Belge türü bildirimi belgenin başında görünmelidir (öncesinde yalnızca XML başlığı bulunur) - belgenin başka hiçbir yerinde buna izin verilmez.

  • DOCTYPE bildirimine benzer şekilde, öğe bildirimleri bir ünlem işaretiyle başlamalıdır.

  • Belge türü bildirimindeki Ad, kök öğenin öğe türüyle eşleşmelidir.

Harici DTD

Harici DTD'de öğeler XML dosyasının dışında bildirilir. Yasal .dtd dosyası veya geçerli bir URL olabilecek sistem öznitelikleri belirtilerek bunlara erişilir . Harici DTD olarak adlandırmak için , XML bildirimindeki bağımsız öznitelik şu şekilde ayarlanmalıdır:no. Bu, beyanın dış kaynaktan gelen bilgileri içerdiği anlamına gelir.

Sözdizimi

Harici DTD için sözdizimi aşağıdadır -

<!DOCTYPE root-element SYSTEM "file-name">

nerede dosya adı ile dosya .dtd uzantısı.

Misal

Aşağıdaki örnek, harici DTD kullanımını gösterir -

<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

DTD dosyasının içeriği address.dtd gösterildiği gibi -

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

Türler

Aşağıdakilerden birini kullanarak harici bir DTD'ye başvurabilirsiniz system identifiers veya public identifiers.

Sistem Tanımlayıcıları

Bir sistem tanımlayıcısı, DTD bildirimlerini içeren harici bir dosyanın konumunu belirlemenizi sağlar. Sözdizimi aşağıdaki gibidir -

<!DOCTYPE name SYSTEM "address.dtd" [...]>

Gördüğünüz gibi, SYSTEM anahtar sözcüğünü ve belgenin konumuna işaret eden bir URI referansı içeriyor.

Genel Tanımlayıcılar

Genel tanımlayıcılar, DTD kaynaklarını bulmak için bir mekanizma sağlar ve aşağıdaki gibi yazılmıştır -

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Gördüğünüz gibi, KAMU anahtar kelimesi ile başlar ve ardından özel bir tanımlayıcı gelir. Genel tanımlayıcılar, bir katalogdaki bir girişi tanımlamak için kullanılır. Genel tanımlayıcılar herhangi bir formatı takip edebilir, ancak yaygın olarak kullanılan bir formatFormal Public Identifiers, or FPIs.