Sunteți pe pagina 1din 176

XML

CUPRINS
Conversaia 1. De la (X)HTML la XML.............................................. 3
XML
XML
XML
XML

eXtensible Markup Language ...................................................... 3


XML, un metalimbaj utilizat pentru descrierea datelor . 5
Regulile de aur ale limbajului XML .. 6
Tem .. 18

Conversaia 2. Creai documente XML bine formate .................... 19

XML Structura unui document XML bine format ... 19


XML Creai elemente XML cu tipuri de coninut diferite . 28
XML Metode i instrumente pentru crearea documentelor XML bine
formate .. 32
XML Tem 47

Conversaia 3. Inserai caractere speciale cu XML ....................... 49


XML
XML
XML
XML
XML

Caracterele speciale pot provoca erori de prelucrare ... 49


Inserai seciuni CDATA ...... 50
Utilizai entiti predefinite .. 52
Definii i utilizai o referin de entitate general intern .... 53
Tem ..... 59

Conversaia 4. Creai documente XML valide ............................... 61


XML
XML
XML
XML

S nu uitm documentele XML bine formate .. 61


Definii structura unui document XML valid. Aplicaii 62
Adugai atribute unui element XML. Aplicaii .. 76
Tem .. 84

Conversaia 5. Afiai documentele XML cu ajutorul foilor de


stiluri n cascad ..................................................... 87
XML
XML
XML
XML
XML

Utilizai foile de stiluri CSS 87


Creai fiierul de stiluri (foaia de stiluri) CSS. Aplicaii .................... 88
Legai o foaie de stiluri CSS la un document XML .. 94
Inserai elemente HTML n documentele XML .. 96
Tem 98

Conversaia 6. Afiai documentele XML cu ajutorul foilor de


stiluri XSLT .............................................................. 99

XSLT eXtensible Stylesheet Language Transformation . 99


XSLT Utilizai foile de stiluri XSLT .. 100
XSLT Creai fiierul de stiluri (foaia de stiluri) XSLT . 101
XSLT Legai o foaie de stiluri XSLT la un document XML .. 108
XSLT Principiul unei transformri XSLT. Aplicaii 110
XSLT Alte elemente XSLT propuse de XML .. 117
XML Tem . 118

Conversaia 7. Utilizai XSLT cu XPath pentru afiarea


documentelor XML .................................................. 121
XPath
XML
XML
XSLT, XPath

XML Path Language, limbaj pentru adresarea


fragmentelor XML. Aplicaii . 121
Inserai modele HTML n foile de stiluri XSLT .. 129
Combinai CSS i XSLT . 136
Tem .. 138

Conversaia 8. De la DTD la XML Schema ..................................... 139


XML
XML
XML
XML
XML

Scheme XML ... 139


Tipuri de date predefinite utilizate n schemele XML . 141
Construii o schem XML .. 143
Software XML Schema. Aplicaii 149
Tem 158

Conversaia 9. Complemente XML ................................................. 159


XML DOM, interfa pentru manipularea documentelor (X)HTML
i XML . 159
XML Script-uri XML . 160
XML Creai prima pagin Web interactiv .. 161
XML Inserai o imagine ntr-un document XML .. 170
XML Creai legturi i interogri n documentele XML . 175
XML Tem 177

Bibliografie ....................................................................................... 179

Conversaia 1

De la (X)HTML la XML

n aceast conversaie:
f
f
f
f

XML eXtensible Markup Language


XML XML, un metalimbaj utilizat pentru descrierea datelor
XML Regulile de aur ale limbajului XML
XML Tem

XML

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:
9 XML, ca i HTML se bazeaz pe tag-uri.
9 XML poate fi folosit de autorii de pagini Web ale cror nevoi depesc
limitele HTML-ului.
9 XML a fost creat pentru descrierea structurilor de date.

4
9 Tag-urile XML nu sunt predefinite; altfel spus, XML permite crearea
tag-urilor personalizate, ceea ce este nemaipomenit.
9 Pentru descrierea structurilor de date, documentele XML pot utiliza un
DTD (Document Type Definition).
9 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:
9 structurarea datelor n baze de date;
9 structurarea documentelor;
9 grafic vectorial (VML, sau Vector Markup Language);
9 prezentri multimedia (SMIL Synchronized Multimedia Integration
Language; HTML + TIME, sau HTML Timed Interactive Multimedia
Extensions);
9 comunicarea deschis ntre aplicaii, via Web cu ajutorul mesajelor
bazate pe XML (SOAP, sau Simple Object Access Protocol);

5
9 schimbul

de

informaii

financiare

(OFX,

sau

Open

Financial

Exchange);
9 tranzacii comerciale pe Internet (XFDL, sau eXtensible Forms
Description Language);
9 resurse umane (HRMML, sau Human Resource Management Markup
Language);
9 formatarea

formulelor

matematice

pe

Web

(MathML,

sau

Mathematical Markup Language);


9 descrierea structurilor moleculare (CML, sau Chemical Markup
Language);
9 scrierea

partiturilor

muzicale

(MusicML,

sau

Music

Markup

Language);
9 buletine meteo (OMF, sau Weather Observation Markup Format);
9 tranzacii imobiliare (RETS, sau Real Estate Transaction Standard).

XML

XML, un metalimbaj utilizat pentru


descrierea datelor

Dac suntei documentat n XML, ai ntlnit cu siguran aceast fraz:

XML este un metalimbaj utilizat pentru descrierea datelor.


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:

9
9
9
9

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>

XML

Regulile de aur ale limbajului 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:
9 reguli de sintax XML;
9 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 aparene! n
toate cele trei limbaje (figura 1.1).

Figura 1.1

Limbaj
HTML

Codul surs
<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:

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

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:

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

Figura 1.2

Limbaj
HTML

Codul surs
<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:
9 Metoda 1 nchidei tag-ul cu un spaiu i o bar oblic (vezi
figura 1.2);

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

Figura 1.3

Limbaj
HTML

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

Figura 1.4

Limbaj
HTML

Codul surs
<INPUT name=C1 type=checkbox id=C1
value=Java checked>

XHTML

<input name=c1 type=checkbox


value=Java checked=checked />

id=c1

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:
9 Fiecrui tag de deschidere trebuie s-i corespund un tag de
nchidere. Numele celor dou tag-uri trebuie s fie identice.
9 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.
9 Elementele imbricate sunt fii ai elementului printe.

