Articol despre DTD
DTD prescurteaza Document Type Definition. Este primul limbaj care a aparut pentru specificarea structurii documentelor XML. Avantajele pe care le aduce o astfel de specificare sunt posibilitatea de a defini un standard pentru anumite tipuri de fisiere si pentru anumite tipuri de aplicatii, care se poate folosi in cazul in care este nevoie de validarea fisierelor XML, dintre o serie de mai multe fisiere primite. De asemenea, fiecare fisier XML va putea avea(contine) o referinta catre fisierul care ii defineste si valideaza structura.
Un DTD permite definirea unor atribute si restrictii simple care vizeaza cardinalitatea elementelor sau care vizeaza tipul lor. In momentul de fata, se foloseste pentru aceste scopuri o schema numita XML Schema si care permite definirea unor constrangeri mai avansate. Acesta, spre deosebire de DTD este scris tot intr-un XML.
Sintaxa DTD-ul care defineste si valideaza structura unui XML poate fi declarat in interiorul fisierului XML, folosind sintaxa urmatoare :
<!DOCTYPE root-element [element-declarations]> Daca insa DTD-ul este declarat in exteriorul fisierului XML, atunci, fisierul XML trebuie sa contina la inceput o declaratie prin care se precizeaza DTD-ul care il valideaza:
<!DOCTYPE root-element SYSTEM "filename"> Sintaxa pentru definirea unui element este :
<!ELEMENT nume tip sau (structura + descriptori)> Tipul poate fi EMPTY in cazul elementelor vide sau ANY în cazul elementelor ce pot avea orice structura. Daca elementul nu este dintr-unul din tipurile de mai sus atunci el poate contine text (#PCDATA – parsed character data) si poate avea alte elemente copii. Elementele copii ce pot fi intâlnite in structura unui element sunt separate prin virgula si pot fi urmate de urmatorii descriptori
- * - elementul poate sa apara de 0 sau mai multe ori
- + - elementul poate sa apara de 1 sau mai multe ori
- ? - elementul poate sa apara de 0 sau 1 ori
- Element1 | Element2 – poate sa apara ori Element1 ori Element2
Tipul poate avea mai multe valori dintre care cele mai frecvent folosite sunt urmatoarele
- • CDATA – character data – text ce nu va fi parsat de parserul XML
- • ID – valoarea atributului reprezinta un ID unic
- • IDREF – valoarea atributului refera un ID unic
- • IDREFS – atributul are ca valoare o lista de ID-uri
- • (val1|val2|..|valn) – atributul are valorile cuprinse în lista de valori val1...valn
Valoarea implicita poate avea una din urmatoarele valori:
• Valoare – valoarea implicita a atributului
• #FIXED valoare – atributul are întotdeauna valoarea “valoare”
• #IMPLIED – atributul poate lipsi
• #REQUIRED – atributul trebuie sa se gaseasca întotdeauna în documentul XML
Tutoriale complete pentru DTD se pot gasi la :
http://www.w3schools.com/dtd/dtd_validation.asp
DTD-urile sunt folosite pentru a creea o aceeasi structura pentru fisierele XML folosite de o aplicatie sau de un grup de persoane care trebuie sa schimbe intre ei informatii.
Aplicatia, de asemenea, va folosi DTD-ul ca sa valideze fisiere XML primite din afara.
Daca aveti un fisier XML si un DTD care sa ii defineasca structura, atunci acestea pot si verificate si folosind cateva instrumente care se gasesc la :
http://www.validome.org/grammar/
http://www.stg.brown.edu/service/xmlvalid/
http://www.xmlblueprint.com/DTD-Validator.htm
- unde trebuie doar sa indicati care sunt fisierele repsective.
In sectiunea Teme, la tema 1 se gasesc un fisier XML si un DTD care sa il valideze. Structurile lor nu sunt complexe.