DTD

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 13 august 2019; verificările necesită 38 de modificări .

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] :

  1. Utilizează o altă sintaxă decât XML.
  2. Fără tastare de nod (în DTD).
  3. Nu există suport pentru spațiile de nume (în DTD).

DTD a fost înlocuit cu standardul W3C XML Schema .

Descrierea schemei documentului

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.

Declararea obiectelor parametri

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ții de elemente

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:

  • EMPTY - continut gol
  • ANY - orice conținut
  • , - specifica comanda
  • | - separarea alternativelor
  • () - grupare
  • * - orice număr de elemente (zero sau mai multe)
  • + - cel puțin un element (unul sau mai multe)
  • ? - prezența opțională a elementului (zero sau unu)
  • Dacă nu *, +sau ? - trebuie să existe un singur 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.

Declarații de atribute ale elementelor

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:

  • CDATA(Setul de caractere de date) - valoarea atributului poate fi orice date de caractere
  • ID - valoarea atributului trebuie să fie identificatorul unic al elementului
  • IDREF - valoarea elementului este o referire la element prin intermediul acestuiaID
  • IDREFS - la fel ca IDREF, dar cu posibilitatea de a legături nu printr-un singur identificator, ci prin mai multe
  • NMTOKEN - valoarea atributului poate fi o secvență de caractere, oarecum asemănătoare cu numele (de aici și numele - jeton de nume). Acesta este un șir care conține orice combinație a acelor caractere care sunt permise pentru numele XML.
  • NMTOKENS — valoarea atributului este o listă de valori
  • ENTITY — valoarea este utilizată pentru a se referi la o entitate externă.
  • ENTITIES - vă permite să specificați o listă de entități externe separate prin spații.
  • NOTATION - valoarea atributului poate fi una dintre notațiile definite anterior
  • NOTATIONS - vă permite să setați o listă de notații.
  • ListingsșiNOTATION-listings
  • ENUMERATION — specifică o listă de posibile alternative de valoare.

Există următoarele proprietăți implicite:

  1. IMPLIED - valoarea atributului este optionala;
  2. REQUIRED — trebuie specificată valoarea atributului;
  3. FIXED - valoarea acestui atribut este setată ca constantă în DTD și nu poate fi modificată în document;
  4. o anumită valoare care este utilizată implicit.

Asocierea unui document cu un DTD specific

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:

  • Subsetul intern al DTD

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”> ]>
  • Subsetul extern al DTD

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">

Exemplu

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:

  1. Un element <people_list>conține orice număr de elemente <person>. Semnul <*>înseamnă că 0, 1 sau mai multe elemente sunt posibile <person>în cadrul elementului <people_list>.
  2. Elementul conține <person>elementele <name>, <birthdate>și <gender>. <socialsecuritynumber>Semnul <?>înseamnă că elementul este opțional. Elementul <name>nu conține <?>, ceea ce înseamnă că elementul <person> trebuie să conțină elementul <name>.
  3. Elementul <name>conține date.
  4. Elementul <birthdate>conține date.
  5. Elementul <gender>conține date.
  6. Elementul <socialsecuritynumber>conține date.

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>

Vezi și

Note

  1. Editorii Ashok Malhotra, Murray Maloney. Cerințe pentru schema XML . W3C (15 februarie 1999). Preluat la 26 iulie 2021. Arhivat din original la 19 iulie 2021.