11
Exemple de elemente HTML, XHTML, XML corect imbricate
9 HTML <P> Acesta este <B> venitul meu </B>!
9 XHTML <p> Acesta este <b> venitul meu </b> </p>!
9 XML

<ntreprindere> TIMPURI NOI <cod> 2000 </cod>


</ntreprindere>

Exemple de elemente XML incorect imbricate


9 XML <ntreprindere> TIMPURI NOI <cod> 2000
</ntreprindere> </cod>
9 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

Figura 1.5

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

Figura 1.7
Remarci:

9 Declaraia xml utilizeaz caractere mici cu excepia valorii atributului

encoding (UTF 8).


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

9 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:
9 documente bine formate;
9 documente valide.

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

Figura 1.8

Dac deschidem acest document n Internet Explorer (versiunea 5.0 sau


superioar) se obine rezultatul afiat n figura 1.9.

Figura 1.9

Reguli:

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.
9 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.
9 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
9 Toate elementele XML trebuie s conin un tag de deschidere i un
9
9
9
9
9
9
9

9
9
9
9

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,
9 nume_tag desemneaz numele tag-ului (cum indic numele su);
9 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).

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.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:
9 HTML;
9 XHTML;
9 XML.
5. Ce este un document bine format?
6. Ce este un document valid?

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

Conversaia 2

Creai documente XML bine formate

n aceast conversaie:
f XML Structura unui document XML bine format
f XML Creai elemente XML cu tipuri de coninut diferite
f XML Metode i instrumente pentru crearea documentelor XML bine

formate

f 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
9 prologul;
9 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!

Figura 2.1

Prologul cuprinde primele dou linii (figura 2.2).

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:
9 un DTD (Document Type Definition), care definete tipul i structura
documentului. Atunci cnd este utilizat, DTD-ul trebuie s fie plasat dup
declaraia XML;
9 o linie alb de spaii;
9 una sau mai multe instruciuni de prelucrare.

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

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

Figura 2.3
Remarci:

9 Numele care apare n tag-ul de deschidere i n tag-ul de nchidere ale unui


element se mai numete i tipul de element.

9 Fiecare din elementele inserate n elementul email (to, from, date, subject,
body) nu conin dect date de tip caracter.

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

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

<hr> </hr>
Sau, putei utiliza tag-ul specific elementului vid (figura 2.5).

Figura 2.5

<hr />
Remarci:

9 Cele dou notaii au aceeai semnificaie.


9 Putei utiliza un element vid pentru a indica aplicaiei XML efectuarea unei
aciuni sau afiarea unui obiect.

9 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.
Figura 2.6

<pret vanzare=RODIPET> 30 euro </pret>


n figura 2.7 atributul sursa indic numele fiierului care conine
imaginea pe care dorim s-o afim.

Figura 2.7

<sigla sursa=Droopy.gif />

23
Remarci:

9 Atributele reprezint o alternativ la inserarea informaiilor ntr-un document.


9 Utilizarea atributelor permite obinerea unui mai mare grad de flexibilitate n
procesul prelucrrilor.

9 n figura 2.8 sunt prezentate cteva exemple de specificaii de atribute


ilegale. Fr comentarii!

<curs tip= seral >


<album tip=<CD>>
Figura 2.8

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

Figura 2.9

n figura 2.10 se prezint rezultatul vizualizrii documentului n Internet


Explorer.

Figura 2.10

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

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.

Figura 2.12
Remarci:

9 Acest document simplu XML poate fi citit i neles fr a utiliza un program


specializat!

9 Tag-urile <calendar>, datadenceput>, <datadesfrit>, <costuri>, <suma>


imaginate de noi furnizeaz informaii privind datele (de tip caracter).

9 Numele tag-urilor trebuie s respecte urmtoarele reguli:

25

9
9
9

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.
9 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.
9 Elementele trebuie s fie corect imbricate.

26
9 Fiecare element trebuie s conin un tag de deschidere i un

tag de nchidere, care trebuie s poarte acelai nume.


9 Numele tag-urilor nu trebuie s conin spaii, ci numai litere,

cifre (nu n prima poziie) i liniue de subliniere (_).


9 Elementele XML sunt case-sensitive.
9 Numele tag-urilor elementelor vide trebuie s se termine cu o

bar oblic (/).


9 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:

9 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.
9 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
9 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!

Figura 2.13
Remarc. Afiai documentul XML ntr-un browser.

b) Un document (figura 2.14) care nu este bine format.

Figura 2.14
Remarc. Afiai documentul XML ntr-un browser.

c) Un document (figura 2.15) care nu este bine format!

Figura 2.15
Remarci:

9 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.
9 Afiai documentul XML ntr-un browser.

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

Figura 2.16
Remarc. Afiai documentul XML ntr-un browser.

XML

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:
9 elemente imbricate (nested);
9 date de tip caracter;
9 referine de entiti generale sau referine de caractere;
9 seciuni CDATA;
9 instruciuni de prelucrare;
9 comentarii.

Elemente imbricate. n figura 2.17 elementul adresa conine 5


elemente imbricate.

29

Figura 2.17

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

Figura 2.18

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

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

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.

Figura 2.21

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

9 Instruciunea de prelucrare din prolog creeaz o legtur ctre o foaie de


stiluri pentru a afia datele de tip caracter ale unui document XML.

9 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:

9 Un comentariu debuteaz cu <!-- i se termin cu caracterele -->. Putei


introduce caracterele speciale <, >,& mai puin linia dubl -- (figura 2.24).

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

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

32

Figura 2.26

XML

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:
9 Metoda 1

Editorul de texte Notepad;

9 Metoda 2

Editorul XML Notepad

sau,
Editorul XML Spy;
9 Metoda 3

Programe care genereaz fiiere XML;

9 Metoda 4

Documente XML;

9 Metoda 5

Baze de date;

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

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

Figura 2.27
Remarci:
9 Prima linie a documentului este o declaraie XML.
9 Declaraia <?xml version=1.0 ?> indic browser-ului c se afl n
faa unui document XML.
9 Declaraia poate conine i alte informaii, dar forma cea mai simpl
este cea indicat. Cu siguran, W3C va propune n viitor noi
modificri.
9 Declaraia poate preciza de asemenea i setul de caractere utilizat
(atributul encoding): <?xml version=1.0 encoding=ISO-8859-1
?>.
9 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.
9 Declaraia XML trebuie s utilizeze caractere mici, exceptnd valoarea
atributului encoding (ISO-8859-1).

2. Introducei comentariul Prima aplicaie XML (figura 2.28).

