Sunteți pe pagina 1din 176

XML

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).

Limbaj Codul surs


HTML <P>nva s priveti dincolo de aparene!</P>

XHTML <p>nva s priveti dincolo de aparene!</p>

XML <paragraf>nva s priveti dincolo de
aparene!</paragraf>
Remarci:
n exemplul precedent sintaxa XHTML este judecat corect atunci
cnd exemplul HTML nu a fost considerat ca un document XHTML
bine format, i nu trebuie s fie analizat de un parser. Aceasta nu
nseamn c un navigator nu va face analiza documentului, nu-l va
interpreta i nu va identifica tag-ul care nu este bine format.
n cea mai mare parte a cazurilor, navigatoarele nu vor analiza
documentul XHTML ca pe un document XHTML ci mai degrab ca un
document HTML; eventual, ele vor analiza documentul XHTML ca un
document XML. Pentru moment putei folosi un singur parser pentru a
verifica erorile coninute de documentele dumneavoastr, nainte ca
acestea s fie gzduite de un server.

Figura 1.1
nchidei toate elementele
Toate elementele XML trebuie s conin, obligatoriu un tag de
deschidere i unul de nchidere. Acesta nu este cazul limbajului HTML, n

8
care mai multe elemente sunt definite cu tag-urile de nchidere
facultative.
Remarci:
n figura 1.1 (limbajul XHTML), elementul <p> conine tag-ul de
nceput (<p>), coninutul (date de tip caracter) i tag-ul de sfrit
(</p>).
n figura 1.1 (limbajul HTML), codul surs conine tag-ul de nceput
(<P>), coninutul propriu-zis (date de tip caracter) i opional tag-ul
de sfrit </P>.
n figura 1.1 (limbajul XML), elementul <paragraf> conine tag-ul de
nceput <paragraf>, coninutul (date de tip caracter) i tag-ul de
sfrit </paragraf>.
n limbajul HTML, singurul mod care-i permite navigatorului s deduc
situaia n care un paragraf s-a nchis este prezena unui alt element,
<P>, de exemplu. Deschiderea unui alt element sugereaz c
elementul precedent trebuie mai nti s fie nchis.
Spre deosebire de HTML, XHTML impune ca toate elementele s fie
nchise.

nchidei elementele vide
V mai amintii de cunotinele noastre mai vechi: <IMG> i <BR> pe
care le-ai utilizat n HTML? n XML, spre deosebire de HTML aceste
dou elemente trebuie nchise, dar fiind elemente vide (lipsite de
coninut), ele urmeaz o sintax special.
Iat cum inserm o imagine, sigla.jpg n toate cele trei limbaje (figura
1.2).
Limbaj Codul surs
HTML <IMG src=sigla.jpg>

XHTML <img src=sigla.jpg />

XML <imagine source=sigla.jpg />
Conform regulilor de sintax XML, elementele vide trebuie s se nchid,
folosind una din metodele prezentate mai jos:
Figura 1.2
Metoda 1 nchidei tag-ul cu un spaiu i o bar oblic (vezi
figura 1.2);






9
Metoda 2 Adugai un tag de nchidere (Exemplu: <br>
</br>).
Remarc. V sugerm s utilizai prima metod, care v ofer o economie de spaiu i
de timp.

Utilizai ghilimelele pentru a delimita valorile atributelor
Limbajul HTML permite definirea fr ghilimele a valorilor atributelor. n
XML, XHTML regula este alta: toate valorile atributelor trebuie s fie
delimitate de ghilimele.
Iat cum delimitm valorile a trei atribute n limbajele: HTML, XHTML,
XML (figura 1.3).
Limbaj Codul surs
HTML <P align=center>nva s priveti dincolo de
aparene!

XHTML <p style=text-align:center>nva s priveti
dincolo de aparene!</p>

XML <mesaj prioritate=urgent>S nu-mi neli
niciodat credina!</mesaj>

Toate atributele trebuie s conin valori
Pentru ce mai mare parte a atributelor, aceast regul este destul de
simpl.
Iat cum definim valorile pentru atributul checked, care aparine
elementului <INPUT> n limbajele HTML i XHTML (figura 1.4).
Limbaj Codul surs
HTML <INPUT name=C1 type=checkbox id=C1
value=Java checked>

XHTML <input name=c1 type=checkbox id=c1
value=Java checked=checked />
Figura 1.3
Figura 1.4

10
Remarc. n limbajul HTML, sintaxa tag-ului <INPUT> este corect, dar n XHTML,
conform regulilor XML (toate atributele trebuie s conin valori) sintaxa nu este
corect. Nu ne rmne dect s definim atributul egal cu el nsui.

Elementele XML sunt case-sensitive
n XML caracterele mici sunt interpretate diferit de cele mari
(case-sensitive), ceea ce nseamn c va trebui s utilizai elementele i
atributele aa cum au fost ele scrise n DTD-ul (Document Type
Definition) asociat.
Dac decidei s nu utilizai un DTD, limbajul XML impune ntotdeauna
ca unui tag de deschidere s-i corespund un tag de nchidere. De
exemplu, tag-ul <P> nu este acelai cu tag-ul <p>.
Remarc. Nu exist nici-un motiv care ne poate obliga ca elementele i atributele
DTD-urilor s fie scrise cu minuscule. Dar, regula fiind stabilit, va trebui s-o aplicai n
documentele dumneavoastr XHTML i XML.

Imbricai corect elementele
n general, tag-urile sunt imbricate, ceea ce nseamn c un element
poate conine alte elemente. Tag-urile XML funcioneaz n acelai mod
ca i parantezele n matematic.
Regulile de imbricare sunt urmtoarele:
Fiecrui tag de deschidere trebuie s-i corespund un tag de
nchidere. Numele celor dou tag-uri trebuie s fie identice.
Tag-ul de nchidere al unui element fiu trebuie s precead
tag-ul de nchidere al printelui su. Altfel spus, un fiu trebuie
s fie nchis naintea printelui su.
Elementele imbricate sunt fii ai elementului printe.









11
Exemple de elemente HTML, XHTML, XML corect imbricate
HTML <P> Acesta este <B> venitul meu </B>!
XHTML <p> Acesta este <b> venitul meu </b> </p>!
XML <ntreprindere> TIMPURI NOI <cod> 2000 </cod>
</ntreprindere>
Exemple de elemente XML incorect imbricate
XML <ntreprindere> TIMPURI NOI <cod> 2000
</ntreprindere> </cod>
XML <rezultate> <victorii> 6 </rezultate> </victorii>

Reguli de validitate a documentelor XML
Regulile de sintax se nva i se aplic uor deoarece sunt foarte
simple dar i foarte stricte. Un document XML este bine format dac
respect toate notaiile i regulile structurale XML.
Dac un document XML bine format respect regulile unui DTD asociat
el se numete document valid. Atenie! Nu ntotdeauna un document
bine format are o structur valid!
Cele mai multe restricii de validitate sunt facultative; ele merit s fie
cunoscute chiar dac nu sunt necesare!

Utilizai un element rdcin!
Toate documentele XML trebuie s conin cel puin un element
rdcin. Aceast regul este foarte simpl. Elementul rdcin trebuie
s conin toate celelalte elemente ale paginii.
Remarc. n limbajul XHTML, elementul rdcin este elementul <html>. Poate, unii
dintre dumneavoastr i vor pune ntrebarea: de ce nu s-a schimbat elementul
rdcin <html> n <xhtml>?. Limbajul XHTML utilizeaz exact acelai vocabular ca
limbajul HTML. Aceast caracteristic nu poate dect s uureze efortul pe care l fac
parser-ele!

12
Un element rdcin este delimitat printr-un tag de deschidere plasat la
nceputul documentului i un tag de nchidere plasat la finele
documentului.
n figura 1.5 este prezentat tipul de date email (element rdcin) sub
form de structur arborescent.
email
to
from
date
subject
body
<email>
<to> </to>
<from> </from>
<date> </date>
<subject> </subject>
<body> </body>
</email>
n figura 1.6 este prezentat documentul XML, care descrie datele e-mail
(vezi figura 1.5) de o manier structurat.

Figura 1.5
Figura 1.6

Declaraia XML este facultativ
Dei declaraia xml este facultativ, consoriul W3C recomand folosirea
acesteia. Declaraia xml semnaleaz procesorului c documentul pe care
l prelucreaz este un document XML. Declaraia XML poate accepta trei
atribute: version, encoding i standalone (figura 1.7).






13

Remarci:
Declaraia xml utilizeaz caractere mici cu excepia valorii atributului
encoding (UTF 8).
ntruct nu exist dect o singur versiune XML i cum declaraia XML
este facultativ, ea poate fi abandonat. Totui, este puin probabil c
specificaia XML nu se va dezvolta. Cum interpretai declaraia <?xml
version=2.0>? Dac utilizai declaraia xml la nceputul
documentului, procesorul curent sau cel viitor vor tii, fr nici-o
ambiguitate cum s prelucreze documentul dumneavoastr.
O a doua versiune a limbajului XML a fost publicat dar ea nu
corecteaz dect erorile minore ale specificaiei 1.0; ea nu reprezint
modificri de coninut pentru standard. Titlul oficial al acestei versiuni
este XML 1.0 (A doua versiune).

Declaraia DOCTYPE este facultativ
Un document XML poate fi scris n dou maniere:
documente bine formate;
documente valide.

Figura 1.7
Documente XML bine formate
n figura 1.8 este prezentat un document bine format (o mai veche
cunotin a noastr!), care respect regulile de gramatic i de sintax
XML.

14

Dac deschidem acest document n Internet Explorer (versiunea 5.0 sau
superioar) se obine rezultatul afiat n figura 1.9.

Reguli:
Figura 1.8
Figura 1.9
Prima linie a acestui exemplu
<?xml version=1.0 encoding=ISO 8859 2?>
declar c documentul este scris n XML.
Valoarea atributului version nu poate fi n acest moment dect 1.0.
Atributul encoding se refer la definiia setului de caractere utilizat n
documentul XML.
Aceast linie trebuie scris cu caractere mici. Nu este admis nici-o
majuscul! n caz contrar, programul de verificare (parser) XML al
navigatorului va afia o eroare n acest caz documentul XML nu mai
este bine format.
Celelalte elemente XML au fost scrise cu tag-uri inventate de noi:
(<email></email>; <to></to>; <from></from>;
<date></date>; <subject></subject>; <body></body>.






15
Toate elementele XML trebuie s conin un tag de deschidere i un
tag de nchidere.
Elementele vide XML trebuie s se termine cu un spaiu urmat de o
bar oblic.
Pentru a delimita valorile atributelor XML utilizai ghilimelele.
Toate atributele XML trebuie s aib valori.
Toate documentele XML trebuie s aib cel puin un element
rdcin.
Declaraia XML este facultativ.
Tag-urile XML trebuie s fie imbricate n mod corect.
Numele tag-urilor pot conine: caractere alfanumerice (litere i cifre),
liniu (-), liniu de subliniere (_) i trebuie s conin cel puin o
liter.
Numele atributelor se scriu cu minuscule.
Spre deosebire de HTML, sfritul unui document XML nu este marcat
cu </xml>.
Comentariile XML au aceeai sintax ca i comentariile XHTML.
Un document bine format nu necesit un DTD (Document Type
Definition). Declaraia DOCTYPE este facultativ.

Documente XML valide
Un document XML valid este un document XML bine format care conine
n plus un DTD (Document Type Definition). Acest DTD definete
modelul documentului, adic structura tag-urilor. Un DTD integrat
ntr-un document XML poate fin intern sau extern documentului.

DTD intern
Dou sunt tag-urile care ne permit s definim n interiorul documentului
XML propria noastr structur: <!DOCTYPE> i <!ELEMENT>.
Tag-ul <!DOCTYPE> permite deschiderea unui bloc de definire a
tag-ului. Va trebui s dm un nume acestui bloc. Sintaxa (relum
exemplul anterior: email), este prezent n figura 1.10.
<!DOCTYPE email
[

]>
Figura 1.10

16
Numele poate conine litere, cifre (n afar de prima liter) i caracterul
de subliniere (underscore, caracterul _).
Tag-urile sunt apoi definite n interiorul parantezelor drepte. Tag-ul
<!ELEMENT> permite definirea unui tag. Sintaxa este urmtoarea:
<!ELEMENT nume_tag (coninut)>
unde,
nume_tag desemneaz numele tag-ului (cum indic numele su);
coninut specific la care tag (tag-uri) sau date este legat acest tag.
Astfel, pentru a defini elementul <email> care conine tag-urile: <to>,
<from>, <date>, <subject>, <body>, vom scrie:
<!ELEMENT email (to, from, date, subject, body)>.
Pentru a atribui o valoare de tip text tag-urilor: to, from, date, subject,
body introducei #PCDATA (Parser Character Data), figura 1.11.


Figura 1.11







17
DTD extern
Dac dorii s definii un fiier DTD extern (ex.dtd) va trebui s creai un
nou fiier (vezi figura 1.12).

Pentru a include fiierul ex.dtd n fiierul XML, este suficient s adugai
linia urmtoare:
<!DOCTYPE email SYSTEM ex.dtd>
Remarc. Cuvntul SYSTEM desemneaz faptul c fiierul este definit local. Dac utilizai
un DTD public, atunci va trebui s nlocuii SYSTEM cu cuvntul PUBLIC.
Fiierul complet mail.xml este prezentat n figura 1.13.

Figura 1.12
Figura 1.13
Aplicaie
n figura 1.14 este prezentat un document XML bine format i valid
(client.xml), care definete tipul de date client (element rdcin).
Comentai declaraia DOCTYPE, care este obligatorie.

18

Figura 1.14

XML
Tem

Testai-v cunotinele
1. Care sunt cele 10 obiective ale limbajului XML?
2. Cum este utilizat XML-ul n practic?
3. Care sunt regulile de sintax XML pe care le-ai reinut?
4. Care dintre elementele de mai jos sunt case-sensitive:
HTML;
XHTML;
XML.
5. Ce este un document bine format?
6. Ce este un document valid?

Vizitai site-urile
http://www.w3.org/XML/
http://msdn.microsoft.com/xml/default.asp
http://www.oasis open.org/cover/xml.html#applications



Conversaia 2

Creai documente XML bine formate


n aceast conversaie:
XML Structura unui document XML bine format
XML Crea i elemente XML cu tipuri de con inut diferite
XML Metode i instrumente pentru crearea documentelor XML bine
formate
XML Tem


XML Structura unui document XML bine format

Un document bine format satisface un minimum de criterii de
conformitate XML. Atunci cnd creai un document XML bine format,
putei ncepe direct prin a aduga elementele de care avei nevoie i prin
a introduce datele documentului, exact ca la crearea unei pagini Web n
(X)HTML. Dup cum ai remarcat n conversaia anterioar, ntr-un
document XML dumneavoastr suntei aceia care inventai propriile
elemente n loc de a utiliza elementele predefinite. V asigurm c nu
vei avea nici o problem de prelucrare sau de afiare a unui document
XML bine format n Microsoft Internet Explorer.
Dup cum ai putut constata (vezi Conversaia 1), un document XML
conine dou pri principale:

20
prologul;
elementul rdcin (numit i elementul document).
Pentru a nelege mai bine anatomia unui document XML, vom face
referiri la documentul mail.xml, o mai veche cunotin de-a noastr
(figura 2.1).
S ncepem cu prologul!

Prologul cuprinde primele dou linii (figura 2.2).

Prima linie este declaraia XML (opional). Dac v hotri s includei
totui o declaraie XML, ea trebuie s apar la nceputul documentului.
Cea de-a doua linie a prologului este un comentariu. Comentariile sunt
recomandate n msura n care acestea faciliteaz citirea i nelegerea
codului surs.
Remarc. Prologul poate conine de asemenea i urmtoarele elemente opionale:
un DTD (Document Type Definition), care definete tipul i structura
documentului. Atunci cnd este utilizat, DTD-ul trebuie s fie plasat dup
declaraia XML;
o linie alb de spaii;
una sau mai multe instruciuni de prelucrare.
Figura 2.2
Figura 2.1






21
Elementul rdcin. Cea de-a doua parte a unui document XML
corespunde unui element unic desemnat ca element rdcin sau
element document, care poate conine alte elemente.
ntr-un document XML, elementele indic structura logic a
documentului i conin informaiile corespunztoare. Un element tip
cuprinde un tag de deschidere, coninutul elementului i tag-ul de
nchidere. Coninutul elementului poate fi constituit din date de tip
caracter, alte elemente imbricate (nested), sau combinaii ale celor
dou.
Remarc. ntr-un document XML textul este un melange de tag-uri i de date
de tip caracter sau date de tip text.
n exemplul nostru (documentul mail.xml), elementul rdcin este
email. Tag-ul su de deschidere este <email>, tag-ul de nchidere este
</email>, iar coninutul su este alctuit din 5 elemente: <to>,
<from>, <date>, <subject>, <body> (figura 2.3).

Remarci:
Numele care apare n tag-ul de deschidere i n tag-ul de nchidere ale unui
element se mai numete i tipul de element.
Fiecare din elementele inserate n elementul email (to, from, date, subject,
body) nu conin dect date de tip caracter.
Elementul rdcin din cadrul unui document XML este similar elementului
BODY din cadrul unei pagini (X)HTML, cu singura deosebire c putei s-i
atribuii orice nume legal.

Figura 2.3

22
Elemente vide
Putei introduce de asemenea n documentul dumneavoastr un element
vid, altfel spus un element fr coninut.
Putei crea un element vid plasnd tag-ul de nchidere imediat dup
tag-ul de deschidere (figura 2.4).
<hr> </hr>
Sau, putei utiliza tag-ul specific elementului vid (figura 2.5).
<hr />
Remarci:
Cele dou notaii au aceeai semnificaie.
Putei utiliza un element vid pentru a indica aplicaiei XML efectuarea unei
aciuni sau afiarea unui obiect.
Un element vid poate stoca informaie utiliznd atribute XML.

Adugai atribute elementelor XML
Putei insera unul sau mai multe specificaii de atribut n tag-ul de
deschidere al unui element sau n tag-ul elementului vid. O specificaie
de atribut este o pereche nume-valoare care este asociat unui element.
n figura 2.6 este prezentat un exemplu de atribut (vnzare) cruia i s-a
atribuit valoarea RODIPET.
<pret vanzare=RODIPET> 30 euro </pret>
n figura 2.7 atributul sursa indic numele fiierului care conine
imaginea pe care dorim s-o afim.
<sigla sursa=Droopy.gif />
Figura 2.4
Figura 2.5
Figura 2.6
Figura 2.7







23
Remarci:
Atributele reprezint o alternativ la inserarea informaiilor ntr-un document.
Utilizarea atributelor permite obinerea unui mai mare grad de flexibilitate n
procesul prelucrrilor.
n figura 2.8 sunt prezentate cteva exemple de specificaii de atribute
ilegale. Fr comentarii!
<curs tip= seral >
<album tip=<CD>>
<magazin tip=C&A>

Un document XML cu structur minimal
Dup cum am precizat, elementele din prologul unui document XML bine
format sunt toate opionale. n consecin, prologul este el nsui
opional, iar documentul din figura 2.9 (document cu structur
minimal) conine un singur element <logo>, care respect norma XML
pentru ca acesta s fie un document bine format.

n figura 2.10 se prezint rezultatul vizualizrii documentului n Internet
Explorer.

Figura 2.8
Figura 2.9
Figura 2.10


24
Aplicaie
Creai un document XML cu structur minimal, pornind de la secvena de
cod (X)HTML din figura 2.11.

n figura 2.12 se prezint codul surs XML, n care tag-urile imaginate
de noi sunt semnificative, nu creeaz confuzii i descriu coninutul lor.

Remarci:
Figura 2.11
Figura 2.12
Acest document simplu XML poate fi citit i neles fr a utiliza un program
specializat!
Tag-urile <calendar>, datadenceput>, <datadesfrit>, <costuri>, <suma>
imaginate de noi furnizeaz informaii privind datele (de tip caracter).
Numele tag-urilor trebuie s respecte urmtoarele reguli:






25
numele unui tag trebuie s nceap cu o liter (majuscul sau
minuscul) sau cu o liniu de subliniere;
numele unui tag poate s conin: litere, cifre, liniue de subliniere,
linii i puncte;
numele unui tag nu trebuie s conin spaii;
numele unui tag nu trebuie s nceap cu XML, xml, XmL, xML, xMl,
xmL, XMl;
numele tag-urilor sunt limitate numai la caractere latine;
numele unui tag poate conine caracterul (:) numai n construcia
special, spaiu de nume.
n XML, un document bine format trebuie s respecte regula: fiecrui tag de
nceput i corespunde un tag de sfrit.
XML permite utilizarea elementelor fr coninut (vide).
Pentru a defini relaiile ntre elemente, XML folosete urmtoarea
terminologie:
elementul rdcin;
elementul printe;
elementul fiu;
elementul frate.
n exemplul nostru (figura 2.12), <fraza> este elementul rdcin;
<descriere> este elementul printe al elementelor <calendar> i <costuri>;
<calendar> i <costuri> sunt elemente fiu ale elementului <descriere>;
<calendar> i <costuri> sunt elemente frai.
n structura unui document XML numai elementul rdcin nu are un element
printe. Un element fiu aparine unui singur element printe.

Regulile de aur ale documentelor XML bine formate
Documentul mail.xml pe care l-am analizat anterior este un exemplu de
document XML bine format care respect regulile de aur ale
documentelor XML bine formate.
Prezentm n continuare cteva din regulile care stau la baza crerii unui
document XML bine format.
Documentul trebuie s conin un element de cel mai nalt nivel
(elementul rdcin sau elementul document). Toate celelalte
elemente trebuie s se gseasc n interiorul elementului
rdcin.
Elementele trebuie s fie corect imbricate.

26
Fiecare element trebuie s conin un tag de deschidere i un
tag de nchidere, care trebuie s poarte acelai nume.
Numele tag-urilor nu trebuie s conin spaii, ci numai litere,
cifre (nu n prima poziie) i liniue de subliniere (_).
Elementele XML sunt case-sensitive.
Numele tag-urilor elementelor vide trebuie s se termine cu o
bar oblic (/).
Valorile atributelor trebuie s fie plasate ntre ghilimele sau
apostrofuri.
Dac dumneavoastr respectai aceste reguli (pe care vi le reamintim ori
de cte ori avem ocazia s-o facem), documentele XML pe care le vei
realiza vor fi cu siguran bine formate i vor fi corect interpretate de
browser-e ct i de alte programe.

Identificai i eliminai erorile de sintax XML
nainte ca browser-ul Microsoft Internet Explorer s afieze documentul
dumneavoastr XML, parser-ul su XML (analizor sintactic) analizeaz
coninutul documentului. Dac parser-ul detecteaz o eroare, browser-ul
afieaz o pagin care conine un mesaj de eroare, fr a ncerca s
afieze documentul. Microsoft Internet Explorer 5 (sau o versiune
superioar) va afia pagina de erori, pe care documentul XML trebuie s
o lege sau nu la o foaie de stiluri.
Remarci:
Procesorul XML este modulul software care citete documentul XML i
furnizeaz accesul la coninutul documentului. El obine acest acces cu
ajutorul unui modul software numit aplicaie, care manipuleaz i afieaz
coninutul documentului.
Atunci cnd afiai un document XML ntr-un browser (Microsoft Internet
Explorer 5 sau o versiune superioar), browser-ul furnizeaz procesorul XML
i cel puin o parte a aplicaiei (termenul de aplicaie pe care-l utilizm este
diferit de o aplicaie XML sau vocabular pe care am definit-o n Conversaia 1).






27
Atunci cnt deschidei un document XML direct n Microsoft Internet Explorer
5 (sau o versiune superioar), parser-ul verific numai dac documentul este
bine format i afieaz un mesaj n caz de eroare. El nu verific dac
documentul este valid!
Aplicaii
Verificai dac urmtoarele documente sunt bine formate. Identificai i
eliminai erorile de sintax.
a) Un document (figura 2.13) care nu este bine format!

