Definiție tip document

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Definiția tipului de document (literal „definiția tipului de document”, cunoscută și cu acronimul DTD ) este un instrument utilizat de programatori al căror scop este de a defini componentele permise în construcția unui document XML .

Termenul nu este folosit doar pentru documentele XML, ci și pentru toate documentele derivate din SGML (dintre care, cu toate acestea, XML vrea să fie o simplificare care își menține puterea prin reducerea complexității sale), printre care HTML este foarte faimos.

În SGML este necesară o DTD pentru validarea documentelor. Chiar și în XML un document este valid dacă are un DTD și este posibil să îl validați folosind DTD.

Cu toate acestea, XML permite și documente bine formate, adică documente care, deși lipsite de DTD-uri, au o structură suficient de regulată și ușor de înțeles pentru a fi controlate.

DTD poate fi declarat în cadrul aceluiași document XML (declarație inline ).

Ce face un DTD

  • Definește elementele juridice din document. Nu puteți utiliza alte elemente decât cele definite. Un fel de „vocabular” pentru fișierele care îl vor folosi.
  • Acesta definește structura fiecărui element. Structura indică ce poate conține fiecare element, ordinea, cantitatea de elemente care pot apărea și dacă sunt opționale sau obligatorii. Un fel de „gramatică”.
  • Declară un set de atribute pentru fiecare element și ce valori pot sau ar trebui să ia aceste atribute.
  • În cele din urmă, oferă câteva mecanisme pentru simplificarea gestionării documentelor, cum ar fi capacitatea de a declara entități și capacitatea de a importa părți ale altor DTD-uri.

Mai mult, DTD este folosit de un analizor pentru a verifica corectitudinea unui document (bine format).

Exemplu

Următorul DTD:

 <! ELEMENT persoană ( nume , prenume ) >