Figura 2.28
Remarci:
9 Comentariile XML sunt similare comentariilor HTML.
9 Comentariile nu necesit tag-uri de nchidere.
9 Lungimea comentariilor nu este limitat.

3. Tastai <email>, apsai de cteva ori tasta Enter dup care


tastai </email> (figura 2.29).

34

Figura 2.29
Remarci:
9 <email> este elementul rdcin.
9 <email> </email> delimiteaz tipul general de date.
9 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).

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

35

Figura 2.31

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

36
Remarci:
9 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.
9 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 t Programs t
Microsoft XML Notepad t Microsoft XML Notepad (figura 2.33).

Figura 2.33

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

Figura 2.34

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

Figura 2.35

4. Introducei n fereastra Values valoarea pentru elementul to


(figura 2.36).

Figura 2.36

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

Figura 2.37

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

Figura 2.38

7. Introducei valoarea elementului (figura 2.39).

Figura 2.39

8. Repetai paii 5, 6, 7 pentru elementele date, subject i body


(figura 2.40).

Figura 2.40

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

Figura 2.41

10. Afiai

documentul

XML

Microsoft

Internet

Explorer

(versiunea 5 sau o versiune superioar), figura 2.42.

Figura 2.42

Metoda 2 XML Spy (http://www.smlspy.com)


Iat cum crem acelai
(http://www.xmlspy.com).

document

e-mail

cu

XML

Spy

1. Deschidei aplicaia XML Spy, via Start t Programs t XML Spy


Suite t XML Spy IDE (figura 2.43).

40

Figura 2.43

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

Figura 2.44
Remarc. Se deschide fereastra Create new document.

3. n fereastra Create new document alegei tipul de document


dorit, iar apoi apsai butonul OK (figura 2.45).

41

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

Figura 2.46

4. Adugai un nou element via XML t Append t Element (figura


2.47).

42

Figura 2.47

5. Introducei numele elementului email (figura 2.48).

Figura 2.48

6. Pentru acest element, care este elementul rdcin, introducei


elementul fiu (figura 2.49).

43

Figura 2.49

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

Figura 2.50

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

Figura 2.51

9.

Figura 2.52

Introducei numele elementelor i atributele lor (figura 2.52).

45
10. Salvai

documentul

cu

numele

email1

folder-ul

My

Documents (figura 2.53).

Figura 2.53

11. Afiai

documentul

XML

Microsoft

Internet

Explorer

(versiunea 5 sau o versiune superioar), figura 2.54.

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.
9 Metoda 1 Utilizai foile de stiluri CSS;
9 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:
9 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).
9 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).
9 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.
9 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

XML

Tem

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

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

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

Conversaia 3

Inserai caractere speciale cu XML

n aceast conversaie:
f
f
f
f
f

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

XML

Caracterele speciale pot provoca erori de


prelucrare

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

Figura 3.1
Remarc. Documentul ecuatie.xml nu va putea fi afiat din cauza caracterelor
speciale < i > inserate.

2. Afiai

documentul

XML

Microsoft

Internet

(versiunea 5 sau o versiune superioar), figura 3.2.

Figura 3.2

Explorer

51
Remarc. Browser-ul afieaz un mesaj de eroare provocat de existena
caracterelor < i >.

3. Plasai mesajul ntr-o seciune CDATA (figura 3.3).

Figura 3.3

Remarci:
9 O seciune CDATA ncepe cu <![CDATA[ i se termin cu ]]>.
9 Toate caracterele unei seciuni CDATA sunt tratate ca o parte literal
a datelor de tip caracter ale elementului i nu ca un tag XML.
9 Cuvntul cheie CDATA se scrie cu majuscule.
9 Seciunile CDATA nu pot fi imbricate.

4. Afiai

documentul

XML

Microsoft

Internet

Explorer

(versiunea 5 sau superioar), figura 3.4.

Figura 3.4
Remarc. Navigatorul afieaz textul plasat n seciunea CDATA fr eroare.

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

Figura 3.5

&amp;
&lt;
&gt;
&apos;
&quot;

Caracter inserat
predefinit
&
<
>

Referina de caracter
echivalent
&#38;
&#60;
&#62;
&#39;
&#34;

Remarci:
9 Inserarea uneia din aceste referine de entiti predefinite este
echivalent cu inserarea referinei de caracter echivalent.
9 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:
9 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.
9 (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

Microsoft

Internet

Explorer

(versiunea 5 sau o versiune superioar), figura 3.7.

Figura 3.7
Remarc. n navigator, caracterul & apare explicit.
Aplicaie
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.

XML

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:
9 ntreg documentul XML;
9 o seciune DTD extern;

54
9 un fiier extern, definit ca o entitate extern ntr-un DTD i

referit cu ajutorul unei referine de entitate;


9 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 texte Notepad


1. Introducei n DTD-ul documentului (bine format), imediat sub
linia de comentariu, entitatea intern cp (figura 3.8).

Figura 3.8

55
Remarci:
9 Referinele entitilor generale interne se folosesc pentru texte
frecvent utilizate: adres, nume de produs, titlu, copyright etc.
9 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.
9 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).
9 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.

Figura 3.9
Remarci:
9 Declaraia unei entiti trebuie s precead referina la aceast
entitate.
9 Referina de entitate &cp; conine numele entitii (cp) plasat ntre &
i ;. Numele entitii (cp) reprezint numele atribuit entitii n
declaraia <!DOCTYPE>.

56
9 Entitatea cp se mai numete entitate general intern analizabil
(corespunde tipului XML bine format).
9 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).

Figura 3.10
Remarci:
9 Navigatorul nlocuiete codul cp prin valoarea entitii (figura 3.10).
9 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.
9 Executai clic pe simbolul minus (-) din stnga elementului email
(figura 3.11).

57

Figura 3.11

9 Elementul documentului se va contracta, ca n figura 3.12.

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

Figura 3.13
Aplicaie
Comentai urmtoarele exemple:
9 <titlu>&lt; fatalitate><titlu>
9 <produs compania=C&amp;A>bluz var<produs>
9 <!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.

59

XML

Tem

Testai-v cunotinele
1. Care este semnificaia urmtoarelor referine de entitate:
9 &qt;
9 &amp;
9 &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
9 www.xml.com
9 www.w3.org/Markup/
9 http://www.ibiblio.org/pub/sun-info/standards/xml/why/xmlapps.htm

Conversaia 4

Creai documente XML valide