Remarc. Afiai documentul XML ntr-un browser.
b) Un document (figura 2.14) care nu este bine format.

Remarc. Afiai documentul XML ntr-un browser.
c) Un document (figura 2.15) care nu este bine format!

Remarci:
Figura 2.14
Figura 2.15
Figura 2.13
Un element care conine unul sau mai multe elemente imbricate (carte, n
exemplul nostru) se numete element printe. Un element care este coninut
direct n elementul printe (titlu, n exemplul nostru) se numete element fiu
sau sub-element sau element inserat n elementul printe.
Afiai documentul XML ntr-un browser.

28
d) Un document (figura 2.16) care nu este bine format!

Remarc. Afiai documentul XML ntr-un browser.

Creai elemente XML cu tipuri de coninut
diferite
Coninutul unui element este textul situat ntre tag-ul de nceput i
tag-ul de sfrit al acestuia. Putei include diferite tipuri de item-uri n
coninutul unui element, dup cum urmeaz:
elemente imbricate (nested);
date de tip caracter;
referine de entiti generale sau referine de caractere;
seciuni CDATA;
instruciuni de prelucrare;
comentarii.

XML
Figura 2.16
Elemente imbricate. n figura 2.17 elementul adresa conine 5
elemente imbricate.







29

Date de tip caracter. Datele de tip caracter reprezint textul
corespunztor coninutului informativ al unei element. n figura 2.18
coninutul elementului titlu l reprezint datele de tip text (Pdurea
spnzurailor).

n figura 2.19 este ilustrat un exemplu de coninut al unui element care
cuprinde att date de tip text (Calea Victoriei) ct i un element imbricat
(subtitlu).

Remarc. Atunci cnd adugai text unui element putei insera orice caracter cu excepia
urmtoarelor caractere (speciale): < (simbolul mai mic), & (simbolul ampersand), ]]>
(ir de caractere).
Figura 2.17
Figura 2.18
Figura 2.19

30
Referine de entiti generale. n figura 2.20 este prezentat un
exemplu care conine o referin de entitate general intern n vederea
afirii copyright-ului.

Figura 2.20
Referine de caractere. n figura 2.21 este prezentat un exemplu care
conine o referin de caractere n vederea afirii simbolului de
copyright.

Seciuni CDATA. O seciune CDATA este un bloc de text n interiorul
cruia putei insera liber, orice caracter dorii cu excepia irului de
caractere ]]>.
n figura 2.22 este prezentat un exemplu de seciune CDATA plasat n
elementul <mesaj>.

Figura 2.21
Figura 2.22
Instruciuni de prelucrare. Rolul unei instruciuni de prelucrare este
de a furniza o informaie pe care procesorul XML s o poat trimite unei






31
aplicaii. n figura 2.23 este prezentat un exemplu de instruciune de
prelucrare XML.

Figura 2.23
Remarci:
Instruciunea de prelucrare din prolog creeaz o legtur ctre o foaie de
stiluri pentru a afia datele de tip caracter ale unui document XML.
Folosii instruciuni de prelucrare pentru a preciza navigatorului forma de
prelucrare sau de afiare a documentului.
Comentariile. Un comentariu reprezint o adnotare n documentul
dumneavoastr XML pe care ns programatorul o poate folosi (citi) dar
procesorul XML o ignor.
Remarci:
Un comentariu debuteaz cu <!-- i se termin cu caracterele -->. Putei
introduce caracterele speciale <, >,& mai puin linia dubl -- (figura 2.24).