<! Nume ELEMENT ( #PCDATA ) >
<! Prenume ELEMENT ( #PCDATA ) >

definește o structură după cum urmează:

 <persoană>
  <name> Mario </name>
  <surname> Rossi </surname>
</person>

Sintaxa DTD

O DTD este opțională și poate fi specificată la începutul unui document XML și se poate specifica, de asemenea, dacă definițiile sunt interne sau externe documentului XML.

DTD intern:

 <! Raport DOCTYPE [ ...
]>

DTD extern:

 <! DOCTYPE Report SYSTEM „Report.dtd” >
<! DOCTYPE Report PUBLIC „Report.dtd” >

Element DTD

Fiecare element trebuie declarat într-un DTD cu declarații de tip element. Astfel de declarații iau forma:

 <! ELEMENT nume-element ( model de conținut )>

Exemplu:

 <? xml version = "1.0"?>
<! Notă DOCTYPE [
<! NOTĂ ELEMENT (#PCDATA)>
]>
<note> Nu uitați să cumpărați lapte în drum spre casă </note>

#PCDATA

  1. PCDATA este un cuvânt cheie rezervat DTD pentru „Date de caractere analizate”, care indică text generic.
  2. PCDATA indică faptul că elementul conține date text care pot fi citite de un analizor XML și procesate corespunzător. Dacă există markere în PCDATA, acestea pot afecta analiza documentului.

Cuvânt cheie ORICE

Puteți defini un anumit element știind că cu siguranță nu este gol (adică conține elemente sau text sau ambele), dar fără a cunoaște exact modelul de conținut. Cuvântul cheie ORICE poate fi apoi utilizat în DTD pentru a declara că conținutul acelui element poate fi orice.

Sintaxă
 <! Nume ELEMENT ORICE >

Exemplu:

 <? xml version = "1.0"?>
<! Notă DOCTYPE [
<! ELEMENT NOTA ORICE>
<! ELEMENT NUMĂR GOLIT>
<! Mesaj ELEMENT (#PCDATA)>
<! DATE ELEMENT GOLIT>
]>
<notă>
<număr />
<message> Nu uitați să cumpărați lapte în drum spre casă </message>
<data />
</note>

Conținut mixt al elementului

Dacă doriți să definiți o regulă care permite unui element să conțină text sau alte elemente într-o combinație, utilizați un model de conținut mixt.

Sintaxă
 <! ELEMENT nume ( #PCDATA | copil ) * >
Exemplu:
 <? xml version = "1.0"?>
<! Notă DOCTYPE [
<! ELEMENT nota (#PCDATA | număr | mesaj | data) *>
<! ELEMENT NUMĂR GOLIT>
<! Mesaj ELEMENT (#PCDATA)>
<! DATE ELEMENT GOLIT>
]>
<notă> Notă importantă
<număr />
<message> Nu uitați să cumpărați lapte în drum spre casă </message>
<data />
</note>

Elemente imbricate

Elementele pot fi containere pentru alte elemente (elemente imbricate).

Elementul rădăcină al unui document XML este de obicei de acest tip. Exemplu:

 <? xml version = "1.0"?>
<! Notă DOCTYPE [
<! ELEMENT nota (mesaj)>
<! Mesaj ELEMENT (#PCDATA)>
]>
<notă>
<message> Nu uitați să cumpărați lapte revenind la
acasă </message>
</note>

Definiția DTD prevede mai întâi declarația elementului rădăcină și între paranteze rotunde lista elementelor imbricate și după declarația pentru fiecare element imbricat.

Element gol

Elementele goale sunt utilizate în mod normal ca substituenți sau pentru a furniza valorile atributelor necesare care nu modifică corect alte elemente. Cuvântul cheie EMPTY din modelul de conținut al unui element declară că este un element gol. Exemplu:

 <? xml version = "1.0"?>
<! Notă DOCTYPE [
<! ELEMENT notă (număr, mesaj)>
<! ELEMENT NUMĂR GOLIT>
<! Mesaj ELEMENT (#PCDATA)>
]>
<notă>
<număr />
<message> Nu uitați să cumpărați lapte în drum spre casă </message>
</note>

Atribut

Declarațiile de atribute iau următoarea formă:

 <! ATTLIST nume-element
attribute- NAME1 (tip) default_values
attribute- name2 (tip) default_values>

Trei tipuri de bază de atribute sunt declarate într-un DTD:

  1. Șiruri, indicate prin cuvântul cheie CDATA (CDATA este doar text, dar text pe care analizorul nu încearcă să îl proceseze; caracterele de marcare, cum ar fi parantezele unghiulare, sunt ignorate în segmentele CDATA, dar rezolvate în segmentele PCDATA.)
  2. Atribute tokenizate, indicate prin jetoane declarate
  3. Atribute enumerate, pentru care este indicat un set de valori valide pentru a alege

Valori implicite ale atributelor

  1. #REQUIRED Specifică faptul că atributul este necesar
  2. #FIXED Oferă o declarație constantă pentru valoarea unui atribut. Dacă valoarea este diferită de cea declarată, documentul nu este valid
  3. #IMPLIED Atributul este opțional. Adică, dacă atributul nu apare în element, aplicația de procesare poate utiliza orice valoare (dacă este necesar).

Exemplu:

 <? xml version = "1.0"?>
<! Notă DOCTYPE [
<! ELEMENT nota (mesaj)>
<! Mesaj ELEMENT (#PCDATA)>
<! Mesaj ATTLIST
CDATA # număr NECESAR
data CDATA # NECESARĂ> ]>
<notă>
<message number = "10" data = "140305" >
Nu uitați să cumpărați lapte pe drumul spre casă
</message>
</note>

Cuvântul cheie CDATA permite ca orice alt caracter decât < , > și & incluse în șir.

Atribute tokenizate

Opțiunile tokenizate oferă o modalitate de a limita valorile permise pentru atribute. De exemplu, este posibil să dorim ca fiecare element să aibă un identificator unic sau să permitem unui atribut să aibă doar una sau două valori diferite.

Tipuri de atribute tokenizate în DTD-uri:

  1. ID Identifică în mod unic un articol
  2. IDREF Indică un element care are un atribut ID
  3. IDREFS Indică mai multe elemente care au un atribut ID. Atributele marcate sunt listate separate printr-un spațiu
  4. ENTITĂȚI Se referă la o entitate externă neparsată
  5. NMTOKEN definește unele limitări privind caracterele acceptabile din conținutul XML;

în special, restricționează datele la aceleași reguli folosite în convențiile de denumire a elementelor XML. Tipul atributului simbolului de nume, adică NMTOKEN, restricționează valorile valide la cele constând din litere, cifre, puncte, liniuțe, virgule și puncte de subliniere.

Exemplu
 <? xml version = "1.0"?>
<! Notă DOCTYPE [
<! ELEMENT notă (mesaj +, rezultat +)>
<! Mesaj ELEMENT (#PCDATA)>
<! Mesaj ATTLIST
# Număr de identificare NECESAR
din CDATA # NECESAR>
<! Rezultatul ELEMENT (#PCDATA)>
<! Rezultat ATTLIST
msg IDREF #IMPLIED>
]>
<notă>
<message number = "a1" from = "Pippo" > Nu uitați să cumpărați lapte revenind la
acasă </message>
<message number = "a2" from = "Pluto" > Am nevoie de ajutor la temele mele
</message>
<result msg = "a1" > laptele a fost depășit </result>
<result msg = "a1" > Am fost la un alt magazin </result>
<result msg = "a2" > Mi-am terminat temele în curând </result>
</note>

Atribute enumerate

Atributele de tip enumerate descriu o listă de valori posibile pentru atributul evaluat. Pentru ca cerința de validitate să fie îndeplinită, atributul trebuie să aibă una dintre valorile din listă; în orice alt caz este considerat invalid. Valorile enumerate sunt separate printr-un caracter "pipe" (|), care este interpretat ca un logic "sau" de către procesorul XML.

Exemplu:

 <! Mesaj ATTLIST
Avertisment ( scăzut | normal | urgent ) „scăzut” >

Indicatori de apariție

În DTD, sunt folosite simboluri care predispun analiza pentru a număra aparițiile unui obiect.

  1. , (de ex. a, b, c ) Acest operator de secvență separă membrii unei liste care necesită utilizarea secvențială a tuturor membrilor listei (a urmat de b, urmat de c)
  2. | (ex. a|b|c ) Acesta este un operator de alegere, care separă membrii unei liste atunci când este necesară utilizarea unuia și a unuia dintre membri ( a sau b sau c ).

Lipsa unui simbol indică o apariție necesară (o singură dată).

  1. ? desemnează o apariție opțională (zero sau una).
  2. + indică o apariție obligatorie și repetabilă (una sau mai multe).
  3. * indică o apariție opțională și repetabilă (zero, una sau mai multe).

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT