Documente Academic
Documente Profesional
Documente Cultură
CUPRINS
Conversaia 1. De la (X)HTML la XML.............................................. 3
XML eXtensible Markup Language ......................................................
XML XML, un metalimbaj utilizat pentru descrierea datelor .
XML Regulile de aur ale limbajului XML ..
XML Tem ..
3
5
6
18
Conversaia 2. Creai documente XML bine formate .................... 19
XML Structura unui document XML bine format ...
XML Creai elemente XML cu tipuri de coninut diferite .
XML Metode i instrumente pentru crearea documentelor XML bine
formate ..
XML Tem
19
28
32
47
Conversaia 3. Inserai caractere speciale cu XML ....................... 49
XML Caracterele speciale pot provoca erori de prelucrare ...
XML Inserai seciuni CDATA ......
XML Utilizai entiti predefinite ..
XML Definii i utilizai o referin de entitate general intern ....
XML Tem .....
49
50
52
53
59
Conversaia 4. Creai documente XML valide ............................... 61
XML S nu uitm documentele XML bine formate ..
XML Definii structura unui document XML valid. Aplicaii
XML Adugai atribute unui element XML. Aplicaii ..
XML Tem ..
61
62
76
84
Conversaia 5. Afiai documentele XML cu ajutorul foilor de
stiluri n cascad ..................................................... 87
XML Utilizai foile de stiluri CSS
XML Creai fiierul de stiluri (foaia de stiluri) CSS. Aplicaii ....................
XML Legai o foaie de stiluri CSS la un document XML ..
XML Inserai elemente HTML n documentele XML ..
XML Tem
87
88
94
96
98
Conversaia 6. Afiai documentele XML cu ajutorul foilor de
stiluri XSLT .............................................................. 99
XSLT eXtensible Stylesheet Language Transformation .
XSLT Utilizai foile de stiluri XSLT ..
XSLT Creai fiierul de stiluri (foaia de stiluri) XSLT .
XSLT Legai o foaie de stiluri XSLT la un document XML ..
XSLT Principiul unei transformri XSLT. Aplicaii
XSLT Alte elemente XSLT propuse de XML ..
XML Tem .
99
100
101
108
110
117
118
Conversaia 7. Utilizai XSLT cu XPath pentru afiarea
documentelor XML .................................................. 121
XPath XML Path Language, limbaj pentru adresarea
fragmentelor XML. Aplicaii .
XML Inserai modele HTML n foile de stiluri XSLT ..
XML Combinai CSS i XSLT .
XSLT, XPath Tem ..
121
129
136
138
Conversaia 8. De la DTD la XML Schema ..................................... 139
XML Scheme XML ...
XML Tipuri de date predefinite utilizate n schemele XML .
XML Construii o schem XML ..
XML Software XML Schema. Aplicaii
XML Tem
139
141
143
149
158
Conversaia 9. Complemente XML ................................................. 159
XML DOM, interfa pentru manipularea documentelor (X)HTML
i XML .
XML Script-uri XML .
XML Creai prima pagin Web interactiv ..
XML Inserai o imagine ntr-un document XML ..
XML Creai legturi i interogri n documentele XML .
XML Tem
159
160
161
170
175
177
Bibliografie ....................................................................................... 179
Conversaia 1
De la (X)HTML la XML
n aceast conversaie:
XML eXtensible Markup Language
XML XML, un metalimbaj utilizat pentru descrierea datelor
XML Regulile de aur ale limbajului XML
XML Tem
eXtensible Markup Language
Ce este XML?
Limbajul XML, acronimul de la eXtensible Markup Language, a fost
definit de consoriul W3C n anul 1996.
Remarc. Definiia complet a limbajului XML dat de W3C o gsii la adresa:
http://www.w3.org/TR/REC-xml.
Dac nu suntei documentat n XML, v cer permisiunea s prezint n cteva
cuvinte XML-ul:
XML, ca i HTML se bazeaz pe tag-uri.
XML poate fi folosit de autorii de pagini Web ale cror nevoi depesc
limitele HTML-ului.
XML a fost creat pentru descrierea structurilor de date.
XML
4
Tag-urile XML nu sunt predefinite; altfel spus, XML permite crearea
tag-urilor personalizate, ceea ce este nemaipomenit.
Pentru descrierea structurilor de date, documentele XML pot utiliza un
DTD (Document Type Definition).
Un document care conine un DTD este autodescriptiv.
Remarc. Pentru a nelege XML-ul, trebuie s v aducei aminte ce este (X)HTML-ul!
(vezi Liviu Dumitracu, (X)HTML, Editura Universitii din Ploieti, 2003).
XML va nlocui HTML-ul?
La ora actual, rspunsul la aceast ntrebare este NU. HTML rmne
primul limbaj utilizat pentru a indica browser-elor cum s afieze
informaiile pe Web.
XML a fost conceput pentru a stabili i a menine o interoperabilitate cu
HTML.
Remarc. Cele 10 obiective oficiale ale limbajului XML au fost publicate pe site-ul
consoriului W3C, la adresa http://www.w3.org/TR/REC-xml.
Aplicaii XML
Pe bun dreptate, v putei ntreba ce facei cu XML n practic? Teoria
fr prax.
Prezentm n continuare, o scurt list de aplicaii XML:
structurarea datelor n baze de date;
structurarea documentelor;
grafic vectorial (VML, sau Vector Markup Language);
prezentri multimedia (SMIL Synchronized Multimedia Integration
Language; HTML + TIME, sau HTML Timed Interactive Multimedia
Extensions);
comunicarea deschis ntre aplicaii, via Web cu ajutorul mesajelor
bazate pe XML (SOAP, sau Simple Object Access Protocol);
5
schimbul de informaii financiare (OFX, sau Open Financial
Exchange);
tranzacii comerciale pe Internet (XFDL, sau eXtensible Forms
Description Language);
resurse umane (HRMML, sau Human Resource Management Markup
Language);
formatarea formulelor matematice pe Web (MathML, sau
Mathematical Markup Language);
descrierea structurilor moleculare (CML, sau Chemical Markup
Language);
scrierea partiturilor muzicale (MusicML, sau Music Markup
Language);
buletine meteo (OMF, sau Weather Observation Markup Format);
tranzacii imobiliare (RETS, sau Real Estate Transaction Standard).
XML, un metalimbaj utilizat pentru
descrierea datelor
XML
Dac sunte i documen at n XML, ai ntlnit cu siguran aceast fraz:
XML este un metalimbaj utilizat pentru descrierea datelor.
t
Aceast afirmaie nu ne ofer nici un detaliu privind metalimbajul n
sine. n realitate, noiunea de metalimbaj v este bine cunoscut din
primii ani de coal.
Remarc. Un metalimbaj este un limbaj utilizat pentru descrierea unui alt limbaj.
Structura unei fraze din limbajul natural este un exemplu fundamental
de metalimbaj.
Iat cum descompunem n elemente de metalimbaj fraza:
Ultimul tren a plecat.
6
Fraza poate fi descompus dup cum urmeaz:
adjectiv (ultimul);
substantiv (tren);
verb (a plecat);
sfrit de fraz (.).
Aceast structur poate fi utilizat ca model n metalimbajul folosit
pentru descrierea unei familii infinite de fraze de forma:
<adjectiv><substantiv><verb><sfrit>
n care, elementele de metalimbaj sunt ncadrate ntre < i >.
Pentru a delimita componentele unei fraze putem adopta sintaxa
utilizat n (X)HTML, dup cum urmeaz:
<adjectiv> Ultimul </adjectiv>
<substantiv> tren </substantiv>
<verb> a plecat </verb>
<sfrit> . </sfrit>
Putem scrie structura fundamental, ca model pentru acest tip de fraze.
<adjectiv> </adjectiv>
<substantiv> </substantiv>
<verb> </verb>
<sfrit> </sfrit>
Regulile de aur ale limbajului XML
XML
nainte de a ncepe crearea unui document XML este important s
cunoatei cteva din regulile XML pe care este bine s le respectai.
Regulile pe care trebuie s le respecte documentele XML faciliteaz att
crearea instrumentelor de analiz a documentelor ct i lucrul efectiv cu
XML. Regulile sunt simple, multe dintre ele fiindu-v cunoscute de la
HTML.
7
Regulile XML pot fi clasificate n dou categorii:
reguli de sintax XML;
reguli de validitate a documentelor XML.
Regulile de sintax XML
Cea mai mare parte a regulilor de sintax XML sunt mult mai stricte
dect cele aplicate unui document HTML.
Din acest motiv vom proceda la o prezentare comparativ a regulilor
care se aplic unui document HTML, XHTML respectiv XML.
Iat cum definim paragraful: nva s priveti dincolo de aparen e! n
toate cele trei limbaje (figura 1.1).
,
Conversaia 3
Inserai caractere speciale cu XML
n aceast conversaie:
XML Caracterele speciale pot p ovoca erori de prelucrare
XML Insera i sec iuni CDATA
XML Utiliza i entiti predefinite
XML Defini i i utiliza i o referin de entitate general intern
XML Tem
Caracterele speciale pot provoca erori de
prelucrare
XML
Dup cum ai putut constata, nu putei insera direct caracterele speciale:
<, >, &, n datele din coninutul unui element. O soluie de a ocoli
aceast restricie este de a utiliza o referin de caracter (exemplu,
© pentru caracterul ) sau o referin de entitate general
predefinit (exemplu < pentru caracterul <). Totodat, dac dorii s
inserai mai multe caractere speciale (<, >, & etc.), utilizarea
referinelor este complicat i creeaz dificulti la citirea datelor. n
acest caz este mult mai simplu de a plasa textul care conine caractere
speciale n interiorul unei seciuni CDATA.
50
XML
Inserai seciuni CDATA
O seciune CDATA permite afiarea (fr erori!) datelor care conin
caractere speciale.
Iat cum afim n XML mesajul: Dac a<>0 atunci x=b/a.
1. Creai cu XML Spy un document XML (ecuatie.xml) cu structura
minimal: <mesaj>Dac a<>0 atunci x=b/a. </mesaj> (figura
3.1).
Remarc. Documentul ecuatie.xml nu va putea fi afiat din cauza caracterelor
speciale < i > inserate.
2. Afiai documentul XML n Microsoft Internet Explorer
(versiunea 5 sau o versiune superioar), figura 3.2.
Figura 3.1
Figura 3.2
51
Remarc. Browser-ul afieaz un mesaj de eroare provocat de existena
caracterelor < i >.
3. Plasai mesajul ntr-o seciune CDATA (figura 3.3).
Remarci:
O seciune CDATA ncepe cu <![CDATA[ i se termin cu ]]>.
Toate caracterele unei seciuni CDATA sunt tratate ca o parte literal
a datelor de tip caracter ale elementului i nu ca un tag XML.
Cuvntul cheie CDATA se scrie cu majuscule.
Seciunile CDATA nu pot fi imbricate.
4. Afiai documentul XML n Microsoft Internet Explorer
(versiunea 5 sau superioar), figura 3.4.
Remarc. Navigatorul afieaz textul plasat n seciunea CDATA fr eroare.
Figura 3.4
Figura 3.3
52
XML
Utilizai entiti predefinite
ntr-un document XML, putei utiliza o referin la o entitate predefinit
pentru a insera unul din cele cinci caractere listate n figura 3.5.
Referina entitate Caracter inserat
predefinit
Referina de caracter
echivalent
& & &
< < <
> > >
' '
" "
Figura 3.5
Remarci:
Inserarea uneia din aceste referine de entiti predefinite este
echivalent cu inserarea referinei de caracter echivalent.
Referinele de entiti predefinite sunt mult mai uor de reinut i de
neles atunci cnd le vedei ntr-un document.
Iat cum crem un document XML (cu structur minimal) care conine
codul <promo>Vizitai magazinele C&A!</promo>, utiliznd entitatea
predefinit & pentru a insera caracterul special &.
1. nlocuii caracterul & cu referina la entitatea predefinit &
(figura 3.6).
Figura 3.6
53
Remarci:
Referina la entitatea predefinit & este identic celei utilizate n
(X)HTML ncepe cu &, se continu cu amp i se termin cu punct i
virgul.
(X)HTML utilizeaz entiti de caractere pentru afiarea caracterelor
speciale, n timp ce XML nu le utilizeaz dect pentru specificarea
datelor.
2. Afiai documentul XML n Microsoft Internet Explorer
(versiunea 5 sau o versiune superioar), figura 3.7.
Remarc. n navigator, caracterul & apare explicit.
Aplicaie
Figura 3.7
Creai documentul XML (cu structur minimal) care conine codul
<copyright>2003 LUMINA BLANDA</copyright>.
Indicaie. Utilizai referine de caractere © sau &#?; nlocuind semnul
ntrebrii (?) cu valoarea hexazecimal a lui 169.
Definii i utilizai o referin de entitate
general intern
Specificaiile XML utilizeaz termenul entitate, n sens general pentru a
se referi la unul din tipurile de stocare, asociate documentelor XML:
ntreg documentul XML;
o seciune DTD extern;
XML
54
un fiier extern, definit ca o entitate extern ntr-un DTD i
referit cu ajutorul unei referine de entitate;
un ir de caractere ntre ghilimele, definit ca o entitate intern
ntr-un DTD i referit cu ajutorul unei referine de entitate.
n particular, mecanismul entitilor XML este util pentru stocarea
blocurilor de text XML foarte des utilizate, ceea ce permite inserarea
rapid a textului, acolo unde dorii.
Referinele entitilor generale interne se definesc n DTD prin tag-ul
<!ENTITY>.
n cele ce urmeaz vom utiliza termenul entitate ntr-un sens mai
restrns i anume referirea la un ir de caractere plasat ntre ghilimele,
definit ca entitate ntr-un DTD al documentului i referit cu ajutorul
referinelor de entiti.
Iat cum adugm, la finele documentului email.xml, datele de tip text,
frecvent utilizate n site-ul nostru: Copyright 2003 LUMINA BLANDA.
Vom defini i utiliza o referin de entitate general intern, cp.
Metoda 1 Editorul de exte Notepad t
1. Introducei n DTD-ul documentului (bine format), imediat sub
linia de comentariu, entitatea intern cp (figura 3.8).
Figura 3.8
55
Remarci:
Referinele entitilor generale interne se folosesc pentru texte
frecvent utilizate: adres, nume de produs, titlu, copyright etc.
O entitate intern este o entitate coninut ntr-un ir de caractere
plasat ntre ghilimele. O entitate extern este o entitate coninut
ntr-un fiier separat.
Entitile interne sunt definite n DTD cu tag-ul special <!ENTITY>
care este sintaxa:
<!ENTITY nume_entitate valoare_entitate>
unde,
nume_entitate (cp n exemplul nostru) trebuie s respecte regulile
de aur XML;
valoare_entitate este valoarea entitii; valoarea pe care
dumneavoastr o atribuii unei entiti generale interne este un ir
de caractere delimitat prin ghilimele, numit ir ntre ghilimele sau
expresie literal (Copyright 2003 LUMINA BLANDA, n aplicaia
noastr).
Putei afecta unei entiti generale interne ntreaga valoare a unei
expresii generale interne, cu respectarea urmtoarelor reguli:
irul poate fi delimitat cu ajutorul unor ghilimele simple () sau
duble ();
irul nu poate conine ghilimele identice cu cele ale delimitatorilor;
irul nu poate conine caracterul (&), excepie fcnd nceputul
unei referine de entitate caracter sau entitate general;
irul nu poate conine caracterul (%);
coninutul irului trebuie evident s fie plasat legal, n locul n care
dorii s inserai entitatea.
2. Introducei referina de entitate &cp; (figura 3.9), la finele
documentului.
Remarci:
Figura 3.9
Declaraia unei entiti trebuie s precead referina la aceast
entitate.
Referina de entitate &cp; conine numele entitii (cp) plasat ntre &
i ;. Numele entitii (cp) reprezint numele atribuit entitii n
declaraia <!DOCTYPE>.
56
Entitatea cp se mai numete entitate general intern analizabil
(corespunde tipului XML bine format).
Utilizarea unei entiti generale intern prezint avantajul urmtor:
putei modifica valoarea n tot documentul XML.
3. Vizualizai documentul (email.xml) ntr-un browser (figura
3.10).
Remarci:
Figura 3.10
Navigatorul nlocuiete codul cp prin valoarea entitii (figura 3.10).
ntruct documentul email.xml nu conine un link la o foaie de stiluri,
navigatorul (Internet Explorer) se mulumete s afieze codul surs
al documentului care cuprinde: tag-urile (comentariile) i datele de tip
caracter. Microsoft Internet Explorer atribuie un cod color diferitelor
componente ale documentului pentru a facilita identificarea acestora
i afieaz elementul documentului (<email>) sub forma unei
arborescene retractabile/expandabile pentru a indica structura logic
a documentului i a v permite vizualizarea diferitelor nivele de
detaliu.
Executai clic pe simbolul minus (-) din stnga elementului email
(figura 3.11).
57
Elementul documentului se va contracta, ca n figura 3.12.
Figura 3.11
Figura 3.12
Metoda 2 Editorul XML Spy
Iat cum crem acelai document email.xml cu XML Spy.
n figura 3.13 se prezint documentul email.xml n care putei identifica
numele elementelor i atributele lor.
58
Aplicaie
Comentai urmtoarele exemple:
<titlu>< fatalitate><titlu>
<produs compania=C&A>bluz var<produs>
<!ENTITY titlu c1 " Kit " B>
Remarc. n cele trei exemple, referinele de entiti predefinite sunt utilizate pentru a
insera caractere, care nu pot fi inserate sub forma lor literal.
Figura 3.13
59
XML Tem
Testai-v cunotinele
1. Care este semnificaia urmtoarelor referine de entitate:
&qt;
&
<
2. n ce situaii definii i utilizai o referin de entitate general intern
(analizabil)?
3. n ce situaii utilizai o seciune CDATA?
Vizitai site-urile
www.xml.com
www.w3.org/Markup/
http://www.ibiblio.org/pub/sun-info/standards/xml/why/xmlapps.htm
t
t
Conversaia 4
Creai documente XML valide
n aceast conversaie:
XML S nu ui m documentele XML bine formate
XML Defini i structura unui document XML valid. Aplica ii
XML Aduga i a ribute unui element XML. Aplica ii
XML Tem
S nu uitm documentele XML bine
formate
Fiecare document XML trebuie s fie bine format. Altfel spus, el trebuie
s satisfac un minimum de exigen i de conformitate (figura 4.1).
XML
Figura 4.1
62
Remarc. Dac suprimai elementul <mama> sau dac adugai nc trei
elemente <copil>, browser-ul, oricare ar fi el, nu va afia nici-un mesaj de
eroare! Dac un document nu este bine format, el nu poate fi considerat ca
un document XML.
Definii structura unui document XML
valid. Aplicaii
Un document XML bine format poate fi de asemenea valid. Un document
XML valid este un document bine format, care satisface urmtoarele
dou criterii:
Prologul documentului cuprinde o declara ie de tip de document
care conine un DTD ce definete structura documentului.
Restul documentului se conformeaz structurii definite n DTD.
Remarci:
Norma XML definete DTD-ul ca o gramatic pentru o clas de
documente.
Un DTD furnizeaz procesorului XML (Microsoft Internet Explorer) un
prototip standard pentru verificarea validitii documentului.
Adugai un DTD
O declaraie de tip de document este un bloc de tag-uri XML, care se
plaseaz n prologul unui document XML valid.
O declaraie de tip de document are urmtoarea sintax:
<!DOCTYPE nume_element DTD>
unde,
nume_element este numele elementului rdcin;
DTD este definiia tipului de document (Document Type
Definition), care conine declaraii ce definesc elementele,
atributele i alte caracteristici ale documentului.
XML
63
Remarci:
Ca toate cuvintele cheie XML, DOCTYPE trebuie s fie scris cu
majuscule.
DTD-ul trebuie s fie nlocuit prin coninutul su real.
DTD-ul se compune dintr-o parantez dreapt deschis ([), urmat de o
serie de declaraii de tag-uri, urmate de o parantez dreapt nchis (]).
Declaraiile de tag-uri descriu structura logic a documentului; altfel
spus, ele definesc elementele documentului, atributele i alte
caracteristici.
n figura 4.2 se prezint un document XML valid complet, care conine
un DTD cu o singur declaraie (de tip element) fr restricii de
coninut (ANY).
Un DTD (Document Type Definition) poate conine urmtoarele tipuri de
declaraii:
declararea tipurilor de elemente, utiliznd cuvntul cheie
ELEMENT;
declararea listei de atribute;
declararea entitilor (interne, externe); entiti analizabile,
entiti care nu sunt analizabile utiliznd cuvntul cheie
ENTITY;
declararea notaiilor, utiliznd cuvntul cheie NOTATION;
instruciuni de prelucrare;
comentarii;
referine de entiti de parametrii.
Figura 4.2
64
Remarc. Pentru mai multe informaii privind tipurile de declaraii, consultai
lucrrile:
Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web (XML,
DOM, ASP), Editura Economic, 2002;
Michael J. Young, XML, Etape par tape, Microsoft Press, Paris, 2001.
Declarai tipul de element
ntr-un document XML, trebuie s declarai explicit tipul fiecrui element
utilizat n document.
O declaraie de tip de element (DTD) precizeaz numele tipului de
element i coninutul autorizat al elementului (specificnd totodat i
ordinea n care elementele pot aprea). Declaraiile DTD descriu
structura logic a documentului. Altfel spus, declaraiile DTD indic:
tipul de elemente pe care documentul le conine;
ordinea elementelor;
specificaiile de coninut sau modelul de coninut ale
elementelor.
Considerm c este mai uor de neles structura unui DTD cu ajutorul
unui exemplu.
Iat cum crem un DTD care include numele, adresa i informaiile de
contact ale unui client (figura 4.3).
65
Remarci:
Figura 4.3
Scopul unui DTD este de a defini elementele care pot fi utilizate ntr-un
document XML i de a specifica relaiile ntre ele.
Pentru a construi un DTD trebuie s cunoatem lista elementelor pe care
dorim s le asamblm.
Schema din figura 4.3 se numete schema modelului de date i definete
coninutul elementului client. Schema a fost realizat cu aplicaia XML Spy
(vezi www.xmlspy.com).
Elementele: nume, adresa, telefoane sunt obligatorii, iar elementul online este
opional. Un client poate fi valid numai cu o adres i un telefon.
telefon
telefoane
telefon
telefon
Simbolul se traduce prin (figura 4.4):
Figura 4.4
1. Definii un document de tip client (figura 4.5).
Figura 4.5
66
2. Definii elementul client specificnd structura sa.
2.1 Utilizai sintaxa:
<! ELEMENT nume_element model_coninut>
unde,
nume_element este numele elementului rdcin;
model_coninut sau specificatii_continut precizeaz
coninutul elementului.
2.2 nlocuii nume_element cu client i model_coninut cu:
nume, adresa, telefoane, online?, n ordinea indicat (figura
4.6).
Remarci:
<!ELEMENT client> definete elementul client, care conine patru elemente:
nume, adresa, telefoane, online.
Elementele cu unul sau mai multe elemente fiu sunt definite cu numele
elementelor fiu plasate ntre paranteze rotunde. Faptul c ele sunt separate
prin virgul impune ca ele s se gseasc n ordinea indicat.
Putei modifica model_coninut utiliznd: semnul ntrebrii (?), semnul plus
(+) i asteriscul (*), a cror semnificaie este precizat n tabelul 1.
Caracter Semnificaie
? Nici una sau o apariie a elementului precedent (este opional).
+ Una sau mai multe apariii a elementului precedent.
* Nici una sau mai multe apariii a elementului precedent.
Tabelul 1
Figura 4.6
Elementul online? (online urmat de un semn de ntrebare) poate s nu apar
sau s apar o singur dat n coninutul unei instane (este opional).
3. Specificai coninutul elementului nume.
3.1 Utilizai sintaxa:
67
<! ELEMENT nume_fiu model_coninut>
3.2 nlocuii nume_fiu cu nume i model_coninut cu #PCDATA
(figura 4.7).
Remarci:
PCDATA este prescurtarea de la Parsed Character Data (date caracter
analizabile).
Elementul nume poate conine numai text, care va fi analizat de ctre
procesorul XML.
Pentru a preciza coninutul unui element vid folosii cuvntul cheie EMPTY
(figura 4.8).
Pentru elementele cu un coninut oarecare folosii cuvntul cheie ANY (figura
4.9).
4. Definii elementul adresa (vezi figura 4.3) specificnd structura
sa (figura 4.10).
Figura 4.8
Figura 4.9
Figura 4.10
Figura 4.7
68
5. Specificai coninutul (date de tip text) elementelor: strada,
numr, ora, cod, ara, figura 4.11.
6. Definii elementul telefoane specificnd structura sa (figura
4.12).
Remarci:
Figura 4.11
Figura 4.12
Elementul telefoane poate conine numai elemente telefon.
Semnul + semnific faptul c elementul telefoane trebuie s conin cel
puin un element telefon i c acest element poate fi repetat ori de cte ori
este necesar. Elementul telefon va conine text ca i elementele strada,
numr, ora, cod, ara. Numerele de telefon pot fi deci introduse direct ntre
tag-urile de nchidere i de nceput.
Absena unuia din operatorii: *, +, ? ce apar n model_coninut al unui
element printe semnific faptul c elementul declarat este obligatoriu i nu
se poate repeta (el trebuie s apar o dat i numai o dat). Altfel, se va
genera o eroare n faza de validare.
7. Definii elementul online cu cele dou elemente fiu email i
url; specificai coninutul (date de tip text) celor dou elemente
fiu, iar apoi nchidei tag-ul <!DOCTYPE> (figura 4.13).
69
Remarc. n figura 4.14 este prezentat documentul XML n care este inclus DTD-ul
(intern).
Figura 4.13
Figura 4.14
70
Remarci:
Definiia XML a modelului de date client (schema complet) este ilustrat n
figura 4.15 (client.dtd) i poate fi referit i utilizat n documentele XML,
precum luminablanda.xml din figura 4.16.
Figura 4.16
Figura 4.15
71
Deoarece DTD-ul are o structur ce poate fi folosit la generarea mai multor
documente, se prefer definirea acestuia ca o entitate separat
(luminablanda.xml). Spunem c avem de-a face cu un DTD extern privat.
DTD-urile externe private sunt identificate n cadrul tag-ului <DOCTYPE>
prin cuvntul cheie SYSTEM urmat de un URL-relativ (client.dtd) sau absolut
(http://...): <!DOCTYPE client SYSTEM client.dtd>.
8. Afiai documentul XML n Microsoft Internet Explorer (versiunea
5 sau o versiune superioar), figura 4.17.
Remarc. Prezentm trei variante pentru elementul client cu scopul de a pune n
eviden rezultatul pentru fiecare caz n parte.
<!ELEMENT client (nume, adresa, telefoane, online?>
Elementele sunt separate prin virgule. Elementele nume, adresa, telefoane
sunt obligatorii, online este facultativ.
<!ELEMENT client (nume|adresa|telefoane)+, online?)>
Unul din elementele: nume, adresa, telefoane poate fi prezent. Semnul +
precizeaz c aceast opiune poate fi repetat. Elementul online nu se
schimb.
<!ELEMENT client (nume?, adresa?, telefoane?, online?)>
Fiecare element poate s apar o dat, n mod op ional. Fiind separate prin
virgule, elementele trebuie s apar n ordinea indicat.
Figura 4.17
72
Aplicaii
Se consider DTD-ul descris n figura 4.18.
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin invalid (figura 4.19).
2. Element rdcin valid (figura 4.20).
Figura 4.18
Figura 4.19
Figura 4.20
Se consider DTD-ul descris n figura 4.21.
73
Figura 4.21
Figura 4.22
Figura 4.23
Figura 4.24
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.22).
2. Element rdcin invalid (figura 4.23).
3. Element rdcin invalid (figura 4.24).
4. Element rdcin valid (figura 4.25).
74
Se consider DTD-ul descris n figura 4.26.
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.27).
2. Element rdcin invalid (figura 4.28).
Figura 4.25
Figura 4.26
Figura 4.27
Figura 4.28
Se consider DTD-ul descris n figura 4.29.
75
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.30).
2. Element rdcin valid (figura 4.31).
3. Element rdcin valid (figura 4.32).
Figura 4.29
Figura 4.30
Figura 4.31
Figura 4.32
76
Adugai atribute unui element XML.
Aplicaii
Toate elementele descrise ntr-un DTD pot avea un numr oarecare de
atribute. Atributele nu sunt obligatorii. Ele permit adugarea de
informaii suplimentare n mod simplu.
Remarc. Iat ceea ce tim pn n acest moment despre atribute:
atributele au un nume;
atributele au o valoare;
valoarea trebuie s fie plasat ntre ghilimele.
n tabelul 2 se prezint diferite tipuri de atribute cu o scurt descriere.
Tipuri de atribute Descriere
CDATA Poate conine text (ir de caractere).
ENTITY Numele unei entiti externe.
ENTITIES O list de entiti externe (separate prin spaii).
Enumerare O list de cuvinte separate prin |.
ID Identificator unic.
IDREF O referin la un identificator unic.
IDREFS O list de referine la identificatori unici (separai
prin spaii).
NMTOKEN Un cuvnt.
NMTOKENS O list de NMTOKEN separate prin spaii.
NOTATION Permite declararea unei imagini ntr-un DTD i apoi
utilizarea acesteia ntr-un document.
XML
Tabelul 2
Lista de atribute a unui element XML ncepe cu ATTLIST, dup cum
urmeaz:
<! ATTLIST nume_element nume_atribut tip_atribut
valoare_implicit>
77
unde,
nume_element - numele elementului cruia i se asociaz
nume_atribut.
nume_atribut - numele atributului urmat de modelul
reprezentnd valorile posibile.
tip_atribut - vezi tabelul 2.
valoare_implicit - unul din cuvintele rezervate: #REQUIRED
(atributul trebuie s fie ntotdeauna
prezent); #IMPLIED (prezena atributului
este facultativ); #FIXED (atributul va
utiliza ntotdeauna valoarea implicit care
a fost declarat).
Iat cum procedm pentru a aduga atributul tip=telefon elementului
<mobil>. Vom utiliza modelul de date (modificat) client (figura 4.33)
realizat cu aplicaia XML Spy.
Figura 4.33
78
Remarc. Definiia XML a modelului de date (modificat) client este ilustrat n figura
4.34 (client1.dtd).
1. Introducei dup ultimul element definit (<!ELEMENT mobil
(#PCDATA)>) linia <!ATTLIST nume_element
nume_atribut tip_atribut valoare_implicit>, nlocuind
nume_element cu mobil, nume_atribut cu tip, tip_atribut cu
CDATA i valoare_implicit cu #IMPLIED (figura 4.35).
Figura 4.34
Figura 4.35
2. Utilizai noua schem complet (client1.dtd) pentru generarea
documentelor XML, precum luminablanda1.xml din figura
4.36.
79
Figura 4.36
3. Introducei n elementul <mobil> din documentul
luminablanda1.xml atributul tip=telefon (figura 4.37).
Figura 4.37
4. Afiai documentul XML n Microsoft Internet Explorer
(versiunea 5 sau o versiune superioar), figura 4.38.
80
Aplicaii
Adugai un atribut elementului <client> care s evidenieze tipul clientului:
persoan fizic sau persoan juridic.
Indicaie. Introducei n schema anterioar urmtoarea linie de cod (figura
4.39):
<!ATTLIST client tip=(fizica|juridica) #REQUIRED>
Actualizai documentul XML care utilizeaz noua schem (figura 4.40):
<client tip=fizic>
Adugai elementului <client> un atribut de tip identificator unic.
Indicaie. Introducei urmtoarea linie de cod (figura 4.41).
Figura 4.39
Figura 4.40
Figura 4.38
81
...
<!ATTLIST client tip (fizica|juridica) #REQUIRED id ID #IMPLIED>
...
Modificai elementul <telefon> astfel nct elementele <acasa> i
<mobil> s fie opionale.
Indicaie. n documentul client1.dtd schimbai linia de cod a elementului
<telefon> (figura 4.42).
...
<!ELEMENT telefon (acasa?, serviciu, mobil?)>
...
Construii DTD-ul corespunztor unui raport (tehnic, de cercetare etc).
Elementele raportului (structura ierarhic) sunt: en-tte, introducere, cuprins,
concluzii, bibliografie [2].
Iat care este procedura pe care v invitm s-o aplicai.
1. Construii DTD-ul corespunztor en-tte-ului (figura 4.43).
Figura 4.41
Figura 4.42
Figura 4.43
Figura 4.44
2. Construii DTD-ul corespunztor introducerii i concluziilor (figura
4.44).
82
3. Construii DTD-ul corespunztor cuprinsului (corpul documentului),
figura 4.45.
Figura 4.45
Figura 4.46
4. Construii DTD-ul corespunztor bibliografiei (figura 4.46).
83
5. Scriei DTD-ul n forma sa final (figura 4.47).
Figura 4.47
84
Creai documentul XML corespunztor raportului (vezi structura DTD-ului din
aplicaia precedent), figura 4.48.
Figura 4.48
XML Tem
Testai-v cunotinele
1. Care este structura unui DTD (Document Type Definition)?
2. Care este semnificaia urmtoarelor caractere: ?, +, *, |?
3. Precizai rolul cuvintelor cheie: PCDATA, EMPTY, ANY n cadrul
tag-ului <! ELEMENT>.
85
4. Care este rolul atributelor?
5. Ce tipuri de atribute cunoatei?
6. Care sunt valorile implicite ale atributelor?
Vizitai site-urile
http://www.xmlmag.com
http://xml.apache.org/
http://www.ddj.com/topics/xml/
t
Conversaia 5
Afiai documentele XML cu ajutorul foilor
de stiluri n cascad
n aceast conversaie:
XML Utiliza i foile de s iluri CSS
XML Crea i fiierul de stiluri (foaia de stiluri) CSS. Aplica ii
XML Lega i o foaie de stiluri CSS la un document XML
XML Insera i elemente HTML n documentele XML
XML Tem
Utilizai foile de stiluri CSS
O foaie de stiluri n cascad (Cascading Style Sheet CSS) este un fiier
care conine instruciuni de formatare a elementelor unui document
XML.
XML
Cum dumneavoastr inventai (creai) propriile elemente n XML, evident
un navigator nu poate tii cum s le afieze (tag-urile XML nu sunt
predefinite!).
Crearea unei foi de stiluri n cascad i legarea ei la un document XML
este o metod de a indica navigatorului cum trebuie s afieze
elementele unui document. Un document XML cu o foaie de stiluri
ataat, poate fi deschis direct n browser (Microsoft Internet Explorer 5
88
sau o versiune superioar). Nu este necesar s utilizm o pagin HTML
pentru a accesa datele i a le afia (contrar altor metode de afiare a
unui document XML pe care le vom prezenta n conversaiile urmtoare).
Plasarea instruciunilor de afiare ntr-o foaie de stiluri separat a
documentului XML mrete gradul de utilizare a acesteia iar actualizarea
este mult mai uoar!
Utilizarea unei foi de stiluri n cascad este probabil metoda cea mai
simpl de afiare a unui document XML.
Pentru a afia un document XML cu o foaie de stiluri CSS trebuie s
parcurgei urmtoarele dou etape principale:
Etapa 1 Crearea fiierului de stiluri CSS;
Etapa 2 Legarea fiierului de stiluri CSS (foii de stiluri) la un
document XML.
Creai fiierul de stiluri (foaia de stiluri) CSS
XML
O foaie de stiluri n cascad este un fiier text cu extensia .css.
Fiierul conine un set de reguli care indic navigatorului modul de
formatare i afiare a elementelor ntr-un document XML specific. Pentru
a crea un fiier de stiluri, nu ezitai s apelai la btrnul Notepad!
Iat cum crem fiierul de stiluri stud.css (figura 5.1), care conine trei
seturi de reguli pentru afiarea elementelor: student, nume, facultatea
ce aparin documentului XML matricola.xml (figura 5.2).
89
Figura 5.1
Figura 5.2
90
Remarci:
Fiierul de stiluri stud.css din figura 5.1 conine un comentariu i trei
seturi de reguli.
ntr-o foaie de stiluri comentariul debuteaz cu caracterele slash i
asterisc (/*) i se termin cu caracterele asterisc i slash (figura 5.3).
Putei de asemenea folosi comentarii n situaia n care dorii s
dezactivai temporar o regul sau o parte a regulii (figura 5.4).
Fiierul de stiluri stud.css conine trei reguli: una pentru elementele
student, una pentru elementele nume i n sfrit una pentru
elementele facultatea.
Fiecare din cele trei reguli conine:
selectorul, care este numele tipului de element cruia i se aplic
modul de formatare i afiare (figura 5.5);
Figura 5.3
Figura 5.4
blocul de declaraie, delimitat prin dou acolade ({}), care conine
una sau mai multe declaraii separate prin punct i virgul (figura
5.6);
Figura 5.5
Figura 5.6
91
declaraia, care se compune dintr-o proprietate particular, urmat
de caracterul dou puncte (:), urmat de o valoare (figura 5.7).
Declaraia display-block insereaz o linie de spaii nainte i dup
textul elementului.
Declaraia margin-top: 13 pt adaug o margine de 13 puncte
deasupra textului elementului.
Declaraia font-size: 10 pt definete mrimea (10 puncte) caracterelor
pentru afiarea textului elementelor.
Declaraia font-style: italic definete stilul italic pentru afiarea textului
elementelor.
Declaraia font-weight: bold definete stilul bold pentru afiarea
textului elementelor.
Aplicaii
Afiai cu caractere normale (nu italice!), cu font 14 (nu 10!) elementul
<nume> Adam Ion </nume>, care aparin documentului matricola.xml (figura
5.8). Utilizai atributul style.
Iat care este procedura pe care v invitm s-o aplicai.
n figura 5.8 este prezentat modul de utilizare al atributului style; se asociaz
atributul (style) elementului nume.
Figura 5.7
Figura 5.8
{font-style:italic}
92
Remarc. n cazul unui document XML valid, va trebui s declarai atributul style n DTD
nainte de a-l putea utiliza.
<!ATTLIST nume style CDATA # IMPLIED>
Aplicai urmtoarelor elemente: nuvela, titlu, autor, editura, an una din
regulile prezentate mai jos.
{display: block;
margin-right: 14 pt}
{display: block;
margin-bottom: 12 pt}
{display: block;
margin-left: 12 pt}
Iat care este procedura pe care v invitm s-o aplicai (figura 5.9).
Remarc. Putei de asemenea include un tip de element n mai mult de o regul, n
aceeai foaie de stiluri (figura 5.10).
Figura 5.9
Figura 5.10
Pentru elementul student, definii proprietatea display, folosind unul din
urmtoarele cuvinte cheie CSS: block, inline (valoare implicit), none
(navigatorul nu afieaz elementul).
Afiai elementul facultatea cu una din proprietile CSS: font-family (figura
5.11); font-size; font-style; font-weight; font-variant.
93
Remarc. Pentru mai multe informaii consultai lucrarea: Liviu Dumitracu,
(X)HTML, Editura Universitii din Ploieti, 2003.
Afiai textul elementului nume n culoarea roie. Folosii proprietatea CSS
color (figura 5.12).
Afiai textul elementului nume cu culoarea albastr pe un fond galben.
Folosii proprietatea CSS background color (figura 5.13).
Plasai imaginea upg.jpg n centrul elementului facultatea. Folosii
proprietile background repeat i background position (figura 5.14).
Figura 5.11
Figura 5.12
Figura 5.13
Figura 5.14
94
Folosii proprietatea text-align cu valoarea center pentru a centra elementul
nume (figura 5.15).
Figura 5.15
Remarc. Pentru mai multe informaii privind afiarea documentelor XML cu
ajutorul foilor de stiluri n cascad, consultai lucrrile:
Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web, Editura
Economic, 2002.
Michael J. Young, XML, Etape par etape, Microsoft Press, Paris, 2001.
Legai o foaie de stiluri CSS la un document
XML
XML
Pentru a lega o foaie de stiluri n cascad (CSS) la un document XML,
trebuie s inserai n prologul documentului, instruciunea de prelucrare
xml-stylesheet. Sintaxa general a acestei instruciuni este urmtoarea:
<?xml-stylesheet type=text/css href=calefiier CSS?>,
unde,
calefiier CSS este un URL care indic amplasarea fiierului foii de stiluri.
Iat cum legm fiierul de stiluri CSS stud.css la documentul XML
matricola.xml.
1. Inserai n prologul documentului XML, instruciunea de
prelucrare xml-stylesheet (figura 5.16).
95
2. Afiai documentul XML (n care ai inserat instruciunea de
prelucrare xml-stylesheet) n Microsoft Internet Explorer
(versiunea 5 sau superioar), figura 5.17.
Remarci:
Atunci cnd o foaie de stiluri CSS este legat direct la un document XML,
putei deschide direct acest document n Internet Explorer (versiunea 5 sau
superioar). Tastai URL-ul (figura 5.18) i acionai tasta Enter.
Figura 5.16
Figura 5.17
Figura 5.18
ntr-un document XML putei include mai multe foi de stiluri, insernd o
instruciune de prelucrare xml-stylesheet pentru fiecare dintre ele (figura
5.19).
96
Figura 5.19
Inserai elemente HTML n documentele
XML
XML
S presupunem c dorii s inserai ntr-un document XML elementul:
<IMG src=sigla.jpg/>.
Este un element HTML, vei spune!
Este adevrat, ns navigatorul nu are de unde s tie dac este vorba
de un element HTML i nu de un element XML. Pentru a face s
funcioneze acest mecanism de discriminare, trebuie ca toate numele de
elemente HTML (sunt destule!) s fie rezervate exclusiv pentru inserarea
elementelor HTML. O astfel de regul, ar fi mpotriva spiritului XML, care
v permite utilizarea tuturor numelor pe care le gsii corespunztoare
pentru elementele legale.
Din fericire pentru dumneavoastr, putei utiliza o convenie XML numit
spaiu de nume care v permite s distingei numele aflate n conflict.
Dou elemente distincte pot avea acelai nume, cu condiia ca ele s
aparin unor spaii de nume distincte (vezi lucrarea Michael J. Young,
XML tape par tape, Microsoft Press, Paris, 2001 pag. 217 218).
97
Numele unui element care se regsete ntr-un spaiu de nume se
construiete n felul urmtor: plasai la nceputul numelui elementului
spaiul de nume, introducei n continuare dou puncte (:), iar apoi
numele elementului.
Un element cu numele spa iu nume1: nume1 i elementul cu numele
nume1 pot coexista n acelai document i vor fi considerate ca dou
elemente distincte ntruct ambele aparin unor spaii de nume
separate: spa iu nume1: nume1 se afl n spaiul de nume
spaiu nume 1, n timp ce nume 1 este n spaiul de nume implicit al
documentului.
Conversaia 6
Afiai documentele XML cu ajutorul foilor
de stiluri XSLT
n aceast conversaie:
XSLT eXtensible Styleshee Language Transforma ion
XSLT Utiliza i foile de s iluri XSLT
XSLT Crea i fiierul de stiluri (foaia de stiluri) XSLT
XSLT Lega i o foaie de stiluri XSLT la un document XML
XSLT Principiul unei transformri XSLT. Aplica ii
XSLT Alte elemente XSLT propuse de XML
XML Tem
eXtensible Stylesheet Language
Transformation
Vom ncepe conversaia noastr prin a studia XSLT. XSLT este un limbaj
de nalt nivel care cuprinde 35 de elemente definite de World Wide Web
Consortium. XSLT este un limbaj declarativ. Principalul obiectiv al
limbajului l constituie transformarea documentelor (surs) XML n alte
documente XML care pot fi afiate ntr-un navigator Internet, pe un
telefon mobil, pe hrtie de imprimant etc.
Remarci:
XSLT 1.0 a fost publicat sub form de recomandare la data de 16 noiembrie
1999.
XSLT
100
XSLT (eXtensible Stylesheet Language Transformation) i XSL/FO (eXtensible
Stylesheet Language Formatting Objects) reprezint dou mari tehnologii ale
limbajului XSL (eXtensible Stylesheet Language), limbaj de descriere a stilului
de prezentare a documentelor XML.
Se poate face o paralel ntre relaia CSS HTML i relaia XSL XML. XSL i
XSLT corespund tehnologiei foilor de stiluri XML, chiar dac aceasta rmne o
viziune mai simplist a mecanismelor de punere n oper prin aceast
tehnologie.
Limbajul XSLT este exprimat sub forma unui vocabular XML, adic un
ansamblu de modele (templates, n limba englez). Modelele corespund unor
pattern-uri compuse din elemente i atribute n arborele surs i definesc
coninutul arborelui rezultant, atunci cnd aceste pattern-uri sunt identificate.
Utilizai foile de stiluri XSLT XSLT
O foaie de stiluri XSLT este un fiier XML care permite integrarea datelor
XML ntr-un template (model), n aceeai manier n care inserai
adresele ntr-o scrisoare tip (cu foile de stiluri CSS nu putei afia dect
informaiile declarate n documentul XML!).
Foile de stiluri XSLT permit formatarea i afiarea atributelor i
elementelor XML (cu foile de stiluri CSS nu putei formata i afia dect
elementele XML!).
n sfrit, foile de stiluri XSLT permit manipularea, reorganizarea i
afiarea datelor de o manier dinamic (cu foile de stiluri CSS nu putei
afia datele dect ntr-o manier static!).
Remarci:
O foaie de stiluri XSLT trebuie s fie un document XML bine format! (XSLT nu
admite definirea DTD-urilor!).
Limbajul foilor de stiluri XSLT permite scrierea foilor de stiluri transformnd
documentele surs n documente care utilizeaz un vocabular (ansamblu de
tag-uri) diferit.
Pentru a afia un document XML cu o foaie de stiluri XSLT (XSL) v
invitm s parcurgei urmtoarele etape prezentate mai jos:
Etapa 1 Crearea fiierului de stiluri XSLT (XSL);
Etapa 2 Legarea fiierului de stiluri XSLT (foii de stiluri) la un
document XML.
101
Creai fiierul de stiluri (foaia de stiluri)
XSLT
XSLT
O foaie de stiluri XSLT (XSL) este un fiier text cu extensia .xsl.
Fiierul de stiluri conine un set de reguli template (templates rules, n
limba englez). La rndul ei, o regul template definete un pattern
(element int), care corespunde elementelor din arborele surs i un
template. Elementul template permite definirea modului de
transformare i de afiare a nodurilor de date XML, sau elementele
specificate prin atributul match al modelului.
Pentru a crea un fiier de stiluri XSLT (XSL), nu-l uitai pe btrnul
Notepad!
Iat cum procedm pentru a crea fiierul de stiluri (foaia de stiluri)
XSLT, statistica.xsl, care va prelucra fiierul surs XML, statistica.xml
(figura 6.1) i va crea fiierul HTML rezultant.
Funciile fiierului de stiluri XSLT, statistica.xsl sunt urmtoarele:
Crearea unui element <html> pentru pagina Web;
Crearea unui titlu (Statistici Brazilia) pentru fereastra
navigatorului;
Crearea unui titlu (Statistici Brazilia) pentru pagina Web;
Afiarea numelui echipei i a rezultatului (BRAZILIA este pe
locul 1).
n figura 6.1 este prezentat documentul XML (statistica.xml) creat cu
Notepad pentru care dorim s crem fiierul de stiluri (foaia de stiluri)
statistica.xsl.
102
Remarci:
Documentul conine datele statistice pentru echipa de fotbal a Braziliei,
campionatul mondial de fotbal 2002.
n absena foii de stiluri XSLT legate la documentul XML, statistica.xml
navigatorul (Internet Explorer) va afia rezultatul ilustrat n figura 6.2.
Figura 6.1
Figura 6.2
i-acum s ne grbim ncet, pas cu pas. Trezii-l pe btrnul Notepad!
1. Introducei elementul rdcin <xsl:stylesheet> dup
declaraia xml (prima linie), figura 6.3.
103
Remarci:
O foaie de stiluri XSLT trebuie s conin un element rdcin (document)
<xsl:stylesheet>.
Elementul rdcin xsl:stylesheet informeaz procesorul c acest document
este o foaie de stiluri XSLT, precizndu-i totodat c toate elementele care
vor ncepe cu xsl: vor fi elemente XSLT i c aceste elemente vor fi conforme
cu recomandarea XSLT 1.0.
Elementul rdcin (xsl:stylesheet) conine dou atribute: version i xmlns:xsl
care au valorile menionate.
xmlns:xsl=http://www.w3.org/1999/XSL/Transform este spaiul de nume
XSLT.
Urmtoarea form este de asemenea valid:
<xsl:transform xmlns:xsl=http://www.w3c.org/1999/XSL/Transform
version=1.0. Valoarea 1999 reprezint anul de alocare a URI pentru W3C.
2. Introducei elementul <xsl:template>, cu atributul
match=statistica (figura 6.4).
Remarci:
Nu uitai c elementele foilor de stiluri care ncep cu xsl: sunt elemente XSL.
Toate celelalte elemente sunt fragmente ale rezultatului literal i sunt copiate
ca atare n documentul rezultant. Aceste elemente constituie scheletul paginii
HTML generate. Datele sunt ns extrase din documentul XML pentru a umple
scheletul.
Pattern-ul unei reguli template este valoarea atributului match al elementului
xsl:template. Template-ul pentru ieire este coninutul elementului
xsl:template. Elementele care nu conin prefixul xsl: se regsesc n arborele
rezultant.
Modul cel mai simplu prin care stabilim o coresponden ntre o regul de
prelucrare (template) i elementele de prelucrat const n a utiliza elementul
<xsl:template/>. Un model <xsl:template/> se construiete astfel (figura
6.5):
Figura 6.3
Figura 6.4
104
<xsl:template match =[model]>
[elemente rezultante literale i elemente XSLT]
</xsl:template>
Modelul poate fi un nume de element sau o expresie care identific un
fragment al documentului XML.
Fiecare regul template este reprezentat printr-un element <xsl:template>.
3. Introducei elementul <xsl:value-of select=[expresie]/>
pentru crearea coninutului elementului HTML <title> Statistici
Brazilia </title>, nlocuind [expresie] cu echipa (figura 6.6).
4. Introducei elementul <xsl:value-of select=[expresie]/>
pentru crearea coninutului elementului HTML <h1> Statistici
Brazilia </h1>, nlocuind [expresie] cu echipa (figura 6.7).
Figura 6.5
Figura 6.6
Figura 6.7
105
Remarc. Elementul <xsl:value-of select=[expresie]/> permite scrierea n documentul
rezultant a valorii unui element al documentului surs. Acest element prezint un
pericol: dac elementul documentului surs posed elemente fiu, atunci textul acestor
elemente este de asemenea inclus.
5. Introducei instruciunea <xsl:value-of select=[expresie]/>
pentru crearea coninutului elementului HTML <p> Brazilia este
pe locul 1 </p>, nlocuind prima dat [expresie] cu echipa, iar
apoi [expresie] cu clasament (figura 6.8).
Remarc. Ai observat c elementul <xsl:value-of select=echipa a fost utilizat
de trei ori n acest model pentru:
Figura 6.8
crearea coninutului elementului HTML <title>;
titlul paginii;
construirea frazei Brazilia este pe locul 1.
6. nchidei tag-urile <body>, <html>, <xsl:template> i
<xsl:stylesheet> (figura 6.9).
106
7. Salvai foaia de stiluri sub numele statistica.xsl (atenie la
extensie!), figura 6.10.
Figura 6.9
Figura 6.10
8. Verificai dac foaia de stiluri este bine format, afind-o n
Internet Explorer (figura 6.11).
107
Remarci:
Dac Internet Explorer afieaz un mesaj de eroare, verificai sintaxa foii de
stiluri.
Asigurai-v c toate tag-urile deschise au fost bine nchise i c toate
elementele au fost corect imbricate.
Aplicaie
Figura 6.11
Construii acelai document cu editorul XML Spy.
n figura 6.12 se prezint documentul generat cu XML Spy.
108
XSLT
Figura 6.12
Legai o foaie de stiluri XSLT la un
document XML
Pentru a lega o foaie de stiluri XSLT la un document XML, trebuie s
inserai n prologul documentului, instruciunea de prelucrare
xml-stylesheet.
Sintaxa general a acestei instruciuni este urmtoarea:
<?xml-stylesheet type=text/css href=calefiier.xsl?>
unde,
109
calefiier.xsl este URL-ul care indic amplasarea fiierului foii de stiluri
XSLT.
Iat cum legm fiierul de stiluri XSLT statistica.xsl la documentul XML
statistica.xml.
1. Inserai n prologul documentului XML, instruciunea de
prelucrare xml-stylesheet (figura 6.13).
Remarci:
Aceast instruciune de prelucrare este recunoscut de Microsoft Internet
Explorer 5.5 i nu de toate procesoarele XML.
href=statistica.xsl acioneaz n mod similar tag-ului LINK din HTML 4.0
(XML este mult mai dependent de foile de stiluri dect HTML!).
2. Afiai documentul XML (n care ai inserat instruciunea de
prelucrare xml-stylesheet) n Microsoft Internet Explorer
(versiunea 5 sau superioar), figura 6.14.
Figura 6.14
Figura 6.13
110
Remarc. Atunci cnd o foaie de stiluri XSLT este legat direct la un document XML,
putei deschide direct acest document n Internet Explorer (versiunea 5 sau
superioar). Tastai URL-ul i acionai tasta Enter (figura 6.15).
Principiul unei transformri XSLT. Aplicaii
Vom studia n cele ce urmeaz diferite elemente XSLT propuse de XSL:
<xsl: template match=/>; <xsl:value-of/>;
<xsl:for-each>; <xsl:apply-templates>; <xsl:sort/>.
Majoritatea foilor de stiluri sunt alctuite din reguli template
asemntoare cu cele prezentate n figura 6.16 [1].
<xsl:template match=/>
[elemente literale rezultante]
<xsl:apply-templates/>
[elemente literale rezultante]
</xsl:template>
Remarc. Acest model realizeaz urmtoarele operaii:
Modelul gsete elementul rdcin al documentului, aplicnd regula
<xsl:template match=/>.
Pentru a desemna nodul rdcin se va utiliza simbolul / ca valoare a
atributului match. Aceast regul se aplic numai nodului rdcin al arborelui
surs.
Modelul scrie n documentul rezultant o serie de elemente literale (tag-uri
HTML care sunt copiate identic n documentul rezultant).
El aplic celelalte modele ale foii de stiluri elementelor fii ale elementului
rdcin, cu ajutorul instruciunii <xsl:apply-templates />.
Modelul scrie n documentul rezultant a doua serie de elemente literale i
oprete prelucrarea documentului surs.
XSLT
Figura 6.16
Figura 6.15
n cele ce urmeaz vom lucra cu o versiune mai bogat a documentului
statistica.xml. Vom include i situaiile statistice ale echipelor Germaniei,
Turciei, care au cucerit locul 2, respectiv 3 la Campionatul mondial de
fotbal din Coreea i Japonia, ediia 2002.
111
Aplicaii
Creai o foaie de stiluri XSLT care genereaz un document HTML ce conine
un tabel cu o linie pentru fiecare element <echipa>. Capul de tabel cuprinde
urmtoarele cmpuri: Echipa, Victorii, nfrngeri, Clasament.
n figura 6.17 este prezentat documentul XML (statistica.xml) pentru care dorim
s crem fiierul de stiluri (foaia de stiluri).
Iat cum construim o foaie de stiluri XSLT, care genereaz un document HTML
ce conine un tabel cu o linie pentru fiecare element <echipa>. Utilizai editorul
de texte Notepad.
Figura 6.17
1. Introducei elementul <xsl:template match=/> pentru a localiza
elementul rdcin (figura 6.18).
112
Remarci:
n timpul fazei de execuie vor fi afiate toate nodurile XML, ncepnd cu
nodul rdcin.
Tot ceea ce constituie prelucrare trebuie s fie n interiorul elementului
<xsl:template match=/>.
Elementul xsl:template definete un template care va putea fi aplicat unui
nod.
Atributul match permite definirea nodurilor asupra crora se vor aplica regulile
template-ului.
2. Creai o pagin HTML (figura 6.19).
Figura 6.18
Figura 6.19
3. Introducei elementul <xsl:value-of /> pentru a crea titlul ferestrei
navigatorului (Statistici pentru Campionatul Mondial de Fotbal 2002) i
titlul paginii (Campionatul Mondial de Fotbal 2002), figura 6.20.
113
Remarc. Valoarea atributului (obligatoriu) select este o expresie. Aceast expresie este
evaluat i obiectul rezultat este convertit ntr-un ir de caractere.
4. Introducei elementul <xsl:for-each select=//echipa> pentru a
genera un tabel cu o linie pentru fiecare element <echipa> (figura
6.21).
Remarci:
Figura 6.20
Figura 6.21
statistici_cm_fotbal/nume selecteaz elementul fiu <nume> al elementului
<statistici_cm_fotbal>.
Cu enunul <xsl:for-each select=[expresie]/> se identific un element
(echipa) din documentul XML care este iterat (repetat) i cruia i se aplic
aceeai transformare pentru fiecare instan.
114
Prin // se selecteaz toate nodurile descendente ale elementului echipa
indiferent de nivelul ierarhic.
5. Introducei elementul <xsl:apply-templates/> pentru a umple cele trei
linii ale tabelului cu datele corespunztoare fiecrei echipe (nume,
rezultate, clasament), figura 6.22.
Remarci:
Elementul <xsl:apply-templates> cu atributul select permite aplicarea
regulilor template unui document.
Elementul <xsl:apply-templates> nu poate conine dect dou tipuri de
elemente:
xsl: sorte;
xsl: with-param.
La ntlnirea elementului <xsl:apply-templates/>, procesorul XSLT analizeaz
fiecare element fiu i i aplic regula template.
Exist numeroase asemnri ntre sistemul de adresare a documentelor XML
(sub form de arbore i noduri) i navigarea n structura directoarelor.
6. Introducei tag-urile de nchidere: </table>, </body>,
</xsl:template>, </xsl:stylesheet> (figura 6.23).
Figura 6.22
Figura 6.23
115
Atunci cnd documentul i foaia de stiluri asociat sunt analizate de ctre
procesorul XML, acesta genereaz documentul HTML ilustrat n figura 6.24.
Figura 6.24
Remarci:
Tag-urile HTML au nlocuit tag-urile XML originale. Numai coninutul
elementelor documentului XML original, i nu tag-urile este copiat n
documentul rezultant.
Tag-urile originale sunt suprimate dar ele au servit la identificarea elementelor
al cror coninut trebuia s fie copiat. Acest coninut este plasat n elementele
HTML definite n foaia de stiluri.
7. Afiai documentul XML n Microsoft Internet Explorer (versiunea 5
sau o versiune superioar), figura 6.25.
116
Figura 6.25
Afiai echipele n ordinea n care au fost clasate (dup clasament!).
Indicaie. Pentru a sorta elementele unui document surs utilizai elementul
<xsl:sort/>. Acest element trebuie utilizat ca fiu al unuia din elementele
<xsl:apply templates/>, <xsl:for-each/>. Adugai elementului <xsl:sort/>
atributul select care precizeaz elementul utilizat drept criteriu de sortare. n
cazul nostru, vom sorta elementele documentului surs (XML) n funcie de
clasamentul echipelor.
Iat cum aplicai elementul <xsl:sort/> pentru sortarea elementelor
documentului surs din figura 6.26.
Remarci:
Figura 6.26
Nu ntotdeauna este necesar de a defini explicit un model (template) care
corespunde fiecrui element al documentului surs. XSLT furnizeaz modele
standard sau modele implicite care permit prelucrarea elementelor n absena
regulilor specifice (vezi elementul <xsl:apply-template />).
117
Putei suprima coninutul unui element al documentului surs definind un
model vid pentru acel element. De exemplu, modelul <xsl:template
match=Statistica /> suprim coninutul elementului <statistica>. ntruct
acest model (vid) nu conine nici un element literal rezultant i nici un
element XSLT, el nu va genera nimic n documentul rezultant.
Evitai s utilizai elementul <xsl:apply-templates /> fr atributul match.
Folosii enunurile: <xsl:for-each select=[expresie] /> sau
<xsl:apply-templates match=[expresie] />.
Erorile XSLT curente, pe care de regul le fac debutanii sunt urmtoarele:
foaia de stiluri nu este un document bine format;
foaia de stiluri nu gsete elementul rdcin.
n cadrul enunului <xsl:template />, toate elementele XSLT se refer la
nodul curent.
Alte elemente XSLT propuse de XSL
Listm n continuare alte elemente XSLT (vezi Yannick LEJEUNE &
Alexandre PINHEL, XML, e-Poche, Micro Application, 2001, Paris i
Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web, Editura
Economic, 2002) pe care v invitm s le folosii n aplicaiile
dumneavoastr:
<xsl:comment></xsl comment> permite generarea
comentariilor n documentul de ieire.
<xsl:apply-imports> permite aplicarea regulilor coninute
ntr-un fiier importat;
<xsl:attribute> permite inserarea unui atribut;
<xsl:attribute-set> permite inserarea unui set de atribute sub
acelai nume;
<xsl:param> permite declararea parametrilor locali/globali;
<xsl:call-template></xsl:call-template> permite apelarea
unei reguli template specifice;
<xsl:choose> permite selectarea unei variante n funcie de
context;
<xsl:copy> permite efectuarea unei copii a nodului curent, n
arborele rezultant;
XML
118
<xsl:copy-of> permite efectuarea unei copii a unui set de
noduri;
<xsl:decimal-format> definete modul n care un numr este
convertit n ir de caractere;
<xsl:element> permite definirea unui nou element;
<xsl:fallback> genereaz codul de nlocuire a unui element
neidentificat de ctre procesorul XSLT;
<xsl:text> adaug un text documentului de ieire;
<xsl:if> evalueaz o expresie logic i returneaz o valoare
boolean (true sau false);
<xsl:include> include o foaie de stil n foaia de stiluri curent;
<xsl:key> creeaz o cheie unic pentru un element;
<xsl:message> afieaz un mesaj de eroare;
<xsl:namespace-alias> nlocuiete un nume de spaiu cu un
altul;
<xsl:number> insereaz n arborele rezultant numrul
nodului curent sau afieaz acest numr;
<xsl:preserve-space> conserv nodurile vide;
<xsl:strip-space> terge nodurile care nu conin dect spaii
albe;
<xsl:stylesheet> introduce o foaie de stil;
<xsl:variable> declar o variabil global sau local.
Tem
XML
Testai-v cunotinele
1. Comparai foile de stiluri CSS cu foile de stiluri XSLT.
2. Descriei pe scurt etapele pentru afiarea unui document XML cu o
foaie de stiluri XSLT (XSL).
119
3. Ce este XSL?
4. Cum definii o regul template?
5. Care este patern-ul urmtoarei reguli template?
<xsl:template match=statistica>
6. Cum selectai nodul rdcin al arborelui surs?
7. Comentai urmtoarea regul template:
<xsl:template match=/>
<b> <xsl:value-of select=card/> </b>
</xsl:stylesheet>
8. Cum traducei n limba romn cuvntul match (vezi atributul
match=/).
9. Descriei urmtoarele exemple de pattern-uri utilizate pentru
identificarea nodurilor unei structuri arborescente asociate unui
document surs XML (figura 6.27).
Pattern Exemplu Descriere
Nume persoana Elementul persoana
* * Oricare element
/ /
// //persoana
. .
.. ..
10. Se consider urmtorul exemplu XML (figura 6.28).
Figura 6.27
Figura 6.28
Efectuai transformarea XML HTML pentru a obine rezultatul afiat n
figura 6.29 (o list cu simboluri).
120
11. Comentai urmtorul exemplu (figura 6.30) creat cu XML Spy.
Figura 6.29
Figura 6.30
Vizitai site-urile
www.wapforum.org
http://www.w3.org/TR/xslt
t
Conversaia 7
Utilizai XSLT cu XPath pentru afiarea
documentelor XML
n aceast conversaie:
XPath XML Path Language, limbaj pentru adresarea
fragmentelor XML. Aplica ii
XML Insera i modele HTML n foile de stiluri XSLT
XML Combina i CSS i XSLT
XSLT, XPath Tem
XML Path Language limbaj pentru
adresarea fragmentelor XML
XPath
Limbajul (de transformare XML) XSLT utilizeaz limbajul XPath pentru
adresarea fragmen elor unui document XML (extras din recomandarea
W3C).
XSLT permite crearea i aplicarea template-urilor (modelelor) unor
documente surs XML. Cu limbajul XPath putei selecta un nod (o
resurs) al unui document XML pentru a-i aplica o transformare.
Este posibil de a crea expresii XPath pentru a selecta datele XML. XSLT
i XPath faciliteaz crearea unor transformri specifice. Putei selecta
122
elementele unui document XML pentru a le copia n documentul
rezultant. Putei sorta, selecta i manipula elementele n funcie de
urmtoarele caracteristici: numele elementului, numele atributului,
valoarea atributului, prezena unui element fiu/printe particular.
Remarc. Aceast list este departe de a fi complet. XPath este un subiect prea vast
pentru a putea fi tratat integral n aceast lucrare. Pentru a explora XPath n detalii,
vizitai site-ul www.w3c.org/TR/xpath.
Vizualizai documentele XML ca arbore de noduri
nainte de a ncepe s explorm sintaxa limbajului XPath i de a scrie
expresii XPath, este necesar de a vedea documentele XML sub o form
puin diferit. Pn acum, am considerat documentele ca pe un text
alctuit din tag-uri care ofer informaii asupra coninutului
documentului. Este posibil de a considera ierarhia elementelor sub forma
unui arbore de noduri.
Un arbore de noduri reprezint att structura ct i coninutul unui
document XML [1].
n figura 7.1 este prezentat documentul XML, statistici.xml ca un arbore
de elemente.
<statistici_cm_fotbal>
<nume>
<echipa> <echipa> <echipa> <echipa>
<rezultate <rezultate> <rezultate>
<victorii> <victorii>
Figura 7.1
123
Remarci:
Un arbore poate conine apte tipuri de noduri:
nod rdcin;
noduri element;
noduri text;
noduri atribut;
noduri spaiu de nume;
noduri instruciune de prelucrare;
noduri comentariu.
Elementul XSLT <xsl:apply-template/> poate fi utilizat n dou moduri:
fr atribut, <xsl:apply-template/>;
cu un atribut match, <xsl:apply-template match=[expresie]/>
unde,
expresie este o expresie XPath alctuit din instruciuni care permit selectarea
unuia sau mai multor elemente ale unui document XML; o expresie XPath
poate fi un simplu nume de element.
XSLT utilizeaz XPath pentru:
selectarea nodului de prelucrare;
specificarea condiiilor de prelucrare a unui nod;
generarea textului care se va insera n arborele rezultant.
Expresiile XPath intervin ca valori ale unor atribute ale elementelor XSLT i ca
template-uri pentru valorile atributelor.
Elementele fundamentale ale expresiilor XPath sunt prezentate n figura 7.2.
Simbol Semnificaie
/ Fiu al nodului curent
../ Printe al nodului curent
// Descendent al nodului curent
* Oricare element fiu al nodului curent
@* Toate atributele nodului curent
Exemple de expresii XPath:
/statistici_cm_fotbal/* selecteaz toate elementele fii ale elementului
<statistici_cm_fotbal>;
/statistici_cm_fotbal/nume selecteaz elementul fiu <nume> al
elementului <statistici_cm_fotbal>;
//nfrngeri selecteaz toi descendenii elementului <nfrngeri>.
Putei perfeciona cile de acces ctre elementele documentului surs
utiliznd predicate XPath. Un predicat este o expresie boolean, care n urma
evalurii returneaz o valoare de tip boolean: true sau false.
Operatorii folosii ntr-o expresie logic sunt: <; >; <=; >=; != (diferit).
Figura 7.2
Axele XPath
XPath furnizeaz un set de cuvinte cheie, numite axe pentru a specifica
relaiile ntre elemente. Axele XPath selecteaz nodurile n funcie de
relaia lor ierarhic cu nodul curent.
124
Axele XPath permit construirea cilor de acces complexe n vederea
localizrii nodurilor specifice ale unui document.
Calea de acces const din:
o ax;
un test;
unul sau mai multe predicate.
n figura 7.3 se prezint specificatorii axelor XPath.
Axa Semnificaie
child Toi fiii nodului curent. Un nod fiu este situat direct n
nodul curent.
descendent Toi descendenii nodului curent.
parent Printele direct al nodului curent.
ancestor Toi strmoii nodului curent.
following-sibling Toate nodurile care se succed nodului curent i care au
acelai printe.
preceding-sibling Toate nodurile care preced nodul curent i care au
acelai printe.
following Toate nodurile care se succed nodului curent, oricare ar
fi nivelul lor ierarhic.
preceding Toate nodurile care preced nodul curent, oricare ar fi
nivelul lor ierarhic.
self Nodul curent.
Figura 7.3
125
Remarci:
n figura 7.4 este ilustrat reprezentarea axelor XPath pentru documentul
XML, statistici.xml.
Sintaxa XPath este structurat n mai multe pri, dup cum urmeaz:
axa, care reprezint relaia arborescent ce posed nodul curent mpreun
cu nodurile pe care dorim s le selectm;
nodul de test, care va preciza ce caracteristici trebuie s posede nodurile
pentru a fi selectate;
unul sau mai multe predicate (situate ntre paranteze drepte) care permit
rafinarea nodurilor selectate.
Sintaxa unui XPath este urmtoarea: numele axei, urmat de nodul de test
separat prin ::, urmat de zero sau mai multe predicate plasate ntre
paranteze drepte.
n exemplul:
Child::eva[posi ion()=1], t
t
.
child este numele axei;
eva este nodul de test;
[position()=1] este predicatul.
Alte exemple:
descendent::echipa desemneaz toate elementele numi e echipa care
sunt descendeni ai nodului curent.
parent::* desemneaz elementul printe al nodului curent
Limbajul XPath permite identificarea elementelor, atributelor, textului,
comentariilor sau instruciunilor de prelucrare ntr-un document n funcie de
metadate (numele tag-urilor i atributelor) i de poziia lor n ierarhia
elementelor XML.
Atunci cnd o foaie de stiluri prelucreaz un document XML, elementele
documentului sunt comparate cu elementele XSLT ale acestei foi. n
momentul prelucrrii, nodul n curs de prelucrare este numit nod contextual.
n figura 7.5 este ilustrat modul n care nodul contextual se deplaseaz n
arborele documentului prelucrat prin foaia de stiluri.
preceden
descendeni
printe
stmoi
urmtorii
t
curent (self)
Figura 7.4
<echipa> <echipa>
<rezultate <rezultate> <rezultate>
<victorii> <victorii>
<echipa> <echipa>
<nume>
<statistici_cm_fotbal>
126
Aplicaii
<statistici_cm_fotbal>
<nume>
<echipa> <echipa>
<echipa>
<nume> <rezultate> Figura 7.5
Se consider documentul statistici.xml ilustrat n figura 7.6, construit cu
Notepad.
Figura 7.6
127
Afiai rezultatul expresiei: <xsl:value-of select=nume>, considernd c nodul
contextual este al doilea element <echipa> (TURCIA) al documentului.
Utilizai urmtoarea foaie de stiluri (vezi figura 7.7).
Figura 7.7
n figura 7.8 este afiat rezultatul pe care trebuie s-l obinei.
Figura 7.8
Modificai fiierul statistici.xml i nlocuii xpath.xsl cu xpath2.xsl. Foaia de
stiluri xpath2.xsl utilizeaz instruciunea <xsl:value-of
select=statistici_cm_fotbal/nume/>. Salvai documentul i afiai n Internet
Explorer rezultatul acestei instruciuni.
n figura 7.9 este afiat rezultatul pe care trebuie s-l obinei.
128
Modificai fiierul statistici.xml i nlocuii xpath2.xsl cu xpath3.xsl. Foaia de
stiluri xpath3.xsl utilizeaz instruciunea: <xsl:value-of
select=//echipa[3]/nume/>. Salvai documentul i afiai n Internet Explorer
rezultatul acestei instruciuni.
n figura 7.10 este afiat rezultatul pe care trebuie s-l obinei.
Modificai fiierul statistici.xml i nlocuii xpath3.xsl cu xpath4.xsl. Foaia de
stiluri xpath4.xsl utilizeaz instruciunea
<xsl:value-of select=preceding-sibling::echipa/rezultate/ victorii/>.
Salvai documentul i afiai n Internet Explorer rezultatul acestei instruciuni.
n figura 7.11 este afiat rezultatul pe care trebuie s-l obinei.
Figura 7.9
Figura 7.10
Figura 7.11
129
Remarci:
Specificatorul de axe XPath preceding-sibling are urmtoarea semnificaie:
toate nodurile care preced nodul curent i care au acelai printe.
Instruciunea <xsl:value-of select=preceding-sibling::echipa/
rezultate/victorii/> selecteaz valoarea elementului fiu <victorii> al
elementului <rezultate> al elementului <echipa> care preced nodul
contextual.
Inserai modele HTML n foile de stiluri
XSLT
Recomandarea XSLT a consoriului W3C v permite scrierea unei foi de
stiluri sub forma unui element literal rezultant. Un element literal
rezultant permite la rndul lui crearea unui model HTML i umplerea
zonelor documentului cu ajutorul instruciunilor XSLT/XPath [1].
Remarc. Un model HTML este constituit din cod HTML, care este comun tuturor
paginilor site-ului.
Iat cum modificm pagina HTML afiat n figura 7.12 pentru a servi ca
model n foaia de stiluri. Va trebui mai nti s precizm cmpurile din
pagina HTML care urmeaz s primeasc datele XML (vezi figura 7.13 n
care se prezint modelul HTML care conine statisticile pentru
Campionatul Mondial de Fotbal 2002).
XML
Figura 7.12
130
Figura 7.13
1. Examinai fiierul XML (statistici.xml) prezentat n figura 7.14,
pentru a putea crea expresiile XPath cu care vor fi extrase
datele XML.
131
Remarci:
Figura 7.14
Originea acestui fiier nu are importan. Putei s-l creai manual, el putnd
de asemenea proveni dintr-o baz de date. Pentru moment, ne vom
concentra numai pe structura datelor, pentru a putea scrie foaia de stiluri
XSLT.
n documentul statistici.xml (figura 7.14) datele sunt plasate dezordonat (n
mod intenionat!). Ele vor fi sortate n foaia de stiluri.
Elementul rdcin <statistici_cm_fotbal> posed un element fiu, <nume>
care conine numele campionatului de fotbal Campionatul Mondial de Fotbal
2002.
<statistici_cm_fotbal> posed mai muli fii instaniai de elementul <echipa>.
Fiecare element <echipa> posed un fiu <nume>. n acest context, <nume>
conine numele echipei.
132
Fiecare element <echipa> posed un fiu numit <rezultate>.
Fiecare element <rezultate> posed fiii: <victorii>, <nfrngeri> i <nule>.
Aceste elemente conin respectiv numrul de victorii, numrul de nfrngeri i
numrul de meciuri nule ale echipei.
Fiecare element <echipa> posed un element <clasament> care conine
clasamentul echipei la Campionatul Mondial de Fotbal 2002 din Coreea i
Japonia.
2. Creai expresiile XPath pentru extragerea datelor din fiierul
XML.
ntruct noi cunoatem ordinea datelor, vom utiliza instruciunea
<xsl:value-of /> pentru a selecta o dat specific n fiierul statistici.xml
n vederea plasrii acesteia n modelul HTML. Pentru aceasta, vom scrie
o cale de acces care va servi ca valoare atributului select.
2.1 Scriei instruciunea XPath pentru a extrage coninutul
elementului <nume>, fiul lui <statistici_cm_fotbal>
(figura 7.15).
...
<xsl:value-of select=statistici_cm_fotbal/nume/>
...
2.2 Scriei instruciunea XPath pentru a extrage informaiile
privind cele trei echipe medaliate la Campionatul Mondial
de Fotbal 2002 din Coreea i Japonia (figura 7.16).
...
<xsl:for-each select=statistici_cm_fotbal/echipa>
...
Remarc. Numele echipei aflndu-se n elementul <nume> fiu al elementului
<echipa> poate fi selecionat direct.
<xsl: value-of select=nume/>.
Figura 7.15
Figura 7.16
2.3 Scriei instruciunea XPath pentru a extrage informaiile
privind numrul de victorii, nfrngeri i meciuri nule
pentru cele trei echipe de fotbal (figura 7.17).
133
...
<xsl:value-of select=rezultate/victorii/>
<xsl:value-of select=rezultate/infrangeri/>
<xsl:value-of select=rezultate/nule/>
... Figura 7.17
2.4 Scriei instruciunea XPath pentru a extrage coninutul
elementului <clasament> (figura 7.18).
...
<xsl:value-of select=clasament>
...
Figura 7.18
3. Introducei n foaia de stiluri (literal.xsl) din figura 7.19
expresiile XPath pe care le-ai creat (figura 7.18).
Figura 7.19
4. Deschidei fiierul statistici.xml ntr-un editor de texte i
asociai-i foaia de stiluri literal.xsl, adugnd dup linia de
134
declaraie urmtoarea linie: <?xml-stylesheet type=text/xsl
href=literal.xsl?>.
5. Deschidei fiierul n Internet Explorer. n figura 7.20 este afiat
rezultatul pe care trebuie s-l obinei.
Remarc. Navigatorul Internet Explorer afieaz datele documentului XML (statistici.xml)
ntr-un model HTML.
Aplicaii
Figura 7.20
Afiai n ordine alfabetic echipele de fotbal clasate pe primele trei locuri la
Campionatul Mondial de Fotbal 2002 ce a avut loc n Coreea i Japonia.
Indicaie. n corpul instruciunii <xsl:for-each> adugai instruciunea <xsl:sort
select=nume/> ca n secvena urmtoare (figura 7.21):
Figura 7.21
135
n figura 7.22 se prezint n ordine alfabetic echipele de fotbal clasate pe
primele trei locuri.
Afiai n funcie de clasament echipele de fotbal clasate pe primele trei locuri
la Campionatul Mondial de Fotbal 2002 ce a avut loc n Coreea i Japonia.
Indicaie. Modificai linia <xsl:sort select=nume/> nlocuind valoarea
atributului select cu clasament.
n figura 7.24 se prezint clasamentul (locul 1, locul 2, locul 3) echipelor de
fotbal.
Figura 7.22
Figura 7.23
Figura 7.24
136
XML Combinai CSS i XSLT
XML este un limbaj suplu care poate fi utilizat pentru numeroase aplicaii
profesionale. ntreprinderile l utilizeaz ca format pentru schimbul
informaiilor comerciale. Noi domenii de utilizare apar n fiecare zi.
nainte de a v entuziasma de facilitile CSS cu XML este util de a
compara aceast tehnologie cu XSLT, limbajul foilor de stiluri. CSS i
XSLT prezint diferene importante.
Utilizat cu XPath, XSLT permite urmtoarele prelucrri ale datelor XML:
selectarea din document a unui coninut specific; manipularea i
sortarea datelor, combinarea coninutului mai multor documente;
conversia XML HTML, XML WML etc.
XSLT prezint de asemenea cteva limitri, ca de exemplu: XSLT
nu propune nici o sintax pentru formatare (formatarea poate fi indicat
numai efectund o conversie ctre un alt limbaj, ca HTML); XSLT i
XPath sunt limbaje greoaie i dificil de nvat; XSLT cere un program
special, procesor XSLT, sau transformator XSLT cu care puine
browser-e sunt echipate.
CSS-urile permit specificarea ntr-o manier foarte simpl a formatrii
elementelor HTML sau XML. Aceast facilitate reprezint un avantaj!
CSS-urile impun i anumite limitri, ca de exemplu: ele nu pot manipula
elemente XML; CSS-urile nu pot selecta/sorta elemente; documentul
XML este afiat integral sau deloc; suportul CSS variaz n funcie de
navigator; CSS-urile nu permit specificarea unei formatri variind n
funcie de atributele elementelor.
XSLT este un limbaj de programare bogat i puternic, util pentru
convertirea unui document XML al unui vocabular ctre un altul, precum
137
HTML n vederea afirii acestuia. CSS ofer pe de alt parte o sintax
simpl pentru a specifica modul n care elementele trebuie s fie afiate.
Remarc. Cu toate limitrile, CSS-urile sunt foarte puternice dac le utilizai n
combinaie cu XSLT.
Aplicaie [1]
Combinai dou foi de stiluri CSS i XSLT pentru a afia datele XML
prezentate n figura 7.25.
Indicaie. Creai o foaie de stiluri CSS simplificat (gen.css) care va conine
dou clase: masculin i feminin. Elementele primei clase vor fi afiate cu bold
(.masculin{font-weight:bold;}), iar elementele celei de-a doua clase vor fi
afiate cu italic (.feminin{font-style:italic;}). Creai dup aceea o foaie de stiluri
XSLT pentru extragerea datelor necesare pornind de la fiierul (gen. xml).
Plasai elementele ntr-o linie a tabelului care va fi de clas masculin sau
feminin n funcie de atributul sex al elementului <nume>. Utilizai instruciunea
<xsl:choose> pentru a testa valoarea atributului i a crea elementul
corespunztor n documentul rezultant.
Figura 7.25
138
Tem
XSLT, XPath
Testai-v cunotinele
1. Care este rolul limbajului XPath?
2. De ce utilizm XSLT cu XPath?
3. Cum definii axele XPath?
4. Comentai instruciunea:
<xsl: sort select=clasament/>
Vizitai site-urile
www.w3.org/TR/xpath
www.xml.com
http://www.ibiblio.org/pub/sun-info/standards/xml/why/xmlapps.htm
t
Conversaia 8
De la DTD la XML Schema
n aceast conversaie:
XML Scheme XML
XML Tipuri de date predefini e utilizate n schemele XML
XML Construi i o schem XML
XML Software XML Schema. Aplica ii
XML Tem
XML
Scheme XML
Pe parcursul conversaiilor precedente am nvat s utilizm DTD XML
pentru a defini vocabularul i structura documentelor XML. Am nvat
de asemenea cum s validm un document n raport cu un DTD,
verificnd structura documentului cu cea descris prin DTD.
Autorii XML-ului doreau la nceput s conserve o compatibilitate maxim
cu SGML (Standard Generalized Markup Language) predecesorul su,
mult mai complex. Din acest motiv, versiunea 1.0 a recomandrii XML
specific o form simplificat a DTD-ului pentru crearea de vocabulare i
validarea documentelor XML.
O dat cu dezvoltarea i rspndirea XML-ului, limitele DTD-ului apreau
din ce n ce mai jenante.
140
Remarc. Limitele DTD-ului sunt urmtoarele:
Un DTD nu este un document XML;
Regulile de instaniere sunt limitate;
Controlul tipului de coninut al unui element este limitat.
Pentru a elimina aceste limite ale DTD-ului consoriul W3C a decis s
creeze un nou standard (mai 2001) XML Schema, capabil s rspund
nevoilor utilizatorilor.
Aadar, va trebui s alegei cnd creai documente XML, ntre schemele
XML i DTD XML. Analizai i decidei!
Scheme XML sau DTD XML?
Schemele XML prezint, n raport cu DTD XML urmtoarele avantaje:
permit definirea tipurilor de date ntr-un mod mult mai precis;
sunt compatibile cu spaiile de nume ceea ce permite
combinarea mai multor vocabulare n cadrul aceluiai
document;
sunt ele nsele documente XML.
DTD XML prezint urmtoarele avantaje:
utilizeaz o sintax mai simpl;
sunt mult mai concise;
sunt compatibile cu un numr mai mare de aplicaii (cel puin
pentru moment!)
Remarci:
Probabil schemele XML i DTD XML vor continua s coabiteze pentru o bun
perioad de timp!
Pentru a lua corect o decizie n privina utilizrii schemelor XML sau DTD XML
trebuie s inei cont i de compatibilitatea celor dou tehnici cu instrumentele
pe care le avei la dispoziie.
Cu excepia spaiilor de nume, alegerea ntre scheme XML i DTD XML nu
afecteaz structura documentelor pe care le creai. Putei crea i valida
aceleai documente cu ajutorul unei scheme XML sau a unui DTD. O schem
XML ofer n plus posibilitatea validrii coninutului elementelor.
141
Tipuri de date predefinite utilizate n
schemele XML
nainte de a construi mpreun prima schem XML, va trebui s
nelegem principiile fundamentale. A construi o schem fr a respecta
anumite principii nu se poate!
Tipuri de date predefinite
Unul din principalele avantaje ale schemelor XML este acela c permit
specificarea tipului de coninut i a atributelor elementelor XML. O
schem XML poate specifica dac un element trebuie s conin un
numr (ntreg, zecimal etc.) ceea ce un DTD nu permitea.
Cele mai importante tipuri de date predefinite utilizate n schemele XML
sunt urmtoarele [2]:
tipuri simple numerice
Boolean (definete tipul de date boolean true sau false; 1
sau 0);
Binary (definete tipul de date binar);
Integer (orice ntreg situat n intervalul nchis -126789 la
126789);
NonPositiveInteger (orice numr ntreg negativ sau nul situat
n intervalul nchis -126789 la 0);
nonNegativeInteger (orice numr ntreg pozitiv sau nul situat
n intervalul nchis 0 la 126789);
positiveInteger (orice numr ntreg pozitiv situat n intervalul
nchis 1 la 126789);
negativeInteger (orice numr ntreg negativ situat n
intervalul nchis -126789 la -1);
byte (orice numr ntreg situat n intervalul nchis -1 la 126);
XML
142
short (orice numr ntreg situat n intervalul nchis -1 la
12678);
int (orice numr ntreg situat n intervalul nchis -1 la
126789675);
long (orice numr ntreg situat n intervalul nchis -1 la
12678967543233);
unsignedByte (orice numr ntreg situat n intervalul nchis 0
la 126);
unsignedShort (orice numr ntreg situat n intervalul nchis 0
la 12678);
unsignedInt (orice numr ntreg situat n intervalul nchis 0 la
1267896754);
unsignedLong (orice numr ntreg situat n intervalul nchis 0
la 12678967543233);
decimal (orice numr zecimal pozitiv sau negativ);
float (orice numr zecimal situat n intervalul 3.4e+38 la
1.4e-45).
tipuri temporale
time (definete ora);
date (definete data calendaristic: zzllaa);
dateTime (Exemplu: 2003-09-01 T13:20:00+02:00);
duration (Exemple: P-1347M; P134Y; P3Y4M10J
T8H30M13S);
GYearMonth (Exmplu: 2003-09).
tipuri DTD
ID;
IDREF;
IDREFS;
NMTOKEN;
NMTOKENS;
143
ENTITY;
NOTATION;
Name.
tipuri particulare
string (definete un ir de caractere);
hexBinary (definete datele n sistemul hexazecimal);
any URI (definete un identificator de resurse).
Elemente de tip simplu i de tip complex
Schema XML descrie structura documentelor XML n mod similar
DTD-urilor. Schemele XML fac distincie ntre dou tipuri de elemente:
elemente de tip simplu, care nu pot avea nici fii, nici atribute;
elemente de tip complex, care pot avea elemente fii i atribute.
Remarc. Este foarte important s reuii s deosebii cele dou tipuri de elemente ntre
ele ntruct acestea se definesc n mod diferit n cadrul unei scheme XML (simpleType
definete elementul de tip simplu, iar complexType definete elementul de tip
complex).
XML Construii o schem XML
Pentru nceput vom compara un DTD cu schema XML echivalent. Apoi
vei vedea i singuri ce va urma.
Iat cum procedm pentru a crea o schem XML, pies cu pies pornind
de la documentul XML scheme.xml creat cu editorul Notepad (figura 8.3)
al crui DTD este prezentat n figura 8.1 (creat de asemenea cu
Notepad).
144
Remarci:
DTD-ul XML prezentat nu spune nimic despre valorile autorizate ale
elementului <um> (unitate de msur) i nu precizeaz faptul c elementul
<cantitate> are drept coninut o valoare numeric.
Ierarhia listei de produse de excursie este prezentat n figura 8.2.
Figura 8.1
Figura 8.2
Figura 8.3
Denumire
produs
Unitate
msur
Cantitate
Produse excursie Produse excursie Produse excursie
Lista produse excursie
145
Remarc. Evident, putei critica srcia acestei liste! n ceea ce ne privete am
considerat suficiente 3 kg de banane, 2 kg de biscuii i 1 borcan de ness pentru o
simpl ascensiune, n doi pe OMUL!
i-acum s fim creativi!
Pentru a crea o schem XML, folosii una din metodele prezentate mai
jos:
Metoda 1 Codificarea manual;
Metoda 2 Codificarea automat cu aplicaii dedicate.
Metoda 1
Dac vi se va prea complicat aceast metod s nu v ngrijorai, cci
nu suntei singurii n aceast situaie.
1. Definii spaiul de nume cu tag-ul <xs: schema> i atributul
xmlns (figura 8.4).
Remarci:
Dup declaraia documentului XML (prima linie), <xs: schema> este primul
element pe care l ntlnim ntr-o schem XML. El este deci, elementul
rdcin iar prezena sa este obligatorie.
Cu aceast declaraie, toate elementele schemei care conin sufixul xs: (xsd:)
vor fi recunoscute ca aparinnd spaiului de nume corespunztor (vezi
http://www.w3.org/2001/XMLSchema).
<xs: schema> poate conine de asemenea i urmtoarele atribute, toate
facultative: targetNamespace; version; elementFormDefault;
attributeFormDefault; blockDefault; finalDefault; id (vezi
http://www.w3.org/2000/10/XMLSchema).
Figura 8.4
Exemplu de utilizare a atributului targetNamespace al elementului
<xs: schema> (figura 8.5).
146
2. Definii elementul de tip complex <lista_produse_excursie>.
2.1. Introducei elementul <xs: element name= lista_produse_
excursie> (figura 8.6).
Remarci:
Figura 8.6
Figura 8.5
Elementul de tip complex <lista_produse_excursie> este o secven de
<produse_excursie>.
Dup cum ai putut constata element permite declararea unui element. El
posed dou atribute: name i ref, care sunt exclusive.
name permite declararea unui atribut n mod local.
ref, care este diminutivul de la reference face referiri la un element deja
declarat sau care urmeaz a fi declarat ulterior.
Atributele name i ref (facultative) sunt cele mai frecvent folosite n
declararea unui element.
Celelalte atribute facultative ale tag-ului <xs: element> sunt [2]:
type (definete tipul elementului; primete ca valoare un nume);
equivclass (ia ca valoare un nume);
minOccurs (definete numrul minim de apariii ale unui element
(occurence) ntr-un document; ia ca valoare un ntreg pozitiv sau nul (n
mod implicit primete valoarea 1));
maxOccurs (definete numrul maxim de apariii ale unui element ntr-un
document; ia ca valori un ntreg pozitiv sau nul (n mod implicit primete
valoarea 1));
default (primete ca valoare un ir de caractere; atribuie elementului o
valoare implicit);
fixed (primete ca valoare un ir de caractere; atribuie elementului o
valoare fix i invariabil);
147
nullable (primete ca valoare true sau false; testeaz dac elementul este
sau nu este nul);
abstract (primete ca valoare true sau false; testeaz dac elementul nu
va putea fi prezent ntr-un document);
form (primete ca valoare qualified sau unqualified; indic dac numele
elementului trebuie s conin sau nu prefixul xs:(xsd:));
id (vezi DTD).
2.2. Introducei elementul <xs: complexType> (figura 8.7).
2.3. Introducei enunul <xs: sequence> (figura 8.8).
Remarci:
Figura 8.7
Figura 8.8
sequence este un grup de elemente. ntr-un document, elementele declarate
n secven trebuie s apar obligatoriu cel puin o dat n ordinea n care ele
au fost definite.
Atributele pe care le posed <xs: sequence> sunt: id; maxOccurs;
minOccurs.
2.4. Introducei elementul vid <produse_excursie> cu atributul
maxOccurs (figura 8.9).
148
Remarc. maxOccurs=unbounded precizeaz c numrul maxim de elemente
<produse_excursie> care trebuie s fie prezente n document nu este limitat.
3. Definii elementul de tip complex <produse_excursie>, care
conine secvena: <cantitate>, <um>, <produs>, n ordinea
indicat (figura 8.10).
Remarci:
Figura 8.10
Figura 8.9
Elementul de tip simplu <cantitate> va fi un numr zecimal (xs: decimal).
Elementul de tip simplu <produs> va fi un ir de caractere (xs: string).
Elementul <um> poate fi definit ca un simplu string dar dorim s-l limitm la
o serie de valori predefinite.
4. Definii elementul <um> cu urmtoarele valori predefinite: kg;
borcan (borcane); buci; niciuna (figura 8.11) .
149
Remarci:
Schema utilizeaz elementul de constrngere <xs: restriction> cu atributul
base pentru a preciza c elementul <um> este de tip xs: string.
restriction conine faete care permit reducerea spaiului de valori.
Valoarea este restricionat printr-o faet definit cu elementele
<xs: enumeration>.
Faeta enumeration permite limitarea spaiului de valori la o list de valori
(kg; borcan(e) etc.).
Fiecare constrngere este un element care posed un atribut numit value i
definete una din valorile posibile.
Software XML Schema
La ora actual exist numeroase aplicaii care v pot ajuta s creai
scheme XML fr a mai nva sintaxa prezentat n cadrul primei
metode. Aceste aplicaii utilizeaz liste derulante pentru selecia
elementelor i afieaz rezultatul sub form grafic. Ele permit de
asemenea crearea n mod automat a schemelor XML pornind de la
documentele XML (Me oda 2 Codificarea automat cu aplicaii
dedicate). Prezentm n cele ce urmeaz, dou dintre cele mai
cunoscute aplicaii pentru crearea schemelor XML:
t
(TIBCOs) XML Authority;
XML Spy.
XML
Figura 8.11
150
(TIBCOs) XML Authority
XML Authority (http://www.tibco.com) a fost creat de o ntreprindere
numit Extensibility (rscumprat dup aceea de TIBCO). Este unul din
primele medii de dezvoltare a schemelor creat pentru XML.
XML Authority este simplu i uor de utilizat de la nivel de interfa i
permite dezvoltatorilor de aplicaii s creeze rapid scheme pe care apoi
s le verifice n timp real. Este un instrument practic pentru a crea,
modifica i elimina elemente i atribute. XML Authority ofer o
reprezentare vizual a modelului, posibilitatea de a insera uor
comentarii i de a modifica direct sursa pentru aceia care, din timp n
timp au nevoie s intervin n cod. Una din funciunile cele mai
interesante ale XML-ului Authority, n afar de interfaa cu utilizatorul
este i aceea de a lucra cu mai multe dialecte. Putei de exemplu
deschide un DTD XML i s-l salvai (cu comanda Save as) n
echivalentul su XML Schema, SOX (Schema for object Oriented XML),
SGML (Standard Generalized Markup Language), compatibil Microsoft Biz
Talk (http://biztalk.org) sau altele.
XML Authority poate lucra [5] cu urmtoarele dialecte: Biz Talk
(http://www.biztalk.org); DCD (http://www.w3.org/TR/NOTE-dcd);
DDML (http://www.w3.org/TR/NOTE-ddml); One Soft
(http://www.onesoft.com); SGML (http://www.iso.ch); RELAX
(http://www.xml.gr.jp/relax); Schema Adjunct
(http://www.extensibility.com/resources/saf.htm); SOX versiunea 2
(http://www.w3.org/TR/NOTE-SOX); XDR (http://msdn.microsoft.com/
librarz/default.asp?URL=/library/psdk/xmlsdk/xmlp7k6d.htm); DTD XML
(http://www.w3.org/TR/2000/REC-xml-20001006); XML Schema
(http://www.w3.org/XML/Schema).
151
Exportul n diverse dialecte nu este singura funcie important a XML
Authority. El tie de asemenea s importe o serie ntreag de surse de
date diverse i variante i s construiasc o reprezentare XML pornind
de la aceste surse. Sursele de date pe care XML Authority tie s le
importe sunt: COM, Java, LDAP (Lightweight Directory Access Protocol),
ODBC, SGML, XML (document XML bine format).
Cteva funcii ale XML Authority ofer o mare suplee pentru conversiile
unui tip de date n altul. n plus, fa de aceste funcii, XML Authority
permite s se exporte reprezentarea vizual a schemelor n format GIF;
ajut utilizatorul cu o funcie de introducere date semi-automat; ofer
o interfa simpl pentru listele de elemente i de atribute.
Remarci:
Dac dorii mai multe informaii despre XML Authority, vizitai site-ul
http://www.tibco.com.
XML Authority este disponibil sub Windows, Unix i MacOs.
Aplicaie
Creai cu XML Authority (Metoda 2) schema XML pornind de la documentul
XML ilustrat n figura 8.3, al crui DTD este prezentat n figura 8.1 (vezi Metoda
1). Afiai totodat i codul surs al schemei XML realizate.
XML Spy
XML Spy (http://www.xmlspy.com) este un alt celebru instrument de
creare a schemelor XML. XML Spy este disponibil numai sub Windows!
XML Spy permite editarea fiierelor HTML i ASP, dar ele nu au la baz
XML.
Formatele (extensia fiierului) pe care XML Spy [5] tie s le recunoasc
sunt: .biz (BizTalk); .cml (Chemical Markup Language), .dcd (Document
Content Description); .dtd (Document Type Definition); .ent (Entity
Sets); .math i .mml (Mathematical Markup Language); .mtx
(MetaStream XML); .rdf (Resource Description Framework); .smil
152
(Synchronized Multimedia Integration Language); .svg (Scalable Vector
Graphics); .wml (Wireless Markup Language); .xdr (XML Data
Reduced); .xhtml (eXtensible Hypertext Markup Language); .xml
(document XML); .xsd (Schema XML); .xsl (foaia de stiluri XSL); .xslt
(transformare XSL).
Remarci:
XML Spy este un instrument simplu de folosit, extraordinar de flexibil
i foarte complet.
XML Spy prezint i alte faciliti precum: introducerea semi-automat
a datelor; editarea vizual a schemelor; editarea direct a sursei XML;
posibilitatea de creare a unei documentaii n format HTML sau Word.
Aplicaii
Creai cu XML Spy (Metoda 2) aceeai schem XML pe care ai realizat-o
manual (Metoda 1) i automat (Metoda 2) cu XML Authority.
n figura 8.12 se prezint schema XML generat cu XML Spy.
Figura 8.12
Codul surs al schemei XML generate cu XML Spy este prezentat n figura 8.13.
153
Figura 8.13
Se consider DTD-ul (agenda.dtd) din figura 8.14 i documentul XML
conform acestui DTD (figura 8.15).
154
Figura 8.14
155
Realizai schema XML echivalent folosind una din metodele prezentate mai jos:
Figura 8.15
Metoda 1 Codificarea manual;
Metoda 2 Codificarea automat cu aplicaii dedicate.
156
Remarc. Elementele <nume>, <prenume> sunt de type=xs.string.
n figura 8.16 se prezint schema XML generat cu XML Spy (Metoda 2).
Codul surs al schemei XML generate cu XML Spy este prezentat n figura 8.17.
Figura 8.16
Figura 8.17
157
Figura 8.17
(continuare)
158
Remarc. Putei realiza o conversie automat DTD XML XML Schema i cu aplicaia
dtd2xsd, care se gsete pe site-ul W3C (www.w3c.org).
Tem
Testai-v cunotinele
1. Cnd folosii schemele XML?
2. Dai exemple de tipuri de date predefinite.
3. Cum se definesc elementele de tip simplu i de tip complex?
4. Ce software XML Schema cunoatei?
5. Comentai urmtorul cod XML (figura 8.18)?
XML
Figura 8.18
Vizitai site-urile
http://www.w3.org/2000/10/XMLSchema
http://www.w3.org/2001/XMLSchema-instance
http://www.thaiopensource.com/trex/
http://www.mutu-xml.org/
f
t
Conversaia 9
Complemente XML
n aceast conversaie:
XML DOM, inter a pentru manipularea documentelor (X)HTML i XML
XML Script-uri XML
XML Crea i prima pagin Web interactiv
XML Insera i o imagine ntr-un document XML
XML Crea i legturi i interogri n documen ele XML
XML Tem
XML
DOM, interfa pentru manipularea
documentelor (X)HTML i XML
DOM (Document Object Model) este o interfa, definit de World Wide
Web Consortium, care permite manipularea documentelor HTML i XML
n mod independent de toate limbajele de programare. Altfel spus, DOM
este un model de reprezentare la nivel de obiect a documentelor HTML
i XML i constituie principala interfa de programare a aplicaiilor Web.
DOM creeaz o ierarhie de obiecte sau mai exact un arbore ale crui
noduri reprezint obiectele documentului XML.
Aceste noduri sau obiecte ne furnizeaz metode (funcii) care permit
manipularea (sortare, transformare etc.) documentelor.
160
Remarc. Aceast prezentare este departe de a fi complet. DOM este un subiect prea
vast pentru a putea fi tratat integral n aceast lucrare. Pentru a explora DOM n
detalii, consultai lucrrile [2], [3], [5].
n figura 9.1 se prezint un exemplu de document XML reprezentat n
DOM, sub form ierarhic (figura 9.2).
<exemplu>
<body> Dou mere, dou pere! </body>
<exemplu>
DocumentNode Rdcina documentului
NodeList
ElementNode <exemplu>
NodeList
ElementNode <body>
NodeList
TextcharacterDataNode Dou mere, dou pere!
Remarci:
Documentul conine mai multe tipuri de noduri (nodul rdcin este
obligatoriu!).
Interfaa NodeList este prezent chiar dac documentul nu posed dect un
singur nod.
Interfeele se prezint sub dou forme [1]:
interfe e fundamentale Node, Document, DOMImplementation,
DocumentFragment, NodeList, Element, NamedNodeMap, Attr,
CharacterData, Text, Comments, DOMException;
BIBLIOGRAFIE
1. Kay Ether, Alan Houser, XML Web Training, OEM, Collection Web
Training, Paris, 2002
2. Yannick Lejeune, Alexandre Pinnel, XML, e-Poche, MicroApplication,
2001, Paris
3. Floarea Nstase, Pavel Nstase, Tehnologia aplica iilor Web (XML, DOM,
ASP), Editura Economic, 2002, Bucureti
4. Michael J. Young, XML, tape par tape, Microsoft Press, Paris, 2001
5. R. Allen Wyke, Sultan Rehman, Brad Leupen, Manul de rfrence XML,
Microsoft, 2002