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
Ce este XML?

eXtensible Markup Language

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). Limbaj HTML XHTML
Figura 1.1

Codul surs <P>nva s priveti dincolo de aparene!</P> <p>nva s priveti dincolo de aparene!</p> <paragraf>nva s priveti dincolo de aparene!</paragraf>

XML
Remarci:

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.

9 n exemplul precedent sintaxa XHTML este judecat corect atunci

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). Limbaj HTML XHTML
Figura 1.2

Codul surs <IMG src=sigla.jpg> <img src=sigla.jpg /> <imagine source=sigla.jpg />

XML

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). Limbaj HTML XHTML XML Codul surs <P align=center>nva s priveti dincolo de aparene! <p style=text-align:center>nva s priveti dincolo de aparene!</p> <mesaj prioritate=urgent>S nu-mi neli niciodat credina!</mesaj>

Figura 1.3

Toate atributele trebuie s conin valori


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

Figura 1.4

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

Elementele XML sunt case-sensitive


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

Imbricai corect elementele


n general, tag-urile sunt imbricate, ceea ce nseamn c un element poate conine alte elemente. Tag-urile XML funcioneaz n acelai mod ca i parantezele n matematic. Regulile de imbricare sunt urmtoarele: 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 to from date subject body <email> <to> </to> <from> </from> <date> </date> <subject> </subject> <body> </body> </email>

Figura 1.5

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

9 O a doua versiune a limbajului XML a fost publicat dar ea nu

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:

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

9 Prima linie a acestui exemplu

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
Testai-v cunotinele

Tem

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

f XML Tem

formate

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 a

documentului i conin informaiile corespunztoare. Un element tip cuprinde un tag de deschidere, coninutul elementului i tag-ul de nchidere. Coninutul elementului poate fi constituit din date de tip caracter, alte elemente imbricate (nested), sau combinaii ale celor dou.
Remarc. ntr-un document XML textul este un melange de tag-uri i de date de tip caracter sau date de tip text.

n exemplul nostru (documentul mail.xml), elementul rdcin este email. Tag-ul su de deschidere este <email>, tag-ul de nchidere este </email>, iar coninutul su este alctuit din 5 elemente: <to>, <from>, <date>, <subject>, <body> (figura 2.3).

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

9 9 9

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. prelucrare sau de afiare a documentului.

9 Folosii instruciuni de prelucrare pentru a preciza navigatorului forma de

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

Editorul de texte Notepad; Editorul XML Notepad

sau,
Editorul XML Spy;
9 Metoda 3 9 Metoda 4 9 Metoda 5 9 Metoda 6

Programe care genereaz fiiere XML; Documente XML; Baze de date; 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.

Introducei numele elementelor i atributele lor (figura 2.52).

Figura 2.52

45
10. Salvai documentul cu numele email1 n 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
Testai-v cunotinele

Tem

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

Inserai seciuni CDATA

O seciune CDATA permite afiarea (fr erori!) datelor care conin

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

Explorer

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

Figura 3.2

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

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

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 &amp; &lt; &gt; &apos; &quot; Caracter inserat predefinit & < > Referina de caracter echivalent &#38; &#60; &#62; &#39; &#34;

Figura 3.5

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
Testai-v cunotinele

Tem

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 i alte caracteristici. n figura 4.2 se prezint un document XML valid complet, care conine un DTD cu o singur declaraie (de tip element) fr restricii de coninut (ANY).

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 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). de coninut sau modelul de coninut ale

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. dorim s le asamblm.

9 Pentru a construi un DTD trebuie s cunoatem lista elementelor pe care 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 telefon telefoane Figura 4.4 telefon telefon

se traduce prin (figura 4.4):

1. Definii un document de tip client (figura 4.5).

Figura 4.5

66
2. Definii elementul client specificnd structura sa. 2.1 Utilizai sintaxa: <! ELEMENT nume_element model_coninut>

unde,
nume_element este numele elementului rdcin; model_coninut sau specificatii_continut precizeaz coninutul elementului. 2.2 nlocuii nume_element cu client i model_coninut cu: nume, adresa, telefoane, online?, n ordinea indicat (figura 4.6).

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 ? + Semnificaie Nici una sau o apariie a elementului precedent (este opional). Una sau mai multe apariii a elementului precedent. Nici una sau mai multe apariii a elementului precedent.

Tabelul 1

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

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.

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

XML

Adugai atribute unui element XML. Aplicaii

Toate elementele descrise ntr-un DTD pot avea un numr oarecare de atribute. Atributele nu sunt obligatorii. Ele permit adugarea de informaii suplimentare n mod simplu.
Remarc. 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 CDATA ENTITY ENTITIES Enumerare ID IDREF IDREFS NMTOKEN NMTOKENS NOTATION
Tabelul 2

Descriere Poate conine text (ir de caractere). Numele unei entiti externe. O list de entiti externe (separate prin spaii). O list de cuvinte separate prin |. Identificator unic. O referin la un identificator unic. O list de referine la identificatori unici (separai prin spaii). Un cuvnt. O list de NMTOKEN separate prin spaii. Permite declararea unei imagini ntr-un DTD i apoi 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 9 nume_atribut 9 tip_atribut 9 valoare_implicit - numele elementului cruia i se asociaz nume_atribut. - numele atributului urmat de modelul reprezentnd valorile posibile. - vezi tabelul 2. - unul din cuvintele rezervate: #REQUIRED (atributul trebuie s fie ntotdeauna prezent); #IMPLIED (prezena atributului este facultativ); #FIXED (atributul va utiliza ntotdeauna valoarea implicit care a fost declarat). Iat cum procedm pentru a aduga atributul tip=telefon elementului <mobil>. Vom utiliza modelul de date (modificat) client (figura 4.33) realizat cu aplicaia XML Spy.

Figura 4.33

78
Remarc. Definiia XML a modelului de date (modificat) client este ilustrat n figura 4.34 (client1.dtd).

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

Explorer

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

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
Testai-v cunotinele

Tem

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.

XML

Legai o foaie de stiluri CSS la un document 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) n 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 9 xmlns= reprezint spaiul de nume utilizat pentru numirea elementului nume1; reprezint declaraia unui spaiu de nume; 9 http://www.domeniu1.com
Remarci:

reprezint un identificator unic

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
Testai-v cunotinele

Tem

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

XSLT

eXtensible Stylesheet Language Transformation

Vom ncepe conversaia noastr prin a studia XSLT. XSLT este un limbaj de nalt nivel care cuprinde 35 de elemente definite de World Wide Web Consortium. XSLT este un limbaj declarativ. Principalul obiectiv al limbajului l constituie transformarea documentelor (surs) XML n alte documente XML care pot fi afiate ntr-un navigator Internet, pe un telefon mobil, pe hrtie de imprimant etc.
Remarci:

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


1999.

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

9 XSLT (eXtensible Stylesheet Language Transformation) i XSL/FO (eXtensible

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

XSLT

Creai fiierul de stiluri (foaia de stiluri) 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 <xsl:stylesheet> dup

declaraia xml (prima linie), figura 6.3.

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

9 Nu uitai c elementele foilor de stiluri care ncep cu xsl: sunt elemente XSL.

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

<html>,

<xsl:template>

<xsl:stylesheet> (figura 6.9).

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

XSLT
inserai n

Legai o foaie de stiluri XSLT la un document XML


prologul documentului, instruciunea de prelucrare

Pentru a lega o foaie de stiluri XSLT la un document XML, trebuie s xml-stylesheet. Sintaxa general a acestei instruciuni este urmtoarea: <?xml-stylesheet type=text/css href=calefiier.xsl?>

unde,

109
calefiier.xsl este URL-ul care indic amplasarea fiierului foii de stiluri XSLT. Iat cum legm fiierul de stiluri XSLT statistica.xsl la documentul XML statistica.xml. 1. Inserai n prologul documentului XML, instruciunea de prelucrare xml-stylesheet (figura 6.13).

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) n Microsoft Internet Explorer (versiunea 5 sau superioar), figura 6.14.

Figura 6.14

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

</body>,

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

Figura 6.23

115
Atunci cnd documentul i foaia de stiluri asociat sunt analizate de ctre procesorul XML, acesta genereaz documentul HTML ilustrat n figura 6.24.

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

9 Putei suprima coninutul unui element al documentului surs definind un

XML

Alte elemente XSLT propuse de XSL

Listm n continuare alte elemente XSLT (vezi Yannick LEJEUNE & Alexandre PINHEL, XML, e-Poche, Micro Application, 2001, Paris i Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web, Editura Economic, 2002) pe care v invitm s le folosii n aplicaiile dumneavoastr:
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
Testai-v cunotinele

Tem

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 Nume * / // . Figura 6.27 .. Exemplu persoana * / //persoana . .. 10.Se consider urmtorul exemplu XML (figura 6.28). Descriere Elementul persoana Oricare element

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>

<echipa>

<echipa>

<echipa>

<echipa>

<rezultate

<rezultate>

<rezultate>

Figura 7.1

<victorii>

<victorii>

123
Remarci:

9 Un arbore poate conine apte tipuri de noduri:

9 9
Simbol / ../ // * @*

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. Semnificaie Fiu al nodului curent Printe al nodului curent Descendent al nodului curent Oricare element fiu al nodului curent Toate atributele nodului curent

Figura 7.2

9 Exemple de expresii XPath: /statistici_cm_fotbal/* selecteaz toate elementele fii ale elementului /statistici_cm_fotbal/nume selecteaz elementul fiu <nume> al 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). <statistici_cm_fotbal>; elementului <statistici_cm_fotbal>;

//nfrngeri selecteaz toi descendenii elementului <nfrngeri>.

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 child descendent parent ancestor following-sibling preceding-sibling following preceding Figura 7.3 self nodul curent. Toi descendenii nodului curent. Printele direct al nodului curent. Toi strmoii nodului curent. Toate nodurile care se succed nodului curent i care au acelai printe. Toate nodurile care preced nodul curent i care au acelai printe. Toate nodurile care se succed nodului curent, oricare ar fi nivelul lor ierarhic. Toate nodurile care preced nodul curent, oricare ar fi nivelul lor ierarhic. Nodul curent. Semnificaie Toi fiii nodului curent. Un nod fiu este situat direct n

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>

<echipa>

<rezultate

<rezultate>

<rezultate>

Figura 7.4

<victorii>

<victorii>

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 9 n exemplul:
separat prin ::, urmat de zero sau mai multe predicate plasate ntre paranteze drepte.

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.

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.

9 Limbajul XPath permite identificarea elementelor, atributelor, textului,

126
<statistici_cm_fotbal>

<nume>

<echipa>

<echipa>

<echipa>

Figura 7.5 Aplicaii

<nume>

<rezultate>

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

<nume>,

fiul

lui

<statistici_cm_fotbal>

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> 3. Introducei n foaia de stiluri (literal.xsl) din figura 7.19 expresiile XPath pe care le-ai creat (figura 7.18).

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
Testai-v cunotinele
1. Care este rolul limbajului XPath? 2. De ce utilizm XSLT cu XPath? 3. Cum definii axele XPath? 4. Comentai instruciunea:

Tem

<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 document; 9 sunt ele nsele documente XML. mai multor vocabulare n cadrul aceluiai

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

XML

Tipuri de date predefinite utilizate n schemele XML

nainte de a construi mpreun prima schem XML, va trebui s nelegem principiile fundamentale. A construi o schem fr a respecta anumite principii nu se poate!

Tipuri de date predefinite


Unul din principalele avantaje ale schemelor XML este acela c permit specificarea tipului de coninut i a atributelor elementelor XML. O schem XML poate specifica dac un element trebuie s conin un numr (ntreg, zecimal etc.) ceea ce un DTD nu permitea. Cele mai importante tipuri de date predefinite utilizate n schemele XML sunt urmtoarele [2]:
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; P134Y; P3Y4M10J T8H30M13S); GYearMonth (Exmplu: 2003-09).
9 tipuri DTD

ID; IDREF; IDREFS; NMTOKEN; NMTOKENS;

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

Produse excursie

Produse excursie

Cantitate Figura 8.2

Unitate msur

Denumire produs

Figura 8.3

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 form (primete ca valoare qualified sau unqualified; indic dac numele id (vezi DTD).
elementului trebuie s conin sau nu prefixul xs:(xsd:)); va putea fi prezent ntr-un document);

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 (http://www.onesoft.com); (http://www.xml.gr.jp/relax); DCD (http://www.w3.org/TR/NOTE-dcd); One Soft RELAX Adjunct SOX versiunea 2 (http://www.iso.ch); Schema (http://www.w3.org/TR/NOTE-ddml); SGML

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

(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 i .mml (Mathematical Markup Language); .mtx (MetaStream XML); .rdf (Resource Description Framework); .smil

152
(Synchronized Multimedia Integration Language); .svg (Scalable Vector Graphics); .wml (Wireless Markup Language); .xdr (XML Data Reduced); .xhtml (eXtensible Hypertext Markup Language); .xml (document XML); .xsd (Schema XML); .xsl (foaia de stiluri XSL); .xslt (transformare XSL).
Remarci:

9 XML Spy este un instrument simplu de folosit, extraordinar de flexibil 9 XML Spy prezint i alte faciliti precum: introducerea semi-automat
i foarte complet. 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

(continuare)

Figura 8.17

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
Testai-v cunotinele
1. Cnd folosii schemele XML?

Tem

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). <exemplu> <body> Dou mere, dou pere! </body> <exemplu> DocumentNode Rdcina documentului NodeList ElementNode <exemplu> NodeList ElementNode <body> NodeList TextcharacterDataNode Dou mere, dou pere!
Remarci:

Figura 9.1

Figura 9.2

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


obligatoriu!). singur nod.

9 Interfaa NodeList este prezent chiar dac documentul nu posed dect un 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 ().

interfee

XML

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


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

9 Odat create obiectele care reprezint documentele, ele pot fi utilizate pentru

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, 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. funcia display va fi apelat cu argumentul corespunztor.

7. Realizai programul complet. n figura 9.12 se prezint foaia de stiluri XSLT care conine codul JavaScript.

Figura 9.12

167

(continuare)

Figura 9.12

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

9 Navigatoarele afieaz imaginile dintr-un document HTML datorit tag-ului 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. privind standardul SVG vizitai site-ul:

XML

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
Testai-v cunotinele
1. Ce este DOM-ul?

Tem

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