Putei insera un comentariu la finele elementului rdcin (figura 2.25).

Figura 2.24
Figura 2.25
n figura 2.26 se prezint un exemplu de comentariu ilegal.

32


Metode i instrumente pentru crearea
documentelor XML bine formate
Documentele XML bine formate pot fi create cu ajutorul mai multor
instrumente (soft), multe dintre acestea fiind gratuite (!). De menionat
c toate instrumentele i metodele recomandate prezint avantaje i
dezavantaje, de care va trebui s inei seama n alegerea pe care
urmeaz s o facei.
Pentru a crea documente XML bine formate, folosii una din metodele
prezentate mai jos:
Metoda 1 Editorul de texte Notepad;
Metoda 2 Editorul XML Notepad
sau,
Editorul XML Spy;
Metoda 3 Programe care genereaz fiiere XML;
Metoda 4 Documente XML;
Metoda 5 Baze de date;
Metoda 6 Aplicaii care genereaz date sub forma unor
documente XML.
Iat cum crem cu editorul de texte Notepad, un document XML bine
format, care conine urmtorul mesaj e-mail: Trimitei script-urile (vezi
Conversaia 1).

XML
Figura 2.26






33
Metoda 1 Editorul de exte Notepad t
1. Tastai, cu litere mici, prima linie a documentului (figura 2.27).

Remarci:
Prima linie a documentului este o declaraie XML.
Declaraia <?xml version=1.0 ?> indic browser-ului c se afl n
faa unui document XML.
Declaraia poate conine i alte informaii, dar forma cea mai simpl
este cea indicat. Cu siguran, W3C va propune n viitor noi
modificri.
Declaraia poate preciza de asemenea i setul de caractere utilizat
(atributul encoding): <?xml version=1.0 encoding=ISO-8859-1
?>.
Setul de caractere ISO-8859-1, nc numit ISO-Latin 1 conine
caracterele accentuate ale limbii franceze, nlocuind setul UTF-8
utilizat n mod implicit. Setul UTF-8 reprezint caracterele ASCII
standard pe 1 octet i caracterele accentuate pe 3 octei.
Declaraia XML trebuie s utilizeze caractere mici, exceptnd valoarea
atributului encoding (ISO-8859-1).
2. Introducei comentariul Prima aplicaie XML (figura 2.28).

Remarci:
Comentariile XML sunt similare comentariilor HTML.
Comentariile nu necesit tag-uri de nchidere.
Lungimea comentariilor nu este limitat.
Figura 2.27
Figura 2.28
3. Tastai <email>, apsai de cteva ori tasta Enter dup care
tastai </email> (figura 2.29).

34

Remarci:
<email> este elementul rdcin.
<email> </email> delimiteaz tipul general de date.
Putei da orice nume elementului rdcin, dar nu uitai c acesta
trebuie s fie semnificativ!
4. Introducei ntre tag-urile <email> </email> tag-urile
<to>, <from>, <date>, <subject>, <body> care descriu
structura mesajului (tipul de date) e-mail (figura 2.30).

Remarc. Modelul general al unui exemplar (instance, n limba englez) specific
tipului de date e-mail este:
<email>
<to> </to>
<from> </from>
<date> </date>
<subject> </subject>
<body> </body>
</email>
5. Salvai fiierul n folder-ul My Documents, sub numele mail.xml
(figura 2.31).
Figura 2.29
Figura 2.30






35

Remarc. Dac editorul dumneavoastr de texte adaug extensia .txt, plasai
numele fiierului ntre ghilimele (mail.xml).
6. Afiai documentul XML n Microsoft Internet Explorer (figura
2.32).

Figura 2.31
Figura 2.32

36
Remarci:
Dac fiierul dumneavoastr nu a fost afiat corect sau ai obinut un
mesaj de eroare (!), verificai codul XML n editorul de texte
(declaraia XML se gsete pe prima linie?; tag-urile XML au fost
introduse corect?; tag-urile de deschidere au fost scrise corect?;
documentul a fost corect salvat?), corectai erorile, salvai din nou
fiierul i rencrcai-l n browser.
Putei cere navigatorului s afieze un tag particular cu un anume font,
size, color etc. Pentru aceasta, fie utilizai foile de stiluri CSS, fie
transformai tag-urile XML n HTML cu ajutorul unui limbaj XSLT (XML
Stylesheet Language Transformation).
Metoda 2 Editorul XML Notepad
1. Deschidei aplicaia XML Notepad, via Start Programs
Microsoft XML Notepad Microsoft XML Notepad (figura 2.33).

2. Schimbai numele elementului rdcin n email (figura 2.34).

Figura 2.33
Figura 2.34






37
3. Schimbai numele elementului fiu Child_Element n elementul
fiu to (figura 2.35).

4. Introducei n fereastra Values valoarea pentru elementul to
(figura 2.36).

5. Inserai un nou element via Insert Element (figura 2.37).

Figura 2.35
Figura 2.36
Figura 2.37

38
6. Introducei numele acestui element, from (figura 2.38).

7. Introducei valoarea elementului (figura 2.39).

8. Repetai paii 5, 6, 7 pentru elementele date, subject i body
(figura 2.40).

Figura 2.38
Figura 2.39
Figura 2.40






39
9. Salvai documentul cu numele email n folder-ul My Documents
(figura 2.41).

10. Afiai documentul XML n Microsoft Internet Explorer
(versiunea 5 sau o versiune superioar), figura 2.42.

Figura 2.41
Figura 2.42



