DTD ( în engleză Document Type Definition - document type definition) este o abreviere pentru următoarele două concepte:
Datorită anumitor diferențe dintre XML și SGML, aplicarea unui DTD are și unele particularități în funcție de documentul țintă.
Acum există un refuz de a utiliza DTD în tehnologia XML din mai multe motive [1] :
DTD a fost înlocuit cu standardul W3C XML Schema .
Un DTD descrie schema unui document pentru un anumit limbaj de marcare prin intermediul unui set de declarații [obiecte parametri, elemente și atribute ale elementelor] care descriu clasa (sau tipul) acestuia în termeni de constrângeri sintactice ale acelui document. Un DTD poate declara și constructe care sunt întotdeauna necesare pentru a defini structura unui document, dar care, pe de altă parte, pot afecta interpretarea anumitor documente.
O declarație de obiect parametru definește o macrocomandă de un anumit tip care poate fi referită și extinsă undeva în DTD. Este posibil ca aceste macrocomenzi să nu apară în documentul în sine, ci doar în DTD. Dacă un obiect parametru este referit prin numele său DTD, acesta se extinde la un șir care specifică conținutul acelui obiect.
Exemple:
<!ENTITY % fontstyle "TT | I | B | BIG | SMALL">Obiectul parametru fontstyleconține un grup de etichete TT | I | B | BIG | SMALL.
<!ENTITY % inline „#PCDATA | %fontstyle; | %frase; | %special; | %formctrl;">Obiectul parametru inlineconține date text și încă patru obiecte parametru fontstyle, phraseși . specialformctrl
Declarațiile de elemente definesc (specifică) setul de nume de elemente permise într-un document, tipul de conținut pentru fiecare element și etichetele obligatorii/opționale .
Diverse cuvinte cheie și simboluri definesc conținutul unui element:
Exemple:
<!ELEMENT DL - - (DT|DD)+>Un element DLtrebuie să conțină unul sau mai multe elemente DTsau DDîn orice ordine.
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)>Un element FORMtrebuie să conţină unul sau mai multe elemente ca obiect parametru blocksau element SCRIPTîn orice ordine, dar nu este posibil să conţină un alt element FORM.
Fiecărui element dintr-un document DTD i se poate atribui o listă de atribute. Pentru aceasta se folosește directiva !ATTLIST, care specifică numele elementului căruia îi este atribuită lista de atribute și parametrii fiecărui atribut: nume, tip și valoare implicită.
De exemplu:
<!ATTLIST MAP name CDATA #REQUIRED>În acest exemplu MAP, atributul este definit pe element name. Este obligatoriu.
Tipuri de atribute existente:
Există următoarele proprietăți implicite:
Pentru a asocia un document cu o anumită DTD, elementul Declarație tip document trebuie să apară la începutul corpului documentului .
În funcție de locația DTD, Declarația de tip de document poate fi de două tipuri:
Un set de declarații DTD este conținut în corpul documentului însuși. De exemplu:
<!DOCTYPE foo [ <!ENTITY salutare „helloworld”> ]> <!DOCTYPE bara [ <!ENTITY salutare „helloworld”> ]>Un set de declarații DTD se află într-un fișier text separat cu extensia .dtd. În acest caz, fișierul poate fi referit printr-un identificator public și/sau un identificator de sistem. De exemplu:
<!-- Validare HTML simplu 4.01 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">Un exemplu de DTD XML foarte simplu care descrie o listă de oameni:
<!ELEMENT listă de persoane (persoană*)> <!ELEMENT persoană (nume, data nașterii?, sex?, număr de securitate socială?)> <!ELEMENT nume (#PCDATA) > <!ELEMENT data nașterii (#PCDATA) > <!ELEMENT gen (# PCDATA) > <!ELEMENT socialsecuritynumber (#PCDATA) >Începând de la prima linie:
Un exemplu de document XML folosind acest DTD:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE people_list SYSTEM "example.dtd"> <people_list> <persoană> <name> Fred bloguri </name> <zi de naștere> 27/11/2008 </birthdate> <gen> Masculin </gen> <socialsecuritynumber> 1234567890 </socialsecuritynumber> </person> </people_list>