3. Document Type Definiton

Bilindiği gibi xml ile bir sistemden başka bir sisteme veri transferi yapılır. Bu verilerin belli bir standartta olup bu strandardın dışına çıkılmaması gerekir. Yani alıcı xml verisini aldığında geri gönderim yaparken şablon dışında bir veri gönderememeli. Document type definition bize xml için bir şablon sunar ve xml bu şablon dışına çıktığında geçersiz olur.

Aşağıda görüldüğü üzere xml’in üzerinde döküman tip tanımı mevcuttur. Bu tanımın bize anlatmak istediği şey 
  1. “mail_kutusu” adında bir root elementimiz olacak.
  2. “mail_kutusu” taginin içerisinde “mail” adında bir tag olacak.
  3.  mail taginin içerisinde “kime”,”kimden”,”konu”,”mesaj” tagleri olacak.
  4.  kime,kimden,konu ve mesaj taglerinin içeriği #PCDATA yani metin olacak.

<!DOCTYPE mail_kutusu[
 <!ELEMENT mail_kutusu (mail)>
 <!ElEMENT mail (kime,kimden,konu,mesaj)>
 <!ELEMENT kime (#PCDATA)>
 <!ELEMENT kime (#PCDATA)>
 <!ELEMENT kime (#PCDATA)>
 <!ELEMENT mesaj(#PCDATA)>

]>

<mail_kutusu>

<mail>
<kime>CAGATAY</kime>
<kimden>MUSTAFA</kimden>
<konu>YAZILIM</konu>
<mesaj>MESAJ ICERIGI</mesaj>

</mail>

</mail_kutusu>


DTD İŞARETLERİ

   *                : Element 0 veya daha fazla kez tanımlanabilir.
   +               : Element en az 1 defa kullanılmak zorundadır.
   ?               : Element 0 veya 1 defa kullanılmak zorundadır.
  A|B           : Ya A elementi kullanılabilir ya B
Hiçbirşey :  Element yalnızca 1 defa kullanılabilir.


1.  * İFADESİ

Element 0 veya daha fazla kez tanımlanabilir.

<!DOCTYPE mail_kutusu[
 <!ELEMENT mail_kutusu (mail*)>
]>

<mail_kutusu>

<mail> </mail>
<mail> </mail>

</mail_kutusu>

2. + İFADESİ

Element en az 1 defa kullanılmak zorundadır.

Aşağıda “kime” tagı en az bir defa kullanılmak zorundadır. Kullanılmayan xml geçerli olmaz 

<!DOCTYPE mail_kutusu[
 <!ELEMENT mail_kutusu (mail*)>
 <!ElEMENT mail (kime+)>
]>

<mail_kutusu>

  <mail>

    <kime></kime>

  </mail>

  <mail>

    <kime></kime>
    <kime></kime>

  </mail>

</mail_kutusu>

3. ? İFADESİ

Element 0 veya 1 defa kullanılmak zorundadır.

<!DOCTYPE mail_kutusu[
 <!ELEMENT mail_kutusu (mail*)>
 <!ELEMENT mail (kime?)>
]>

<mail_kutusu>

  <mail>
    <kime></kime>
  </mail>

  <mail>

  </mail>

</mail_kutusu>

4. A | B İFADESİ

  Ya A elementi kullanılabilir ya B elementi.

 Aşağıda kime elementinin içerisinde ya bir text olmalı ya da “icerik” adında başka bir tag

<!DOCTYPE mail_kutusu[
 <!ELEMENT mail_kutusu (mail)>
 <!ELEMENT mail (kime)>
 <!ELEMENT kime(#PCDATA | icerik)>
]>