n aceast conversaie:
f
f
f
f

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

XML

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

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

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:
9 Prologul documentului cuprinde o declaraie de tip de document

care conine un DTD ce definete structura documentului.


9 Restul documentului se conformeaz structurii definite n DTD.
Remarci:
9 Norma XML definete DTD-ul ca o gramatic pentru o clas de
documente.
9 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.

63
Remarci:
9 Ca toate cuvintele cheie XML, DOCTYPE trebuie s fie scris cu
majuscule.
9 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

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

Figura 4.2

Un DTD (Document Type Definition) poate conine urmtoarele tipuri de


declaraii:
9 declararea tipurilor de elemente, utiliznd cuvntul cheie

ELEMENT;
9 declararea listei de atribute;
9 declararea entitilor (interne, externe); entiti analizabile,

entiti care nu sunt analizabile utiliznd cuvntul cheie


ENTITY;
9 declararea notaiilor, utiliznd cuvntul cheie NOTATION;
9 instruciuni de prelucrare;
9 comentarii;
9 referine de entiti de parametrii.

64
Remarc. Pentru mai multe informaii privind tipurile de declaraii, consultai
lucrrile:
9 Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web (XML,
DOM, ASP), Editura Economic, 2002;
9 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:
9 tipul de elemente pe care documentul le conine;
9 ordinea elementelor;
9 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

Figura 4.3
Remarci:

9 Scopul unui DTD este de a defini elementele care pot fi utilizate ntr-un
document XML i de a specifica relaiile ntre ele.

9 Pentru a construi un DTD trebuie s cunoatem lista elementelor pe care


dorim s le asamblm.

9 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).
9 Elementele: nume, adresa, telefoane sunt obligatorii, iar elementul online este
opional. Un client poate fi valid numai cu o adres i un telefon.

9 Simbolul

se traduce prin (figura 4.4):

telefon
telefoane
Figura 4.4

telefon
telefon

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

Figura 4.6
Remarci:

9 <!ELEMENT client> definete elementul client, care conine patru elemente:


nume, adresa, telefoane, online.

9 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.
9 Putei modifica model_coninut utiliznd: semnul ntrebrii (?), semnul plus
(+) i asteriscul (*), a cror semnificaie este precizat n tabelul 1.
Caracter

Tabelul 1

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.

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

Figura 4.7
Remarci:

9 PCDATA este prescurtarea de la Parsed Character Data (date caracter


analizabile).

9 Elementul nume poate conine numai text, care va fi analizat de ctre


procesorul XML.

9 Pentru a preciza coninutul unui element vid folosii cuvntul cheie EMPTY
(figura 4.8).

Figura 4.8
9 Pentru elementele cu un coninut oarecare folosii cuvntul cheie ANY (figura
4.9).

Figura 4.9

4. Definii elementul adresa (vezi figura 4.3) specificnd structura


sa (figura 4.10).

Figura 4.10

68
5. Specificai coninutul (date de tip text) elementelor: strada,
numr, ora, cod, ara, figura 4.11.

Figura 4.11

6. Definii elementul telefoane specificnd structura sa (figura


4.12).

Figura 4.12
Remarci:

9 Elementul telefoane poate conine numai elemente telefon.


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

Figura 4.13
Remarc. n figura 4.14 este prezentat documentul XML n care este inclus DTD-ul
(intern).

Figura 4.14

70
Remarci:

9 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.15

Figura 4.16

71
9 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.

Figura 4.17
Remarc. Prezentm trei variante pentru elementul client cu scopul de a pune n
eviden rezultatul pentru fiecare caz n parte.
9 <!ELEMENT client (nume, adresa, telefoane, online?>

Elementele sunt separate prin virgule. Elementele nume, adresa, telefoane


sunt obligatorii, online este facultativ.

9 <!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.

9 <!ELEMENT client (nume?, adresa?, telefoane?, online?)>

Fiecare element poate s apar o dat, n mod opional. Fiind separate prin
virgule, elementele trebuie s apar n ordinea indicat.

72
Aplicaii
Se consider DTD-ul descris n figura 4.18.

Figura 4.18
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin invalid (figura 4.19).

Figura 4.19
2. Element rdcin valid (figura 4.20).

Figura 4.20
Se consider DTD-ul descris n figura 4.21.

73

Figura 4.21
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.22).

Figura 4.22
2. Element rdcin invalid (figura 4.23).

Figura 4.23
3. Element rdcin invalid (figura 4.24).

Figura 4.24
4. Element rdcin valid (figura 4.25).

74

Figura 4.25
Se consider DTD-ul descris n figura 4.26.

Figura 4.26
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.27).

Figura 4.27
2. Element rdcin invalid (figura 4.28).

Figura 4.28
Se consider DTD-ul descris n figura 4.29.

75

Figura 4.29
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.30).

Figura 4.30
2. Element rdcin valid (figura 4.31).

Figura 4.31
3. Element rdcin valid (figura 4.32).

Figura 4.32

76
Adugai atribute unui element XML.

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

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

Tabelul 2

utilizarea acesteia ntr-un document.


Lista de atribute a unui element XML ncepe cu ATTLIST, dup cum
urmeaz:
<! ATTLIST nume_element
valoare_implicit>

nume_atribut

tip_atribut

77
unde,
9 nume_element

- numele elementului cruia i se asociaz


nume_atribut.

9 nume_atribut

- numele atributului urmat de modelul


reprezentnd valorile posibile.

9 tip_atribut

- vezi tabelul 2.

9 valoare_implicit

- unul din cuvintele rezervate: #REQUIRED


(atributul

trebuie

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

Figura 4.34

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

elementul

<mobil>

din

documentul

luminablanda1.xml atributul tip=telefon (figura 4.37).

Figura 4.37

4. Afiai

documentul

XML

Microsoft

Internet

(versiunea 5 sau o versiune superioar), figura 4.38.

Explorer

80

Figura 4.38

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):
Figura 4.39 <!ATTLIST client tip=(fizica|juridica) #REQUIRED>
Actualizai documentul XML care utilizeaz noua schem (figura 4.40):

<client tip=fizic>
Figura 4.40
Adugai elementului <client> un atribut de tip identificator unic.
Indicaie. Introducei urmtoarea linie de cod (figura 4.41).

81
...
<!ATTLIST client tip (fizica|juridica) #REQUIRED id ID #IMPLIED>
Figura 4.41 ...
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?)>
Figura 4.42 ...
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.43
2. Construii DTD-ul corespunztor introducerii i concluziilor (figura
4.44).

