DTD

DTD (, ), belge sözdizimi kurallarını tanımlayan işaretleme kuralları kümesidir.

DTD'ler, SGML türevi işaretleme dillerinin (XML, HTML gibi) yapısını tanımlamakta kullanılır. XML işaretleme dilinin önemli özelliklerinden biri olan "genişleyebilirlik" DTD ile yeni yapıların tanımlanması ile sağlanır. Herhangi bir alandaki uygulamada kullanılacak yeni işaretleme dilleri DTD'ler ile geliştirilebilir.

DTD kullanan bir XML örneği
 <?xml version="1.0"?>
 <!DOCTYPE mail [
  <!ELEMENT mail (kime,kimden,baslik,yazi)>
  <!ELEMENT kime      (#PCDATA)>
  <!ELEMENT kimden    (#PCDATA)>
  <!ELEMENT baslik    (#PCDATA)>
  <!ELEMENT yazi      (#PCDATA)>
 ]>
 <mail>
  <kime>Ali</kime>
  <kimden>Orhan</kimden>
  <baslik>Animsatma</baslik>
  <yazi>Yarin milli maci izlemeye gidecegiz,unutma!</yazi>
 </mail>

DOCTYPE elemanı içerisinde dokümanın tanımı yapılmıştır. Buna tanıma göre, mail elemanı kök-elemanıdır ve kime, kimden, baslik, yazı olmak üzere 4 adet eleman içerir, bu elemanlar herhangi bir karakter verisi içerebilir.

DOCTYPE tanımının hemen altında geçerli bir doküman örneği verilmiştir.

DTD tanımı aynı dosyada olmak zorunda değildir, SYSTEM ya da PUBLIC sıfatı kullanılarak dış kaynaklarda tutulabilir. Aşağıdaki örnekte DTD tanımı XML dosyası ile aynı dizinde bulunan "mail.dtd" dosyasında yapılmıştır:
<?xml version="1.0"?>
 <!DOCTYPE mail SYSTEM "mail.dtd">
 <mail>
   <kime>Ali</kime>
   <kimden>Veli</kimden>
   <baslik>Hatırlatma</baslik>
   <yazi>Yarin milli maci izlemeye gidecegiz, unutma!</yazi>
 </mail>

mail.dtd içeriği:
  <!ELEMENT mail (kime,kimden,baslik,yazi)>
  <!ELEMENT kime      (#PCDATA)>
  <!ELEMENT kimden    (#PCDATA)>
  <!ELEMENT baslik    (#PCDATA)>
  <!ELEMENT yazi      (#PCDATA)>

DTD kullanan standard bir HTML 4.01 dosyası örneği 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Sayfa Başlığı</title>
</head>

<body>
  <h1>Selam Dünya!</h1>
</body>
</html>

Bu tanıma göre ilgili HTML dosyası W3 tarafından belirlenen "strict" belge türünü kullanmaktadır. PUBLIC sıfatı kullanılarak DTD tanım dosyası uzaktaki bir sunucuya işaret edebilir, bu örnekte URI referansı kullanılarak W3 sunucularından alınmaktadır.

Tüm HTML 4.01 belgeleri aşağıdaki üç SGML DTD'lerinden birini kullanır:
 -//W3C//DTD HTML 4.01//EN
 -//W3C//DTD HTML 4.01 Transitional//EN
 -//W3C//DTD HTML 4.01 Frameset//EN

DTD ifadelerinin anlamları 
 ELEMENT: Bir XML elemanı tanımlar.
 ATTLIST: Bir eleman türünün barındırabileceği özellikleri tanımlar.
 ENTITY: Belli bir içeriğin bir adla ilişkilendirilmesini sağlar.
 NOTATION: XML kapsamı dışında kalan içeriğin tanımlanmasını sağlar. Bu içerik, XML belgesinin bir parçası olarak yorumlanmaz.

XML tabanlı standartlar