Metoda 2 XML Spy (http://www.smlspy.com)
Iat cum crem acelai document e-mail cu XML Spy
(http://www.xmlspy.com).
1. Deschidei aplicaia XML Spy, via Start Programs XML Spy
Suite XML Spy IDE (figura 2.43).

40

2. Creai un nou document via File New (figura 2.44).

Remarc. Se deschide fereastra Create new document.
Figura 2.44
Figura 2.43
3. n fereastra Create new document alegei tipul de document
dorit, iar apoi apsai butonul OK (figura 2.45).






41

Remarc. Se creeaz un nou document XML (figura 2.46).

Figura 2.45
Figura 2.46
4. Adugai un nou element via XML Append Element (figura
2.47).

42

5. Introducei numele elementului email (figura 2.48).

Figura 2.47
Figura 2.48
6. Pentru acest element, care este elementul rdcin, introducei
elementul fiu (figura 2.49).






43

7. Introducei numele i atributul acestui element (figura 2.50).

Figura 2.49
Figura 2.50

44
8. Adugai i celelalte elemente, via XML Append Element
(figura 2.51).

9. Introducei numele elementelor i atributele lor (figura 2.52).

Figura 2.51
Figura 2.52






45
10. Salvai documentul cu numele email1 n folder-ul My
Documents (figura 2.53).

11. Afiai documentul XML n Microsoft Internet Explorer
(versiunea 5 sau o versiune superioar), figura 2.54.

Remarc. Pentru a afia n anumite condiii (pe care le putei impune)
documentul XML ntr-un browser, folosii metodele prezentate mai jos.
Figura 2.53
Figura 2.54
Metoda 1 Utilizai foile de stiluri CSS;
Metoda 2 Transformai elementele XML n HTML nainte de a le afia.
n continuare, descriem pe scurt caracteristicile celorlalte metode (3, 4,
5, 6) de creare a documentelor XML.



46
Remarci:
Programele capabile s nregistreze datele n format XML sunt din ce
n ce mai numeroase: Microsoft Office, PAO etc. Aceste programe
genereaz direct fiiere XML, pe care apoi le putei consulta i
modifica cu orice editor de texte sau editor XML (Metoda 3).
Este normal, ca odat cu generalizarea formatului XML tot mai muli
utilizatori s doreasc s utilizeze acest tip de document, sortnd,
extrgnd informaii, personaliznd afiarea acestora. Limbajul XSLT
este un limbaj creat pentru acest scop: sortare, selecie i accesare
date XML (Metoda 4).
Exist numeroase similitudini ntre documentele XML i bazele de
date. n cele dou cazuri, datele sunt nregistrate sub o form
structurat permind efectuarea a numeroase prelucrri (sortri,
selecii, manipulri, interogri). Unul din marile avantaje privind
legtura ntre bazele de date i documentele XML este productivitatea.
Dac dorii s actualizai baza de date i s afiai datele modificate,
ctigul de timp este apreciabil n raport cu metoda clasic
(actualizarea separat a bazei de date i a listelor cu tranzacii; cazul
unui catalog de produse, de exemplu) Metoda 5.
Datorit sintaxei simple a XML-ului se pot scrie uor aplicaii care s
genereze datele sub forma unor documente XML, urmnd ca aceste
date s poat fi exportate sub diferite forme (Metoda 6).



















47

Tem


XML
Testai-v cunotinele
1. Descriei n XML urmtoarele structuri de date (figura 2.55).

2. Creai documentul XML din figura 2.55 utiliznd una din metodele
prezentate mai jos:
Metoda 1 Utilizai un editor de texte (Notepad);
Metoda 2 Utilizai un editor XML (XML Notepad, XML Spy).
3. Cum putei afia un document XML ntr-un browser?

Figura 2.55
Vizitai site-urile
http://www.w3.org/AudioVideo/
http://www.w3.org/TR/SVG/
http://www.w3.org/TR/2000/REC-xml-20001006

r



,

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,
&#169 pentru caracterul ) sau o referin de entitate general
predefinit (exemplu &lt; 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
&amp; & &#38;
&lt; < &#60;
&gt; > &#62;
&apos; &#39;
&quot; &#34;
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 &amp; pentru a insera caracterul special &.
1. nlocuii caracterul & cu referina la entitatea predefinit &amp;
(figura 3.6).

Figura 3.6








53
Remarci:
Referina la entitatea predefinit &amp; 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 &#169; 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>&lt; fatalitate><titlu>
<produs compania=C&amp;A>bluz var<produs>
<!ENTITY titlu c1 &quot; Kit &quot; 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;
&amp;
&lt;
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.

Pentru a putea utiliza un spaiu de nume trebuie s-l declarai explicit


(figura 5.20).

Figura 5.20
unde,
spatiu-nume1 reprezint spaiul de nume utilizat
pentru numirea elementului nume1;
xmlns= reprezint declaraia unui spaiu de
nume;
http://www.domeniu1.com reprezint un identificator unic
Remarci:
Dac un element XML poart numele unui element HTML (IMG, A, HR etc.) i
dac el se afl n spaiul de nume html, Internet Explorer 5 (sau o versiune
superioar) l va trata ca pe un element HTML i-l va insera n pagina afiat.
Dimpotriv, dac elementul nu este n spaiul de nume html, navigatorul l va
trata ca pe un element XML normal.
Spaiul de nume html este un spaiu de nume rezervat i specific, care se
declar n maniera urmtoare:
xmlns:html=http://www.w3c.org/TR/REC-html40.
n figura 5.21 se prezint un element XML vid i bine format care foreaz
navigatorul s insereze un element HTML IMG. Elementul are un nume

98
asociat unui spaiu de nume i conine de asemenea dou atribute; primul
atribut declar spaiul de nume iar al doilea atribut este un atribut standard
HTML (SRC).

Amintii-v c pentru a insera elemente HTML, documentul XML trebuie s
conin o foaie de stiluri ataat.


Tem

Figura 5.21

XML
Testai-v cunotinele
1. Prezentai etapele pe care trebuie s le parcurgei pentru a afia un
document XML n Microsoft Internet Explorer (versiunea 5 sau
superioar), cu ajutorul foilor de stiluri CSS.
2. Descriei procedura de creare a unui fiier de stiluri.
3. Descriei procedura de legare (asociere) a foilor de stiluri la un
document XML.
4. Explicai mecanismul de cascad n foile de stiluri CSS.
5. Cum definii proprietatea display?
6. Cum definii proprietatea font-style?

Vizitai site-urile
http://www.w3.org/TR/REC-CSS1
http://www.w3.org/TR/REC-CSS2
http://www.xml.com
http://www.w3.org/TR/REC-xml-names/

t t
t



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;

interfe e extinse CDATASection, DocumentType, Notation, Entity,


EntityReference, ProcessingInstruction.
Obiectul Node permite realizarea urmtoarelor operaii principale: parcurgerea
arborelui; obinerea de informaii dintr-un nod; actualizarea unui nod.
Atributele obiectului Node sunt urmtoarele: ownerDocument, nodeName,
nodeValue, nodeType, namespaceURI, prefix, localName, attributes,
previousSibling, nextSibling, parentNode, childNodes, firstchild, lastchild.
Metodele atributului Node sunt urmtoarele: supports (), cloneNode (),
hascildnodes, insertBefore (), appendchild (), replacechild (), removechild ().

Script-uri XML


XML
Figura 9.1
Figura 9.2
Creai i manipulai obiecte DOM XML cu Java Script
Dup cum ai putut constata, paginile Web pe care le-am construit
mpreun au fost statice! Cu siguran c v ateptai la mai mult!






161
n cele ce urmeaz vom nva s manipulm documentele XML,
utiliznd facilitile de script ale browser-ului Microsoft Internet Explorer
(versiunea 5 i superioar) pentru a crea, n sfrit pagini Web
interactive.
Remarc. Putei utiliza DOM, Java Script, CSS, DHTML pentru a crea pagini Web
interactive.
Java Script (nu Java!) este unul din limbajele cele mai vechi i cele mai
rspndite pentru prelucrarea paginilor Web. Java Script permite
asamblarea obiectelor DOM n paginile noastre Web.
Java Script este un limbaj uor de nvat i este recunoscut de toate
navigatoarele. Aceste caliti i nu doar att l recomand pentru
manipularea documentelor i a foilor de stiluri cu ajutorul DOM.
Remarc. Pentru mai multe detalii privind limbajul Java Script consultai urmtoarele
resurse:
Collection Web Training, Java Script Web Training, Paris, 2002
Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web (XML, DOM, ASP),
Editura Economic 2002, Bucureti.


Creai prima pagin Web interactiv


Construcia paginilor Web interactive este o activitate complex, care pe
lng tehnicile cunoscute mai face apel la tehnicile specifice DOM i Java
Script.
Iat cum procedm pentru a crea pagina Web interactiv intitulat
Campionatul Mondial de Fotbal 2002, pornind de la documentul XML
statistici.xml prezentat n figura 9.3.
Remarc. Pentru realizarea acestei aplicaii am folosit lucrarea: Kay Ether, Alan Houser,
XML Web Training, OEM, Collection Web Training, Paris 2002, paginile 258 259.

XML

162

Remarc. Pentru a putea exemplifica execuia aplicaiei, am schimbat ordinea n
clasament a celor trei echipe.
1. Precizai funciunile paginii Web.
Pagina Web interactiv trebuie s asigure urmtoarele funciuni:
Figura 9.3
afiarea rezultatelor ntr-un tabel HTML;
sortarea tabelului n funcie de clasament;
sortarea tabelului n ordine alfabetic, dup numele echipelor
sau n funcie de clasament, executnd clic pe titlul coloanei
corespunztoare.
2. Iniializai obiectele reprezentnd documentul surs XML i foaia
de stiluri XSLT (figura 9.4).






163

Remarci:
Numele obiectelor xslStyleSheet i xmlSource sunt nume de variabile
arbitrare.
document.XSLDocument reprezint foaia de stiluri XSLT iar
document.XMLDocument reprezint documentul XML.
Navigatorul ncarc documentul XML i foaia de stiluri XSLT n momentul n
care script-ul este executat.
Codul JavaScript a fost inserat direct n foaia de stiluri XSLT n seciunea
CDATA.
Cu instruciunea <xsl:comment> codul JavaScript va fi comentat n fiierul
rezultant.
Codul din figura 9.5:
<script>
<xsl:comment>
<![CDATA[
Cod JavaScript

]]>
Figura 9.4
va genera urmtorul rezultat (figura 9.6):
<script>
<!--
Cod JavaScript
-->
</script>
Figura 9.5
Figura 9.6
3. Manipulai obiectele DOM. Utilizai metoda selectSingleNode
(figura 9.7).



164

Figura 9.7
Remarci:
Odat create obiectele care reprezint documentele, ele pot fi utilizate pentru
a manipula aceste documente. Pentru aceasta este suficient de a utiliza una
sau mai multe metode (metoda este un termen al programrii orientate obiect
i are aproximativ aceeai semnificaie ca i o funcie).
Obiectul XSLDocument, care reprezint foaia de stiluri posed o metod
numit selectSingleNode care permite selectarea unui element sau a unui
atribut (sau nc un alt tip de nod, cum ar fi un comentariu sau o instruciune
de prelucrare). Aceast metod ia n considerare un singur argument: drumul
de acces ctre nodul care trebuie s fie selectat.
Instruciunea urmtoare selecteaz atributul numit select al elementului
<xsl:sort> al foii de stiluri.
4. Creai o funcie JavaScript pentru a modifica atributul select al
elementului <xsl:sort> (figura 9.8).

Figura 9.8






165
Remarci:
Funcia display(coloana) are un singur argument numit coloana, unde coloana
poate primi una din valorile: echipa sau clasament pe care le folosim n
operaia de sortare.
Metoda nodeValue permite modificarea valorii lui sortColoana. Vom utiliza
aceast metod pentru a determina criteriul de sortare.
Obiectul xmlSource.documentElement posed o metod numit
transformNode care primete ca argument numele obiectului corespunztor
foii de stiluri. Noi apelm aceast metod cu xslStylesheet pentru a reaplica
foaia de stil modificat.
Pentru a afia datele, vom utiliza DOM-ul plasnd rezultatele ntr-un obiect
numit clasament. DOM HTML Microsoft posed o metod innerHTML care
permite modificarea unei poriuni a codului HTML al unei pagini. n acest
mod, obiectul clasament va conine rezultatele.
5. Inserai tag-ul <div id=clasament/> n fiierul HTML rezultant
(figura 9.9).

Figura 9.9
6. Apelai funcia de afiare display, declarnd mai nti o clas
.active care transform pointer-ul ntr-un icon de tip mnu,
(figura 9.10) adugnd dup aceea cmpurilor Echipa i
Clasament un gestionar de evenimente onclick (figura 9.11).

Figura 9.10



166

Remarci:
De fiecare dat cnd utilizatorul va executa clic pe Echipa sau Clasament,
funcia display va fi apelat cu argumentul corespunztor.
Atunci cnd vom aplica unui element clasa active, pointer-ul se va modifica de
fiecare dat cnd el va fi plasat pe acel element.
7. Realizai programul complet. n figura 9.12 se prezint foaia de
stiluri XSLT care conine codul JavaScript.

Figura 9.11
Figura 9.12






167

8. Afiai documentul (statistici.xml) n Microsoft Internet Explorer
(versiunea 5 sau o versiune superioar), figura 9.13.

Figura 9.12
(continuare)
Figura 9.13

168
9. Testai rezultatul. Executai clic pe Echipa (figura 9.14).

Remarc. Browser-ul afieaz documentul dinamic cu datele sortate dup
numele echipei (figura 9.15).





Figura 9.14
Figura 9.15






169
10. Testai rezultatul. Executai clic pe Clasament (figura 9.16).

Remarc. Browser-ul afieaz documentul dinamic cu datele sortate dup clasament
(figura 9.17).

Figura 9.16
Figura 9.17




170


XML
Inserai o imagine ntr-un document XML
Codul care permite inserarea imaginilor ntr-un document XML este mult
mai complex dect cel utilizat n (X)HTML. n XML va trebui s modificai
DTD-ul pentru ca tipurile de imagini utilizate s fie acceptate.
Iat cum procedm pentru a aduga un element imagine (img n HTML)
ntr-un DTD (excursie.dtd) [1].
1. Definii un element img ntr-un DTD ncepei cu <!ELEMENT,
adugai numele elementului i terminai cu EMPTY> (figura
9.18).

Figura 9.18
Remarci:
Elementele vide sunt declarate prin cuvntul cheie EMPTY.
Declaraia <!ELEMENT img EMPTY>) a fost inclus n DTD pentru a valida
documentul XML care conine un element vid, de forma: <img/>.
Navigatoarele afieaz imaginile dintr-un document HTML datorit tag-ului
img.
n XML nu se ntmpl acelai lucru. Navigatoarele nu recunosc tag-ul img
inclus ntr-un document XML. n consecin, putei numi cum dorii acest tag:
img, grafic, poz, foto etc. Am preferat img pentru a nelege mai bine
procedura.
2. Adugai un atribut pentru a preciza calea de acces la imagine
(figura 9.19).






171

Figura 9.19
Remarci:
Noi am utilizat atributul source (pentru a nelege mai bine procedura).
Dumneavoastr putei folosi orice nume dorii!
Tipul de atribut ENTITY definete referina la datele binare externe (imagini).
Valoarea unui astfel de atribut nu este analizabil.
V mai amintii de cuvntul cheie #REQUIRED! El semnific faptul c atributul
trebuie s fie ntotdeauna prezent. De fiecare dat cnd vei utiliza tag-ul img,
va trebui s indicai o valoare pentru atributul source pentru a preciza calea
de acces ctre imagine.
Definirea unei entiti n DTD nu constituie dect jumtate din ceea ce
avem de fcut! n continuare, va trebui s definim o notaie (NDATA)
pentru formatele de imagine GIF, JPEG, PNG .a.m.d.
Iat care este procedura pe care trebuie s-o urmai pentru a crea o
notaie.
1. Definii entitatea (ENTITY) imagine ntr-un DTD dup
cuvntul cheie <!ENTITY indicai numele (sigla) entitii (figura
9.20), apoi SYSTEM i calea de acces; introducei n continuare
NDATA i numele utilizat n notaie (GIF, JPEG etc.).

Figura 9.20

172
2. Definii (n DTD) notaia (NOTATION) dup entitatea care o
utilizeaz (figura 9.21).

Figura 9.21
Remarci:
DTD-urile externe private sunt identificate prin cuvntul cheie SYSTEM.
Datele (fiierele) externe semnific faptul c dumneavoastr referii fiiere
non-XML n documentele pe care le-ai creat. Dac facei referire la un fiier
GIF/JPG, dumneavoastr utilizai un tip de date externe.
Acum, dup ce ai definit notaiile n DTD, putei s le utilizai n
documentele dumneavoastr XML.
Iat cum adugm codul necesar pentru a insera o imagine ntr-un
document XML (figura 9.22).

Figura 9.22
Remarc. n XML toate tag-urile elementelor vide trebuie s se termine cu /, contrar
sintaxei HTML. Nu uitai bara oblic!
Aplicaie
Inserai ntr-un document XML (sigla.xml) sigla societii LUMINA BLND.
n figura 9.23 este prezentat DTD-ul aplicaiei (sigla.dtd).






173

n figura 9.24 este prezentat documentul sigla.xml.

n figura 9.25 este afiat rezultatul.

Remarci:
Dei disponibil, fiierul sigla.jpg nu este afiat n browser.
Pentru afiarea siglei societii LUMINA BLNDA (sigla.jpg) utilizai XSLT.
n figura 9.26 este prezentat documentul sigla.xsl.
Figura 9.23
Figura 9.24
Figura 9.25

174


n figura 9.27 este afiat rezultatul n browser-ul Internet Explorer.

Remarc. SVG (Scalable Vector Graphics) este un vocabular standard XML care permite
crearea imaginilor. Imaginile SVG se integreaz perfect n documentele XML.
Pentru crearea i afiarea imaginilor avei nevoie de un soft dedicat (Adobe SVG
Viewer, Adobe Illustrator 9 etc.).
Figura 9.26
Figura 9.27






175
Pentru mai multe detalii privind standardul SVG vizitai site-ul:
http://www.w3.org/TR/SVG.


Creai legturi i interogri n documentele
XML
Creai legturi cu XLINK (XML Linking Language)
Trebuie s recunoatem c legturile HTML sufer de urmtoarele
limitri:
sunt unidirecionale;
nu pot fi direcionate dect ctre documente HTML;
trebuie mereu activate manual;
nu pot fi obinute dect cu elementul <a>;
nu pot fi direcionate dect ctre un document ntreg sau ctre
un punct al unui document sau un reper definit n prealabil.
Poate pentru moment multe dintre aceste limitri nu v deranjeaz, dar
cu siguran v vei schimba opinia atunci cnd vei cunoate facilitile
oferite de XLink. XLink a fost creat pentru a permite utilizarea legturilor
mult mai puternice dect cele HTML.
XLink posed o sintax mult mai bogat. Prezentm pe scurt cteva
dintre facilitile oferite de XLink [2]:
legturile XLink pot fi direcionate ctre orice tip de resurs;
o legtur XLink poate fi direcionat ctre un element sau un
ansamblu de elemente n documentul int;
orice element XML poate constitui o legtur;
legturile XLink pot fi activate manual sau n mod automat;
legturile XLink sunt multidirecionale.

XML

176
Aplicaii
Creai legturi XLink simple.
Exemplu:
<xlink:simple href=sigla.xml> Link ctre sigla.xml
</xlink:simple>.
Creai elemente XLink.
Exemplu:
<!ELEMENT mail (#PCDATA)>
< ATTLIST mail !


xlink: type (simple) #FIXED simple
xlink: href CDATA #REQUIRED
Remarc. Pentru mai multe detalii consultai urmtoarele resurse:
http://www.w3.org
http://www.w3.org/1999/xlink
Kay Ether, Alan Houser, XML Web Training, OEM, Collection Web Training,
Paris 2002
Yannick LEJEUNE, Alexandre PINHEL, XML, e-Poche, Micro Application, 2001,
Paris
R. Allen Wyke, Sultan Rehman, Brad Leupen, Manuel de rfrence XML,
Microsoft, 2002

Limbajul XML Pointer (XPointer)
XPointer este utilizat pentru referirea seciunilor documentelor externe.
V mai amintii de XPath? L-ai folosit n foile de stiluri XSLT! Cea mai
mare parte a sintaxei XPointer este mprumutat din specificaiile XPath.
n afar de facilitile de referire a elementelor, XPointer conine
instruciuni suplimentare care servesc identificrii unor pri ale acestor
elemente, evident n funcie de structura i coninutul acestora.
XPointer poate indica de asemenea poziiile relative ale acestora
(Exemplu: al patrulea element dup primul element <persoana>).
Remarc. Pentru mai multe detalii consultai site-ul: http://www.w3.org.







177
Limbajul XML Query
Limbajul XML Query a fost creat de W3C (World Wide Web Consortium).
XQuery folosete elementele limbajelor XPath, XPointer i conine n plus
un set de instruciuni proprii pentru limbajul de interogare, pentru
afectarea rezultatelor intermediare variabilelor, pentru utilizarea
expresiilor condiionale i pentru filtrarea rezultatelor.
Remarc. Pentru mai multe detalii consultai site-urile:
http://www.w3.org
http://13.107.228.20/
http://www.w3.org/XML/Query


Tem

Testai-v cunotinele
1. Ce este DOM-ul?
2. Cum creai o pagin Web interactiv?
3. Cum inserai o imagine ntr-un document XML?
4. Care sunt facilitile oferite de XLink?
5. Care sunt facilitile oferite de limbajele XML XPointer i XML XQuery?


XML
Consultai site-urile
http://www.w3.org/TR/SVG
http://users.iclway.co.uk/mhkay/Saxon
http://www.w3.org
http://www.w3.org/1999/xlink







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

S-ar putea să vă placă și