DTD - Sözdizimi

XML DTD belgenin içinde belirtilebilir veya ayrı bir belgede tutulabilir ve ardından belge kullanmak için DTD belgesine bağlanabilir.

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.

  • square brackets [ ] isteğe bağlı olarak adlandırılan varlık bildirimlerinin bir listesini ekleyin internal subset.

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, bildirimin dış kaynaktan bağımsız çalıştığı anlamına gelir.

Sözdizimi

Dahili DTD'nin sözdizimi gösterildiği gibidir -

<!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 ifadeyle 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 yer almalıdır (ö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 başvurmak 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 gibidir -

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

Türler

Şunu kullanarak harici bir DTD'ye başvurabilirsiniz: system identifiers veya public identifiers.

System Identifiers

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.

Public Identifiers

Genel tanımlayıcılar, DTD kaynaklarını bulmak için bir mekanizma sağlar ve aşağıdaki gibi yazılı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 formata Resmi Genel Tanımlayıcılar veya FPI'ler denir.