BluePink BluePink
XHost
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink.

DTD sau XSchema ?

Acest articol isi propune sa analizeze doua dintre tehnologiile de validare a documentelor XML anume DTD si XML Schema Definition. Mai intai se va face o clarificare a termenilor folositi, apoi vor fi prezentate pe scurt si comparativ caracteristicile celor doua tehnologii dupa care se va prezenta si o posibila a treia alternativa.

Terminologie

Se face adesea confuzie intre termenii XML bine format si XML valid. E important sa se inteleaga ca pentru a fi bine format un document XML trebuie sa indeplineasca doar niste cerinte minimale (de exemplu fiecare tag deschis sa fie si inchis), cerinte fara de care respectivul document nici nu poate fi numit XML. In schimb, validitatea documentului presupune respectarea mai multor constrangeri. Un document care e valid e si bine format in timp ce reciproca nu e valabila.

Exemple de constrangeri suplimentare carora trebuie sa se conformeze un document pentru a fi valid pot fi:

Se foloseste in sens larg, termenul de XML Schema pentru a defini un limbaj care descrie aceste constrangeri. DTD si XML Schema Definition sunt cele mai populare exemple de astfel de limbaje la momentul actual. In aceasta acceptiune, DTD este o XML Schema. O alta XML Schema in acest sens al cuvantului este XML Schema Definition care e o recomandare a W3C. Se produce confuzie deoarece datorita popularitatii de care s-a bucurat, XML Schema Definition a ajuns sa fie numita simplu XSchema si a acoperit astfel sensul general al termenului XML Schema. In cele ce urmeaza, la fel ca in titlu, XSchema se va referi la sensul restrans: limbajul XML Schema Definition.

DTD

DTD - Document Type Definition este un limbaj vechi, fiind definit si pentru SGML, stramosul XML-ului. DTD descrie structura unui document folosind declaratii de elemente si liste de atribute completate cu pattern-uri asemanatoare expresiilor regulate pentru a descrie numarul permis de aparitii ale fiecarui element sau atribut. Pentru o introducere practica in DTD este foarte util tutorialul de pe w3schools.

Criticile aduse DTD-ului sunt diverse. Cea mai importanta e lipsa de expresivitate el neputand exprima multe caracteristici ale unui document XML. De asemenea fisierul DTD nu este un fisier XML si deci necesita logica suplimentara de parsare a sa de catre validatoare. DTD nu suporta spatii de nume care sunt foarte folosite in documentele XML recente si nu poate sa descrie exact nici tipurile de date care au voie sa apara in cadrul unui document.

XSchema

XML Schema Definition, pe scurt XSchema , este un limbaj mult mai recent fiind adoptat ca recomandare a W3C in mai 2001. Un fisier XSchema este un fisier XML si foloseste tag-uri si atribute prestabilite care descriu caracteristicile documentului XML ce se doreste a fi validat. XSchema suporta spatii de nume si de asemenea poate descrie tipuri de date permise in cadrul XML-ului. Aceasta din urma caracteristica este vazuta atat drept un avantaj - permite validare mai stricta - dar si ca o limitare a independentei de platforma a XML-ului. Astfel, se argumenteaza ca exista o inclinare a XSchema catre tipurile de date folosite de Microsoft in produsele sale (e de notorietate faptul ca Microsoft a fost si este un important sustinator al XSchema ).

O introducere pragmatica in XSchema se gaseste din nou la w3schools.

Concluzie

Drept concluzie, se poate afirma ca XSchema se impune incet incet datorita avantajelor pe care le ofera dar ca in acelasi timp DTD ramane pe pozitii in unele cazuri. De exemplu sa nu uitam ca un document este HTML valid daca este conform cu un DTD.

In incheiere, ar trebui specificat ca exista si alte limbaje folosite pentru validare care in viitor pot deveni concurenti redutabili pentru DTD si XSchema . Un exemplu este RELAX NG care este apreciat datorita faptului ca e foarte concis, simplu si la fel de puternic precum XSchema .