Figura 4.44

82
3. Construii DTD-ul corespunztor cuprinsului (corpul documentului),
figura 4.45.

Figura 4.45
4. Construii DTD-ul corespunztor bibliografiei (figura 4.46).

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
9 http://www.xmlmag.com
9 http://xml.apache.org/
9 http://www.ddj.com/topics/xml/

Conversaia 5

Afiai documentele XML cu ajutorul foilor


de stiluri n cascad

n aceast conversaie:
f
f
f
f
f

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

XML

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.
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:
9 Etapa 1 Crearea fiierului de stiluri CSS;
9 Etapa 2 Legarea fiierului de stiluri CSS (foii de stiluri) la un

document XML.

XML

Creai fiierul de stiluri (foaia de stiluri) CSS

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:
9 Fiierul de stiluri stud.css din figura 5.1 conine un comentariu i trei
seturi de reguli.
9 ntr-o foaie de stiluri comentariul debuteaz cu caracterele slash i
asterisc (/*) i se termin cu caracterele asterisc i slash (figura 5.3).

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

Figura 5.4
9 Fiierul de stiluri stud.css conine trei reguli: una pentru elementele
student, una pentru elementele nume i n sfrit una pentru
elementele facultatea.
9 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.5
blocul de declaraie, delimitat prin dou acolade ({}), care conine
una sau mai multe declaraii separate prin punct i virgul (figura
5.6);

Figura 5.6

91
declaraia, care se compune dintr-o proprietate particular, urmat
de caracterul dou puncte (:), urmat de o valoare (figura 5.7).

{font-style:italic}
Figura 5.7
9 Declaraia display-block insereaz o linie de spaii nainte i dup
textul elementului.
9 Declaraia margin-top: 13 pt adaug o margine de 13 puncte
deasupra textului elementului.
9 Declaraia font-size: 10 pt definete mrimea (10 puncte) caracterelor
pentru afiarea textului elementelor.
9 Declaraia font-style: italic definete stilul italic pentru afiarea textului
elementelor.
9 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.8

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

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

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

Figura 5.12
Afiai textul elementului nume cu culoarea albastr pe un fond galben.
Folosii proprietatea CSS background color (figura 5.13).

Figura 5.13
Plasai imaginea upg.jpg n centrul elementului facultatea. Folosii
proprietile background repeat i background position (figura 5.14).

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

Figura 5.16

2. Afiai documentul XML (n care ai inserat instruciunea de


prelucrare

xml-stylesheet)

Microsoft

Internet

Explorer

(versiunea 5 sau superioar), figura 5.17.

Figura 5.17
Remarci:

9 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.18
9 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

XML

Inserai elemente HTML n documentele


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 spaiu 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: spaiu 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,
9 spatiu-nume1

reprezint spaiul de nume utilizat


pentru numirea elementului nume1;

9 xmlns=

reprezint declaraia unui spaiu de


nume;

9 http://www.domeniu1.com

reprezint un identificator unic

Remarci:

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

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

XML

Tem

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
9 http://www.w3.org/TR/REC-CSS1
9 http://www.w3.org/TR/REC-CSS2
9 http://www.xml.com
9 http://www.w3.org/TR/REC-xml-names/

Conversaia 6

Afiai documentele XML cu ajutorul foilor


de stiluri XSLT

n aceast conversaie:
f
f
f
f
f
f
f

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

eXtensible Stylesheet Language

XSLT

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:

9 XSLT 1.0 a fost publicat sub form de recomandare la data de 16 noiembrie


1999.

100
9 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.
9 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.
9 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.

XSLT

Utilizai foile de stiluri 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:

9 O foaie de stiluri XSLT trebuie s fie un document XML bine format! (XSLT nu
admite definirea DTD-urilor!).

9 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:
9 Etapa 1 Crearea fiierului de stiluri XSLT (XSL);
9 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:
9 Crearea unui element <html> pentru pagina Web;
9 Crearea

unui

titlu

(Statistici

Brazilia)

pentru

fereastra

navigatorului;
9 Crearea unui titlu (Statistici Brazilia) pentru pagina Web;
9 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

Figura 6.1
Remarci:

9 Documentul conine datele statistice pentru echipa de fotbal a Braziliei,


campionatul mondial de fotbal 2002.

9 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.2

i-acum s ne grbim ncet, pas cu pas. Trezii-l pe btrnul Notepad!


1. Introducei

elementul

rdcin

declaraia xml (prima linie), figura 6.3.

<xsl:stylesheet>

dup

103

Figura 6.3
Remarci:
9 O foaie de stiluri XSLT trebuie s conin un element rdcin (document)
<xsl:stylesheet>.
9 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.
9 Elementul rdcin (xsl:stylesheet) conine dou atribute: version i xmlns:xsl
care au valorile menionate.
9 xmlns:xsl=http://www.w3.org/1999/XSL/Transform este spaiul de nume
XSLT.
9 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).

Figura 6.4
Remarci:

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

104
Figura 6.5

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

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

Figura 6.8
Remarc. Ai observat c elementul <xsl:value-of select=echipa a fost utilizat
de trei ori n acest model pentru:
9 crearea coninutului elementului HTML <title>;
9 titlul paginii;
9 construirea frazei Brazilia este pe locul 1.

6. nchidei

tag-urile

<body>,

<xsl:stylesheet> (figura 6.9).

<html>,

<xsl:template>

106

Figura 6.9

7. Salvai foaia de stiluri sub numele statistica.xsl (atenie la


extensie!), figura 6.10.

Figura 6.10

8. Verificai dac foaia de stiluri este bine format, afind-o n


Internet Explorer (figura 6.11).

107

Figura 6.11
Remarci:
9 Dac Internet Explorer afieaz un mesaj de eroare, verificai sintaxa foii de
stiluri.
9 Asigurai-v c toate tag-urile deschise au fost bine nchise i c toate
elementele au fost corect imbricate.

Aplicaie
Construii acelai document cu editorul XML Spy.
n figura 6.12 se prezint documentul generat cu XML Spy.

108

Figura 6.12

Legai o foaie de stiluri XSLT la un

XSLT

document XML

Pentru a lega o foaie de stiluri XSLT la un document XML, trebuie s


inserai

prologul

documentului,

instruciunea

xml-stylesheet.
Sintaxa general a acestei instruciuni este urmtoarea:
<?xml-stylesheet type=text/css href=calefiier.xsl?>

unde,

de

prelucrare

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

Figura 6.13
Remarci:
9 Aceast instruciune de prelucrare este recunoscut de Microsoft Internet
Explorer 5.5 i nu de toate procesoarele XML.
9 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)

Microsoft

(versiunea 5 sau superioar), figura 6.14.

Figura 6.14

Internet

Explorer

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

Figura 6.15

XSLT

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]
Figura 6.16
</xsl:template>
Remarc. Acest model realizeaz urmtoarele operaii:
9 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.
9 Modelul scrie n documentul rezultant o serie de elemente literale (tag-uri
HTML care sunt copiate identic n documentul rezultant).
9 El aplic celelalte modele ale foii de stiluri elementelor fii ale elementului
rdcin, cu ajutorul instruciunii <xsl:apply-templates />.
9 Modelul scrie n documentul rezultant a doua serie de elemente literale i
oprete prelucrarea documentului surs.

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

Figura 6.17
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.
1. Introducei elementul <xsl:template match=/> pentru a localiza
elementul rdcin (figura 6.18).

112

Figura 6.18
Remarci:
9 n timpul fazei de execuie vor fi afiate toate nodurile XML, ncepnd cu
nodul rdcin.
9 Tot ceea ce constituie prelucrare trebuie s fie n interiorul elementului
<xsl:template match=/>.
9 Elementul xsl:template definete un template care va putea fi aplicat unui
nod.
9 Atributul match permite definirea nodurilor asupra crora se vor aplica regulile
template-ului.

2. Creai o pagin HTML (figura 6.19).

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

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

Figura 6.21
Remarci:
9 statistici_cm_fotbal/nume selecteaz elementul fiu <nume> al elementului
<statistici_cm_fotbal>.
9 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
9 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.

Figura 6.22
Remarci:
9 Elementul <xsl:apply-templates> cu atributul select permite aplicarea
regulilor template unui document.
9 Elementul <xsl:apply-templates> nu poate conine dect dou tipuri de
elemente:
xsl: sorte;
xsl: with-param.
9 La ntlnirea elementului <xsl:apply-templates/>, procesorul XSLT analizeaz
fiecare element fiu i i aplic regula template.
9 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>,

</xsl:template>, </xsl:stylesheet> (figura 6.23).

Figura 6.23

</body>,

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:
9 Tag-urile HTML au nlocuit tag-urile XML originale. Numai coninutul
elementelor documentului XML original, i nu tag-urile este copiat n
documentul rezultant.
9 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.

Figura 6.26
Remarci:

9 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
9 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.
9 Evitai s utilizai elementul <xsl:apply-templates /> fr atributul match.
Folosii enunurile: <xsl:for-each select=[expresie] /> sau
<xsl:apply-templates match=[expresie] />.
9 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.
9 n cadrul enunului <xsl:template />, toate elementele XSLT se refer la
nodul curent.

Alte elemente XSLT propuse de XSL

XML

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:
9 <xsl:comment></xsl

comment>

permite

generarea

comentariilor n documentul de ieire.


9 <xsl:apply-imports> permite aplicarea regulilor coninute

ntr-un fiier importat;


9 <xsl:attribute> permite inserarea unui atribut;
9 <xsl:attribute-set> permite inserarea unui set de atribute sub

acelai nume;
9 <xsl:param> permite declararea parametrilor locali/globali;
9 <xsl:call-template></xsl:call-template>

permite apelarea

unei reguli template specifice;


9 <xsl:choose> permite selectarea unei variante n funcie de

context;
9 <xsl:copy> permite efectuarea unei copii a nodului curent, n

arborele rezultant;

118
9 <xsl:copy-of> permite efectuarea unei copii a unui set de

noduri;
9 <xsl:decimal-format> definete modul n care un numr este

convertit n ir de caractere;
9 <xsl:element> permite definirea unui nou element;
9 <xsl:fallback> genereaz codul de nlocuire a unui element

neidentificat de ctre procesorul XSLT;


9 <xsl:text> adaug un text documentului de ieire;
9 <xsl:if> evalueaz o expresie logic i returneaz o valoare

boolean (true sau false);


9 <xsl:include> include o foaie de stil n foaia de stiluri curent;
9 <xsl:key> creeaz o cheie unic pentru un element;
9 <xsl:message> afieaz un mesaj de eroare;
9 <xsl:namespace-alias> nlocuiete un nume de spaiu cu un

altul;
9 <xsl:number> insereaz n arborele rezultant numrul

nodului curent sau afieaz acest numr;


9 <xsl:preserve-space> conserv nodurile vide;
9 <xsl:strip-space> terge nodurile care nu conin dect spaii

albe;
9 <xsl:stylesheet> introduce o foaie de stil;
9 <xsl:variable> declar o variabil global sau local.

XML

Tem

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

.
Figura 6.27 ..

.
..
10.Se consider urmtorul exemplu XML (figura 6.28).

Figura 6.28
Efectuai transformarea XML HTML pentru a obine rezultatul afiat n
figura 6.29 (o list cu simboluri).

120

Figura 6.29
11.Comentai urmtorul exemplu (figura 6.30) creat cu XML Spy.

Figura 6.30

Vizitai site-urile
9 www.wapforum.org
9 http://www.w3.org/TR/xslt

Conversaia 7

Utilizai XSLT cu XPath pentru afiarea


documentelor XML

n aceast conversaie:
f XPath
f XML
f XML
f XSLT, XPath

XML Path Language, limbaj pentru adresarea


fragmentelor XML. Aplicaii
Inserai modele HTML n foile de stiluri XSLT
Combinai CSS i XSLT
Tem

XPath

XML Path Language limbaj pentru


adresarea fragmentelor XML

Limbajul (de transformare XML) XSLT utilizeaz limbajul XPath pentru


adresarea fragmentelor 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>

Figura 7.1

<echipa>

<echipa>

<echipa>

<rezultate

<rezultate>

<rezultate>

<victorii>

<victorii>

<echipa>

123
Remarci:

9 Un arbore poate conine apte tipuri de noduri:

9
9

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

Figura 7.2

Semnificaie

Fiu al nodului curent

../

Printe al nodului curent

//

Descendent al nodului curent

Oricare element fiu al nodului curent

@*

Toate atributele nodului curent

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

9 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.
9 Operatorii folosii ntr-o expresie logic sunt: <; >; <=; >=; != (diferit).

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:
9 o ax;
9 un test;
9 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.

Figura 7.3

self

Nodul curent.

125
Remarci:

9 n figura 7.4 este ilustrat reprezentarea axelor XPath pentru documentul


XML, statistici.xml.

stmoi

<statistici_cm_fotbal>
printe

<nume>
precedent

curent (self)

urmtorii

<echipa>

<echipa>

<echipa>

<rezultate

<rezultate>

<rezultate>

Figura 7.4

<victorii>

<victorii>

<echipa>

descendeni

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

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

9 n exemplul:

Child::eva[position()=1],
child este numele axei;
eva este nodul de test;
[position()=1] este predicatul.
9 Alte exemple:
descendent::echipa desemneaz toate elementele numite echipa care
sunt descendeni ai nodului curent.
parent::* desemneaz elementul printe al nodului curent.

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

126
<statistici_cm_fotbal>

<nume>

<echipa>

<nume>

Figura 7.5

<echipa>

<echipa>

<rezultate>

Aplicaii
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

Figura 7.9
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.

Figura 7.10
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.11

129
Remarci:
9 Specificatorul de axe XPath preceding-sibling are urmtoarea semnificaie:
toate nodurile care preced nodul curent i care au acelai printe.
9 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.

XML

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

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

Figura 7.14
Remarci:
9 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.
9 n documentul statistici.xml (figura 7.14) datele sunt plasate dezordonat (n
mod intenionat!). Ele vor fi sortate n foaia de stiluri.
9 Elementul rdcin <statistici_cm_fotbal> posed un element fiu, <nume>
care conine numele campionatului de fotbal Campionatul Mondial de Fotbal
2002.
9 <statistici_cm_fotbal> posed mai muli fii instaniai de elementul <echipa>.
9 Fiecare element <echipa> posed un fiu <nume>. n acest context, <nume>
conine numele echipei.

132
9 Fiecare element <echipa> posed un fiu numit <rezultate>.
9 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.
9 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/>
Figura 7.15
...
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>
Figura 7.16 ...
Remarc. Numele echipei aflndu-se n elementul <nume> fiu al elementului
<echipa> poate fi selecionat direct.
<xsl: value-of select=nume/>.

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.

Figura 7.20
Remarc. Navigatorul Internet Explorer afieaz datele documentului XML (statistici.xml)
ntr-un model HTML.

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

Figura 7.22
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.

Figura 7.23
n figura 7.24 se prezint clasamentul (locul 1, locul 2, locul 3) echipelor de
fotbal.

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.

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.

138

XSLT, XPath

Tem

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
9 www.w3.org/TR/xpath
9 www.xml.com
9 http://www.ibiblio.org/pub/sun-info/standards/xml/why/xmlapps.htm

Conversaia 8

De la DTD la XML Schema

n aceast conversaie:
f
f
f
f
f

XML Scheme XML


XML Tipuri de date predefinite utilizate n schemele XML
XML Construii o schem XML
XML Software XML Schema. Aplicaii
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:
9 Un DTD nu este un document XML;
9 Regulile de instaniere sunt limitate;
9 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:
9 permit definirea tipurilor de date ntr-un mod mult mai precis;
9 sunt compatibile cu spaiile de nume ceea ce permite
combinarea

mai

multor

vocabulare

cadrul

aceluiai

document;
9 sunt ele nsele documente XML.

DTD XML prezint urmtoarele avantaje:


9 utilizeaz o sintax mai simpl;
9 sunt mult mai concise;
9 sunt compatibile cu un numr mai mare de aplicaii (cel puin
pentru moment!)
Remarci:

9 Probabil schemele XML i DTD XML vor continua s coabiteze pentru o bun
perioad de timp!

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

XML

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]:
9 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);

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).
9 tipuri temporale

time (definete ora);


date (definete data calendaristic: zzllaa);
dateTime (Exemplu: 2003-09-01 T13:20:00+02:00);
duration

(Exemple:

P-1347M;

T8H30M13S);
GYearMonth (Exmplu: 2003-09).
9 tipuri DTD

ID;
IDREF;
IDREFS;
NMTOKEN;
NMTOKENS;

P134Y;

P3Y4M10J

143
ENTITY;
NOTATION;
Name.
9 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:
9 elemente de tip simplu, care nu pot avea nici fii, nici atribute;
9 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

Figura 8.1
Remarci:
9 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.
9 Ierarhia listei de produse de excursie este prezentat n figura 8.2.

Lista produse excursie

Produse excursie

Cantitate
Figura 8.2

Figura 8.3

Unitate
msur

Produse excursie

Denumire
produs

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:
9 Metoda 1 Codificarea manual;
9 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).

Figura 8.4
Remarci:
9 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.
9 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).
9 <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).

Exemplu de utilizare a atributului targetNamespace al elementului


<xs: schema> (figura 8.5).

146

Figura 8.5

2. Definii elementul de tip complex <lista_produse_excursie>.


2.1.Introducei elementul <xs: element name= lista_produse_
excursie> (figura 8.6).

Figura 8.6
Remarci:
9 Elementul de tip complex <lista_produse_excursie> este o secven de
<produse_excursie>.
9 Dup cum ai putut constata element permite declararea unui element. El
posed dou atribute: name i ref, care sunt exclusive.
9 name permite declararea unui atribut n mod local.
9 ref, care este diminutivul de la reference face referiri la un element deja
declarat sau care urmeaz a fi declarat ulterior.
9 Atributele name i ref (facultative) sunt cele mai frecvent folosite n
declararea unui element.
9 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).

Figura 8.7

2.3.Introducei enunul <xs: sequence> (figura 8.8).

Figura 8.8
Remarci:
9 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.
9 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

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

Figura 8.10

Remarci:
9 Elementul de tip simplu <cantitate> va fi un numr zecimal (xs: decimal).
9 Elementul de tip simplu <produs> va fi un ir de caractere (xs: string).
9 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

Figura 8.11
Remarci:
9 Schema utilizeaz elementul de constrngere <xs: restriction> cu atributul
base pentru a preciza c elementul <um> este de tip xs: string.
9 restriction conine faete care permit reducerea spaiului de valori.
9 Valoarea este restricionat printr-o faet definit cu elementele
<xs: enumeration>.
9 Faeta enumeration permite limitarea spaiului de valori la o list de valori
(kg; borcan(e) etc.).
9 Fiecare constrngere este un element care posed un atribut numit value i
definete una din valorile posibile.

XML

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 (Metoda 2 Codificarea automat cu aplicaii
dedicate). Prezentm n cele ce urmeaz, dou dintre cele mai
cunoscute aplicaii pentru crearea schemelor XML:
9 (TIBCOs) XML Authority;
9 XML Spy.

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);
DDML

DCD

(http://www.w3.org/TR/NOTE-dcd);

(http://www.w3.org/TR/NOTE-ddml);

(http://www.onesoft.com);

SGML

(http://www.xml.gr.jp/relax);

One

Soft

(http://www.iso.ch);

RELAX

Schema

(http://www.extensibility.com/resources/saf.htm);

Adjunct
SOX

versiunea

(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);
(http://www.w3.org/XML/Schema).

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:
9 Dac dorii mai multe informaii despre XML Authority, vizitai site-ul
http://www.tibco.com.
9 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

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

9 XML Spy este un instrument simplu de folosit, extraordinar de flexibil


i foarte complet.

9 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

Figura 8.15
Realizai schema XML echivalent folosind una din metodele prezentate mai jos:
9 Metoda 1 Codificarea manual;
9 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).

Figura 8.16
Codul surs al schemei XML generate cu XML Spy este prezentat n figura 8.17.

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

XML

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

Figura 8.18

Vizitai site-urile
9 http://www.w3.org/2000/10/XMLSchema
9 http://www.w3.org/2001/XMLSchema-instance
9 http://www.thaiopensource.com/trex/
9 http://www.mutu-xml.org/

Conversaia 9

Complemente XML

n aceast conversaie:
f
f
f
f
f
f

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

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

Figura 9.1

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:

9 Documentul conine mai multe tipuri de noduri (nodul rdcin este


obligatoriu!).

9 Interfaa NodeList este prezent chiar dac documentul nu posed dect un


singur nod.

9 Interfeele se prezint sub dou forme [1]:

fundamentale Node, Document, DOMImplementation,


DocumentFragment,
NodeList,
Element,
NamedNodeMap,
Attr,
CharacterData, Text, Comments, DOMException;
interfee extinse CDATASection, DocumentType, Notation, Entity,
EntityReference, ProcessingInstruction.
9 Obiectul Node permite realizarea urmtoarelor operaii principale: parcurgerea
arborelui; obinerea de informaii dintr-un nod; actualizarea unui nod.
9 Atributele obiectului Node sunt urmtoarele: ownerDocument, nodeName,
nodeValue, nodeType, namespaceURI, prefix, localName, attributes,
previousSibling, nextSibling, parentNode, childNodes, firstchild, lastchild.
9 Metodele atributului Node sunt urmtoarele: supports (), cloneNode (),
hascildnodes, insertBefore (), appendchild (), replacechild (), removechild ().

XML

interfee

Script-uri XML

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:
9 Collection Web Training, Java Script Web Training, Paris, 2002
9 Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web (XML, DOM, ASP),
Editura Economic 2002, Bucureti.

XML

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.

162

Figura 9.3
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:
9 afiarea rezultatelor ntr-un tabel HTML;
9 sortarea tabelului n funcie de clasament;
9 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

Figura 9.4

Remarci:

9 Numele obiectelor xslStyleSheet i xmlSource sunt nume de variabile


arbitrare.

9 document.XSLDocument
9
9
9

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

]]>
va genera urmtorul rezultat (figura 9.6):

Figura 9.6

<script>
<!-Cod JavaScript
-->
</script>

3. Manipulai obiectele DOM. Utilizai metoda selectSingleNode


(figura 9.7).

164

Figura 9.7
Remarci:

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

9 Funcia display(coloana) are un singur argument numit coloana, unde coloana


9
9

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

Figura 9.11
Remarci:

9 De fiecare dat cnd utilizatorul va executa clic pe Echipa sau Clasament,


funcia display va fi apelat cu argumentul corespunztor.

9 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.12

167

Figura 9.12

(continuare)

8. Afiai documentul (statistici.xml) n Microsoft Internet Explorer


(versiunea 5 sau o versiune superioar), figura 9.13.

Figura 9.13

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

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

Figura 9.15

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

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

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:

9 Elementele vide sunt declarate prin cuvntul cheie EMPTY.


9 Declaraia <!ELEMENT img EMPTY>) a fost inclus n DTD pentru a valida
documentul XML care conine un element vid, de forma: <img/>.

9 Navigatoarele afieaz imaginile dintr-un document HTML datorit tag-ului


img.

9 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:

9 Noi am utilizat atributul source (pentru a nelege mai bine procedura).


Dumneavoastr putei folosi orice nume dorii!

9 Tipul de atribut ENTITY definete referina la datele binare externe (imagini).


Valoarea unui astfel de atribut nu este analizabil.

9 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:

9 DTD-urile externe private sunt identificate prin cuvntul cheie SYSTEM.


9 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

Figura 9.23
n figura 9.24 este prezentat documentul sigla.xml.

Figura 9.24
n figura 9.25 este afiat rezultatul.

Figura 9.25
Remarci:

9 Dei disponibil, fiierul sigla.jpg nu este afiat n browser.


9 Pentru afiarea siglei societii LUMINA BLNDA (sigla.jpg) utilizai XSLT.

n figura 9.26 este prezentat documentul sigla.xsl.

174

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

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

175
Pentru mai multe detalii
http://www.w3.org/TR/SVG.

XML

privind

standardul

SVG

vizitai

site-ul:

Creai legturi i interogri n documentele


XML

Creai legturi cu XLINK (XML Linking Language)


Trebuie s recunoatem c legturile HTML sufer de urmtoarele
limitri:
9 sunt unidirecionale;
9 nu pot fi direcionate dect ctre documente HTML;
9 trebuie mereu activate manual;
9 nu pot fi obinute dect cu elementul <a>;
9 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]:
9 legturile XLink pot fi direcionate ctre orice tip de resurs;
9 o legtur XLink poate fi direcionat ctre un element sau un

ansamblu de elemente n documentul int;


9 orice element XML poate constitui o legtur;
9 legturile XLink pot fi activate manual sau n mod automat;
9 legturile XLink sunt multidirecionale.

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

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
9 Yannick LEJEUNE, Alexandre PINHEL, XML, e-Poche, Micro Application, 2001,
Paris
9 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:
9 http://www.w3.org
9 http://13.107.228.20/
9 http://www.w3.org/XML/Query

XML

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?

Consultai site-urile
9 http://www.w3.org/TR/SVG
9 http://users.iclway.co.uk/mhkay/Saxon
9 http://www.w3.org
9 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 aplicaiilor 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