miercuri, 5 noiembrie 2008

DTD

DTD

Ce este DTD?

DTD = Document Type Definition
DTD specifica structura unui document XML si este primul limbaj aparut de acest gen.Un astfel de limbaj este necesar pentru a putea valida automat structura XML-urilor.

Daca fisierele XML au o strucutura anume se poate sa se:
• defineasca un standard pentru documentele XML – exemplu SVG (Scalable Vector Graphics) – limbaj prin care se pot defini grafice bidimensionale, se bazeaza pe XML şi este caracterizat de un fişier DTD. Toate aplicaţiile care crează fişiere SVG se bazează pe acelaşi fişier DTD şi implicit vor crea fişiere XML ce au aceeaşi structură

valideze fişierele XML primite –cand se primiteste un fisier se poate verifica usor cu ajutorul DTD-ului daca acesta respecta structura data; dar daca nu o respecta stim de la inceput ca nu vom avea sanse mari de a-l prelucra si extrage informatii folosind programe in acest gen

• incorporeze de catre fisierele XML, DTD-urile care ii definesc structura sau sa contina referinte catre acesteaCu ajutorul DTD-ului putem defini elemente, atribute, restrictii simple cu privire la numarul de aparitii ale elementelor si tipul lor. Asemanator cu DTD-ul a aparut mai nou si XML Schema care permite sa fie definite niste constrangeri mai avansate si care foloseste acelasi limbaj ca si un XML, nu are propria lui sintaxa ca DTD-ul.

Sintaxa
In cazul in care fişierul DTD este conţinut în fişierul XML :

sau într-un fişier extern:

Unde:
• “element_rădăcină” = elementul rădăcină al fişierului XML.
• SYSTEM (cuvât cheie)= se foloseste daca fişierul XML contine referinte catre .dtd si amandoua fisierele se gasesc pe acelasi calculator (system)
• PUBLIC se foloseşte când .dtd se află la o adresă externă şi este urmat de FPI (Formal Public Identifier) – un string care identifică în mod unic un DTD (Exemplu de FPI: "-//W3C//DTD HTML 4.01 Transitional//EN" – DTD pentru HTML).
• URL=URL-ul local sau extern unde poate fi găsit fişierul .dtd. Sintaxa pentru a defini structura unui element este următoarea:

Tipul poate fi :
• EMPTY daca avem elemente vide
• ANY în cazul elementelor ce pot avea orice structură.

Cand elementul nu se afla in nici unul din tipurile prezentate anterior atunci el poate contine text:(#PCDATA – parsed character data) şi poate avea alte elemente copii. Elementele de tip copii sunt separate prin virgulă şi pot fi urmate de următorii descriptori( e = element:):
• - :e apare de 0 sau n-ori
• + :e apare de 1 sau n-ori
• ? :e apare de 0 sau 1 ori
• e1|e2 :apare e1 sau e2
Ex.
Pentru elementul ’Om’ putem scrie structura:
&ls !ELEMENT Om (nume, prenume, cnp, copil*, casatorit_cu?, (M|F), parinte+) &gt

Pentru definirea atributelor putem scrie structura:

&ls !ATTLIST element atribut tip valoare_implicită &gt
 Unde:

- ’element’ = elementul al cărui atribut îl definim

- ’atribut’ = atributul pe care îl definim
- ’tip’ poate fi:
1)      ID – valoarea atributului reprezintă un ID unic
2)      IDREF – valoarea atributului referă un ID unic
3)      IDREFS – atributul are ca valoare o lista de ID-uri
4)      CDATA – character data – text ce nu va fi parsat de parserul XML
5)       (val1|val2|..|valn) – atributul are valorile cuprinse în lista de valori val1...valn

6) Valoarea implicită pentru atribut poate fi:

- Valoare – valoarea efectiva

- #FIXED V – are mereu valoarea ‘V’

- #IMPLIED – poate lipsi

- #REQUIRED –trebuie să se găsească întotdeauna în documentul XML

În fişiere DTD se pot defini entităţi.
Entităţile
=prescurtări ale unor structuri de text ce apar mai des în fişierul XML.

Ex.
&ls !ENTITY CS “Computer Science” &gt

- se defineşte entitatea cu numele “CS” ce prescurtează denumirea “Computer Science”.

Fisierul XML poate contine:

&ls profil &gt &CS &ls /profil &gt

Înaintea entităţii se foloseşte „&” şi după aceasta se foloseşte „;”.




Niciun comentariu:

Trimiteți un comentariu