XML

CUPRINS
Conversaţia 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

Conversaţia 2. Creaţi documente XML bine formate .................... 19

XML – Structura unui document XML bine format …..……………………………. 19 XML – Creaţi elemente XML cu tipuri de conţinut diferite .……………………… 28 XML – Metode şi instrumente pentru crearea documentelor XML bine formate ………………………………………………………………………………….. 32 XML – Temă ……………………………………………………………………………………… 47

Conversaţia 3. Inseraţi caractere speciale cu XML ....................... 49
XML XML XML XML XML – – – – –

Caracterele speciale pot provoca erori de prelucrare …………………... 49 Inseraţi secţiuni CDATA ………………………………………………………...... 50 Utilizaţi entităţi predefinite ……………………………………………………….. 52 Definiţi şi utilizaţi o referinţă de entitate generală internă ..………….. 53 Temă .………………………………………………………………………………..….. 59

Conversaţia 4. Creaţi documente XML valide ............................... 61
XML XML XML XML – – – –

Să nu uităm … documentele XML bine formate ………………………….. 61 Definiţi structura unui document XML valid. Aplicaţii …………………… 62 Adăugaţi atribute unui element XML. Aplicaţii …………………………….. 76 Temă …………………………………………………………………………………….. 84

Conversaţia 5. Afişaţi documentele XML cu ajutorul foilor de stiluri în cascadă ..................................................... 87
XML XML XML XML XML – – – – – Utilizaţi foile de stiluri CSS ………………………………………………………… 87 Creaţi fişierul de stiluri (foaia de stiluri) CSS. Aplicaţii .................... 88 Legaţi o foaie de stiluri CSS la un document XML ……………………….. 94 Inseraţi elemente HTML în documentele XML …………………………….. 96 Temă ……………………………………………………………………………………… 98

Conversaţia 6. Afişaţi documentele XML cu ajutorul foilor de stiluri XSLT .............................................................. 99

XSLT – eXtensible Stylesheet Language Transformation ………………………. 99 XSLT – Utilizaţi foile de stiluri XSLT …………………………………………………….. 100 XSLT – Creaţi fişierul de stiluri (foaia de stiluri) XSLT ……………………………. 101 XSLT – Legaţi o foaie de stiluri XSLT la un document XML …………………….. 108 XSLT – Principiul unei transformări XSLT. Aplicaţii ………………………………… 110 XSLT – Alte elemente XSLT propuse de XML ……………………………………….. 117 XML – Temă ….………………………………………………………………………………… 118

Conversaţia 7. Utilizaţi XSLT cu XPath pentru afişarea documentelor XML .................................................. 121
XPath XML XML XSLT, XPath – XML Path Language, limbaj pentru adresarea fragmentelor XML. Aplicaţii ………………………………………. 121 – Inseraţi modele HTML în foile de stiluri XSLT …………….. 129 – Combinaţi CSS şi XSLT ……………………………………………. 136 – Temă …………………………………………………………………….. 138

Conversaţia 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 Construiţi o schemă XML ………………………………………………………….. 143 Software XML Schema. Aplicaţii ………………………………………………… 149 Temă ……………………………………………………………………………………… 158

Conversaţia 9. Complemente XML ................................................. 159
XML – DOM, interfaţă pentru manipularea documentelor (X)HTML şi XML ……………………………………………………………………………………. 159 XML – Script-uri XML …………………………………………………………………………. 160 XML – Creaţi prima pagină Web interactivă ………………………………………….. 161 XML – Inseraţi o imagine într-un document XML ………………………………….. 170 XML – Creaţi legături şi interogări în documentele XML …………………………. 175 XML – Temă ……………………………………………………………………………………… 177

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

a fost definit de consorţiul W3C în anul 1996. acronimul de la eXtensible Markup Language. XML a fost creat pentru descrierea structurilor de date. vă cer permisiunea să prezint în câteva cuvinte XML-ul: XML.Conversaţia 1 De la (X)HTML la XML ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XML – eXtensible Markup Language XML – XML. Remarcă. Definiţia completă a limbajului XML dată de W3C o găsiţi la adresa: http://www. . un metalimbaj utilizat pentru descrierea datelor XML – Regulile de aur ale limbajului XML XML – Temă ••••••••••••••••••••••••••••••••••••••••• XML Ce este XML? eXtensible Markup Language Limbajul XML. ca şi HTML se bazează pe tag-uri. Dacă nu sunteţi documentat în XML.org/TR/REC-xml.w3. XML poate fi folosit de autorii de pagini Web ale căror nevoi depăşesc limitele HTML-ului.

Remarcă. Un document care conţine un DTD este autodescriptiv. Remarcă. ceea ce este nemaipomenit. (X)HTML. Editura Universităţii din Ploieşti. XML va înlocui HTML-ul? La ora actuală. Prezentăm în continuare. via Web cu ajutorul mesajelor bazate pe XML (SOAP. structurarea documentelor.w3. sau HTML Timed Interactive Multimedia Extensions). documentele XML pot utiliza un DTD (Document Type Definition). Pentru descrierea structurilor de date. HTML + TIME. .4 Tag-urile XML nu sunt predefinite. trebuie să vă aduceţi aminte ce este (X)HTML-ul! (vezi Liviu Dumitraşcu. comunicarea deschisă între aplicaţii. o scurtă listă de aplicaţii XML: structurarea datelor în baze de date. la adresa http://www. sau Simple Object Access Protocol). XML a fost conceput pentru a stabili şi a menţine o interoperabilitate cu HTML. Aplicaţii XML Pe bună dreptate. 2003). XML permite crearea tag-urilor personalizate.org/TR/REC-xml. altfel spus. grafică vectorială (VML. prezentări multimedia (SMIL – Synchronized Multimedia Integration Language. răspunsul la această întrebare este NU. Pentru a înţelege XML-ul. HTML rămâne primul limbaj utilizat pentru a indica browser-elor cum să afişeze informaţiile pe Web. sau Vector Markup Language). vă puteţi întreba ce faceţi cu XML în practică? Teoria fără praxă…. Cele 10 obiective oficiale ale limbajului XML au fost publicate pe site-ul consorţiului W3C.

5 schimbul de informaţii financiare (OFX. Această afirmaţie nu ne oferă nici un detaliu privind metalimbajul în sine. În realitate. resurse umane (HRMML. descrierea structurilor moleculare (CML. Remarcă. formatarea formulelor matematice pe Web (MathML. Un metalimbaj este un limbaj utilizat pentru descrierea unui alt limbaj. aţi întâlnit cu siguranţă această frază: „XML este un metalimbaj utilizat pentru descrierea datelor”. tranzacţii comerciale pe Internet (XFDL. tranzacţii imobiliare (RETS. sau Music Markup Language). sau Chemical Markup Language). sau Human Resource Management Markup Language). sau Real Estate Transaction Standard). sau Open Financial Exchange). scrierea partiturilor muzicale (MusicML. un metalimbaj utilizat pentru descrierea datelor Dacă sunteţi documentat în XML. buletine meteo (OMF. sau Weather Observation Markup Format). noţiunea de metalimbaj vă este bine cunoscută din primii ani de şcoală. . sau eXtensible Forms Description Language). Structura unei fraze din limbajul natural este un exemplu fundamental de metalimbaj. sau Mathematical Markup Language). Iată cum descompunem în elemente de metalimbaj fraza: Ultimul tren a plecat. XML XML.

<adjectiv> </adjectiv> <substantiv> </substantiv> <verb> </verb> <sfârşit> </sfârşit> XML Regulile de aur ale limbajului XML Înainte de a începe crearea unui document XML este important să cunoaşteţi câteva din regulile XML pe care este bine să le respectaţi. ca model pentru acest tip de fraze. substantiv (tren).6 Fraza poate fi descompusă după cum urmează: adjectiv (ultimul). Regulile sunt simple. verb (a plecat).). Pentru a delimita componentele unei fraze putem adopta sintaxa utilizată în (X)HTML. sfârşit de frază (. după cum urmează: <adjectiv> Ultimul </adjectiv> <substantiv> tren </substantiv> <verb> a plecat </verb> <sfârşit> . . elementele de metalimbaj sunt încadrate între „<” şi „>”. Această structură poate fi utilizată ca model în metalimbajul folosit pentru descrierea unei familii infinite de fraze de forma: <adjectiv><substantiv><verb><sfârşit> în care. Regulile pe care trebuie să le respecte documentele XML facilitează atât crearea instrumentelor de analiză a documentelor cât şi lucrul efectiv cu XML. </sfârşit> Putem scrie structura fundamentală. multe dintre ele fiindu-vă cunoscute de la HTML.

Din acest motiv vom proceda la o prezentare comparativă a regulilor care se aplică unui document HTML.7 Regulile XML pot fi clasificate în două categorii: reguli de sintaxă XML.1). în . Pentru moment puteţi folosi un singur parser pentru a verifica erorile conţinute de documentele dumneavoastră. În cea mai mare parte a cazurilor. reguli de validitate a documentelor XML.1 Codul sursă <P>Învaţă să priveşti dincolo de aparenţe!</P> <p>Învaţă să priveşti dincolo de aparenţe!</p> <paragraf>Învaţă să priveşti dincolo de aparenţe!</paragraf> XML Remarci: În exemplul precedent sintaxa XHTML este judecată corect atunci când exemplul HTML nu a fost considerat ca un document XHTML bine format. nu-l va interpreta şi nu va identifica tag-ul care nu este bine format. ele vor analiza documentul XHTML ca un document XML. Aceasta nu înseamnă că un navigator nu va face analiza documentului. eventual. Iată cum definim paragraful: „Învaţă să priveşti dincolo de aparenţe!” în toate cele trei limbaje (figura 1. XHTML respectiv XML. şi nu trebuie să fie analizată de un parser. înainte ca acestea să fie găzduite de un server. Acesta nu este cazul limbajului HTML. Regulile de sintaxă XML Cea mai mare parte a regulilor de sintaxă XML sunt mult mai stricte decât cele aplicate unui document HTML. navigatoarele nu vor analiza documentul XHTML ca pe un document XHTML ci mai degrabă ca un document HTML. Limbaj HTML XHTML Figura 1. obligatoriu un tag de deschidere şi unul de închidere. Închideţi toate elementele Toate elementele XML trebuie să conţină.

conţinutul (date de tip caracter) şi tag-ul de sfârşit (</p>).jpg”> <img src=”sigla. .1 (limbajul XML). <P>.1 (limbajul HTML). elementele vide trebuie să se închidă.jpg” /> XML Conform regulilor de sintaxă XML.jpg în toate cele trei limbaje (figura 1.2 Codul sursă <IMG src=”sigla. În figura 1. Deschiderea unui alt element sugerează că elementul precedent trebuie mai întâi să fie închis. folosind una din metodele prezentate mai jos: Metoda 1 – Închideţi tag-ul cu un spaţiu şi o bară oblică (vezi figura 1. Spre deosebire de HTML. spre deosebire de HTML aceste două elemente trebuie închise. elementul <paragraf> conţine tag-ul de început <paragraf>. Limbaj HTML XHTML Figura 1.2). În figura 1. Iată cum inserăm o imagine. În limbajul HTML. sigla. dar fiind elemente vide (lipsite de conţinut).1 (limbajul XHTML). ele urmează o sintaxă specială. XHTML impune ca toate elementele să fie închise. de exemplu. codul sursă conţine tag-ul de început (<P>). Remarci: În figura 1. conţinutul (date de tip caracter) şi tag-ul de sfârşit </paragraf>. conţinutul propriu-zis (date de tip caracter) şi opţional tag-ul de sfârşit </P>.2). Închideţi elementele vide Vă mai amintiţi de cunoştinţele noastre mai vechi: <IMG> şi <BR> pe care le-aţi utilizat în HTML? În XML.jpg” /> <imagine source=”sigla. elementul <p> conţine tag-ul de început (<p>). singurul mod care-i permite navigatorului să deducă situaţia în care un paragraf s-a închis este prezenţa unui alt element.8 care mai multe elemente sunt definite cu tag-urile de închidere facultative.

XHTML regula este alta: toate valorile atributelor trebuie să fie delimitate de ghilimele. care vă oferă o economie de spaţiu şi de timp. Iată cum definim valorile pentru atributul checked. care aparţine elementului <INPUT> în limbajele HTML şi XHTML (figura 1.4 . XHTML. XML (figura 1. În XML.4). Iată cum delimităm valorile a trei atribute în limbajele: HTML. Vă sugerăm să utilizaţi prima metodă. Remarcă. Limbaj HTML XHTML XML Codul sursă <P align=center>Învaţă să priveşti dincolo de aparenţe! <p style=”text-align:center”>Învaţă să priveşti dincolo de aparenţe!</p> <mesaj prioritate=”urgent”>Să nu-mi înşeli niciodată credinţa!</mesaj> Figura 1.3).3 Toate atributele trebuie să conţină valori Pentru ce mai mare parte a atributelor. Utilizaţi ghilimelele pentru a delimita valorile atributelor Limbajul HTML permite definirea fără ghilimele a valorilor atributelor.9 Metoda 2 – Adăugaţi un tag de închidere (Exemplu: <br> </br>). 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. această regulă este destul de simplă.

Imbricaţi corect elementele În general.10 Remarcă. Dacă decideţi să nu utilizaţi un DTD. De exemplu. Tag-urile XML funcţionează în acelaşi mod ca şi parantezele în matematică. Elementele XML sunt case-sensitive În XML caracterele mici sunt interpretate diferit de cele mari (case-sensitive). limbajul XML impune întotdeauna ca unui tag de deschidere să-i corespundă un tag de închidere. Altfel spus. În limbajul HTML. Nu ne rămâne decât să definim atributul egal cu el însuşi. conform regulilor XML (toate atributele trebuie să conţină valori) sintaxa nu este corectă. Regulile de imbricare sunt următoarele: Fiecărui tag de deschidere trebuie să-i corespundă un tag de închidere. Tag-ul de închidere al unui element fiu trebuie să preceadă tag-ul de închidere al părintelui său. Remarcă. Numele celor două tag-uri trebuie să fie identice. . ceea ce înseamnă că va trebui să utilizaţi elementele şi atributele aşa cum au fost ele scrise în DTD-ul (Document Type Definition) asociat. Dar. un fiu trebuie să fie închis înaintea părintelui său. Elementele imbricate sunt „fii ai elementului părinte”. regula fiind stabilită. ceea ce înseamnă că un element poate conţine alte elemente. Nu există nici-un motiv care ne poate obliga ca elementele şi atributele DTD-urilor să fie scrise cu minuscule. tag-ul <P> nu este acelaşi cu tag-ul <p>. tag-urile sunt imbricate. dar în XHTML. va trebui s-o aplicaţi în documentele dumneavoastră XHTML şi XML. sintaxa tag-ului <INPUT> este corectă.

Elementul rădăcină trebuie să conţină toate celelalte elemente ale paginii. unii dintre dumneavoastră îşi vor pune întrebarea: „de ce nu s-a schimbat elementul rădăcină <html> în <xhtml>?”.11 Exemple de elemente HTML. Atenţie! Nu întotdeauna un document bine format are o structură validă! Cele mai multe restricţii de validitate sunt facultative. Această caracteristică nu poate decât să uşureze efortul pe care îl fac parser-ele! . Remarcă. elementul rădăcină este elementul <html>. Limbajul XHTML utilizează exact acelaşi vocabular ca limbajul HTML. Această regulă este foarte simplă. XML corect imbricate HTML <P> Acesta este <B> venitul meu </B>! XHTML <p> Acesta este <b> venitul meu </b> </p>! XML <întreprindere> TIMPURI NOI <cod> 2000 </cod> </întreprindere> Exemple de elemente XML incorect imbricate XML <întreprindere> TIMPURI NOI <cod> 2000 </întreprindere> </cod> XML <rezultate> <victorii> 6 </rezultate> </victorii> Reguli de validitate a documentelor XML Regulile de sintaxă se învaţă şi se aplică uşor deoarece sunt foarte simple dar şi foarte stricte. ele merită să fie cunoscute chiar dacă nu sunt necesare! Utilizaţi un element rădăcină! Toate documentele XML trebuie să conţină cel puţin un element rădăcină. Poate. Dacă un document XML bine format respectă regulile unui DTD asociat el se numeşte document valid. XHTML. Un document XML este bine format dacă respectă toate notaţiile şi regulile structurale XML. În limbajul XHTML.

6 Declaraţia XML este facultativă Deşi declaraţia xml este facultativă. email to from date subject body <email> <to> … </to> <from> … </from> <date> … </date> <subject> … </subject> <body> … </body> </email> Figura 1. Declaraţia XML poate accepta trei atribute: version. Figura 1. . În figura 1. encoding şi standalone (figura 1. consorţiul W3C recomandă folosirea acesteia. care descrie datele e-mail (vezi figura 1.6 este prezentat documentul XML. Declaraţia xml semnalează procesorului că documentul pe care îl prelucrează este un document XML.5 este prezentat tipul de date email (element rădăcină) sub formă de structură arborescentă.7).5 În figura 1.5) de o manieră structurată.12 Un element rădăcină este delimitat printr-un tag de deschidere plasat la începutul documentului şi un tag de închidere plasat la finele documentului.

Întrucât nu există decât o singură versiune XML şi cum declaraţia XML este facultativă. Cum interpretaţi declaraţia <?xml version=”2. . procesorul curent sau cel viitor vor ştii. Titlul oficial al acestei versiuni este XML 1. este puţin probabil că specificaţia XML nu se va dezvolta. O a doua versiune a limbajului XML a fost publicată dar ea nu corectează decât erorile minore ale specificaţiei 1. Declaraţia DOCTYPE este facultativă Un document XML poate fi scris în două maniere: documente bine formate.0”>? Dacă utilizaţi declaraţia xml la începutul documentului. care respectă regulile de gramatică şi de sintaxă XML. ea poate fi abandonată.0 (A doua versiune).13 Figura 1. fără nici-o ambiguitate cum să prelucreze documentul dumneavoastră. ea nu reprezintă modificări de conţinut pentru standard.0.8 este prezentat un document bine format (o mai veche cunoştinţă a noastră!). Totuşi. Documente XML bine formate În figura 1.7 Remarci: Declaraţia xml utilizează caractere mici cu excepţia valorii atributului encoding (UTF – 8). documente valide.

Nu este admisă nici-o majusculă! În caz contrar. Atributul encoding se referă la definiţia setului de caractere utilizat în documentul XML. Figura 1.9.14 Figura 1.0 sau superioară) se obţine rezultatul afişat în figura 1.0” encoding=”ISO – 8859 – 2”?> declară că documentul este scris în XML. <to>…</to>. . Valoarea atributului version nu poate fi în acest moment decât 1. Această linie trebuie scrisă cu caractere mici. Celelalte elemente XML au fost scrise cu tag-uri … inventate de noi: (<email>…</email>.0. programul de verificare (parser) XML al navigatorului va afişa o eroare – în acest caz documentul XML nu mai este bine format. <subject>…</subject>. <body>…</body>. <from>…</from>. <date>…</date>.8 Dacă deschidem acest document în Internet Explorer (versiunea 5.9 Reguli: Prima linie a acestui exemplu <?xml version=”1.

Un document bine format nu necesită un DTD (Document Type Definition). Numele atributelor se scriu cu minuscule. Pentru a delimita valorile atributelor XML utilizaţi ghilimelele. Declaraţia DOCTYPE este facultativă. Documente XML valide Un document XML valid este un document XML bine format care conţine în plus un DTD (Document Type Definition). <!DOCTYPE email [ … Figura 1. DTD intern Două sunt tag-urile care ne permit să definim în interiorul documentului XML propria noastră structură: <!DOCTYPE> şi <!ELEMENT>. Toate documentele XML trebuie să aibă cel puţin un element rădăcină. este prezentă în figura 1.10. sfârşitul unui document XML nu este marcat cu </xml>.15 Toate elementele XML trebuie să conţină un tag de deschidere şi un tag de închidere.10 ]> . Spre deosebire de HTML. Declaraţia XML este facultativă. Acest DTD defineşte modelul documentului. Elementele vide XML trebuie să se termine cu un spaţiu urmat de o bară oblică. Comentariile XML au aceeaşi sintaxă ca şi comentariile XHTML. liniuţă (-). Tag-urile XML trebuie să fie imbricate în mod corect. Tag-ul <!DOCTYPE> permite deschiderea unui bloc de definire a tag-ului. Toate atributele XML trebuie să aibă valori. liniuţă de subliniere (_) şi trebuie să conţină cel puţin o literă. Sintaxa (reluăm exemplul anterior: email). Va trebui să dăm un nume acestui bloc. Numele tag-urilor pot conţine: caractere alfanumerice (litere şi cifre). adică structura tag-urilor. Un DTD integrat într-un document XML poate fin intern sau extern documentului.

<date>. Tag-ul <!ELEMENT> permite definirea unui tag. <from>. Astfel. date. <body>.11. nume_tag desemnează numele tag-ului (cum indică numele său). body introduceţi #PCDATA (Parser Character Data). body)>.11 .16 Numele poate conţine litere. Figura 1. from. from. subject. vom scrie: <!ELEMENT email (to. cifre (în afară de prima literă) şi caracterul de subliniere (underscore. Pentru a atribui o valoare de tip text tag-urilor: to. Tag-urile sunt apoi definite în interiorul parantezelor drepte. Sintaxa este următoarea: <!ELEMENT nume_tag (conţinut)> unde. <subject>. caracterul _). date. subject. conţinut specifică la care tag (tag-uri) sau date este legat acest tag. figura 1. pentru a defini elementul <email> care conţine tag-urile: <to>.

xml).13 Aplicaţie În figura 1. Comentaţi declaraţia DOCTYPE. Figura 1.17 DTD extern Dacă doriţi să definiţi un fişier DTD extern (ex. Figura 1.14 este prezentat un document XML bine format şi valid (client.12 Pentru a include fişierul ex.dtd în fişierul XML.12).dtd) va trebui să creaţi un nou fişier (vezi figura 1. atunci va trebui să înlocuiţi SYSTEM cu cuvântul PUBLIC. .13. Fişierul complet mail. Dacă utilizaţi un DTD public. care defineşte tipul de date client (element rădăcină). este suficient să adăugaţi linia următoare: <!DOCTYPE email SYSTEM ”ex.xml este prezentat în figura 1.dtd”> Remarcă. Cuvântul SYSTEM desemnează faptul că fişierul este definit local. care este obligatorie.

Ce este un document bine format? 6.oasis – open.asp http://www.html#applications . Ce este un document valid? Vizitaţi site-urile http://www.18 Figura 1. XML. Care sunt regulile de sintaxă XML pe care le-aţi reţinut? 4.org/cover/xml. XHTML.org/XML/ http://msdn. 5. Care dintre elementele de mai jos sunt case-sensitive: HTML.w3.com/xml/default.14 XML Testaţi-vă cunoştinţele Temă 1. Cum este utilizat XML-ul în practică? 3. Care sunt cele 10 obiective ale limbajului XML? 2.microsoft.

puteţi începe direct prin a adăuga elementele de care aveţi nevoie şi prin a introduce datele documentului. După cum aţi remarcat în conversaţia anterioară. După cum aţi putut constata (vezi Conversaţia 1). Atunci când creaţi un document XML bine format. exact ca la crearea unei pagini Web în (X)HTML.Conversaţia 2 Creaţi documente XML bine formate ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XML – Structura unui document XML bine format XML – Creaţi elemente XML cu tipuri de conţinut diferite XML – Metode şi instrumente pentru crearea documentelor XML bine formate XML – Temă ••••••••••••••••••••••••••••••••••••••••• XML Structura unui document XML bine format Un document bine format satisface un minimum de criterii de conformitate XML. într-un document XML dumneavoastră sunteţi aceia care … inventaţi propriile elemente în loc de a utiliza elementele predefinite. un document XML conţine două părţi principale: . Vă asigurăm că nu veţi avea nici o problemă de prelucrare sau de afişare a unui document XML bine format în Microsoft Internet Explorer.

o mai veche cunoştinţă de-a noastră (figura 2.20 prologul. Să începem cu … prologul! Figura 2. Pentru a înţelege mai bine anatomia unui document XML.1 Prologul cuprinde primele două linii (figura 2. Cea de-a doua linie a prologului este un comentariu. Dacă vă hotărâţi să includeţi totuşi o declaraţie XML.2). Prologul poate conţine de asemenea şi următoarele elemente opţionale: un DTD (Document Type Definition). elementul rădăcină (numit şi elementul document). o linie albă de spaţii. Figura 2.xml. care defineşte tipul şi structura documentului.2 Prima linie este declaraţia XML (opţională). ea trebuie să apară la începutul documentului. Atunci când este utilizat. Remarcă. Comentariile sunt recomandate în măsura în care acestea facilitează citirea şi înţelegerea codului sursă. vom face referiri la documentul mail.1). . DTD-ul trebuie să fie plasat după declaraţia XML. una sau mai multe instrucţiuni de prelucrare.

Un element tip cuprinde un tag de deschidere. <subject>. Tag-ul său de deschidere este <email>. sau combinaţii ale celor două. from.xml). Fiecare din elementele inserate în elementul email (to. <from>. elementul rădăcină este email. Într-un document XML. conţinutul elementului şi tag-ul de închidere. <date>. <body> (figura 2. alte elemente imbricate (nested). Figura 2. Conţinutul elementului poate fi constituit din date de tip caracter.3 Remarci: Numele care apare în tag-ul de deschidere şi în tag-ul de închidere ale unui element se mai numeşte şi tipul de element.3). Remarcă. date.21 Elementul rădăcină. În exemplul nostru (documentul mail. care poate conţine alte elemente. Elementul rădăcină din cadrul unui document XML este similar elementului BODY din cadrul unei pagini (X)HTML. body) nu conţin decât date de tip caracter. elementele indică structura logică a documentului şi conţin informaţiile corespunzătoare. tag-ul de închidere este </email>. iar conţinutul său este alcătuit din 5 elemente: <to>. subject. Într-un document XML textul este un melange de tag-uri şi de date de tip caracter sau date de tip text. . cu singura deosebire că puteţi să-i atribuiţi orice nume legal. Cea de-a doua parte a unui document XML corespunde unui element unic desemnat ca element rădăcină sau element document.

7 atributul sursa indică numele fişierului care conţine imaginea pe care dorim s-o afişăm. Figura 2.7 <sigla sursa=”Droopy. Figura 2. Figura 2. În figura 2. Adăugaţi atribute elementelor XML Puteţi insera unul sau mai multe specificaţii de atribut în tag-ul de deschidere al unui element sau în tag-ul elementului vid. Puteţi crea un element vid plasând tag-ul de închidere imediat după tag-ul de deschidere (figura 2.4 <hr> </hr> Sau. O specificaţie de atribut este o pereche nume-valoare care este asociată unui element. Un element vid poate stoca informaţie utilizând atribute XML.6 este prezentat un exemplu de atribut (vânzare) căruia i s-a atribuit valoarea RODIPET. Puteţi utiliza un element vid pentru a indica aplicaţiei XML efectuarea unei acţiuni sau afişarea unui obiect.22 Elemente vide Puteţi introduce de asemenea în documentul dumneavoastră un element vid. Figura 2.4). altfel spus un element fără conţinut.5).5 <hr /> Remarci: Cele două notaţii au aceeaşi semnificaţie.gif” /> .6 <pret vanzare=”RODIPET”> 30 euro </pret> În figura 2. puteţi utiliza tag-ul specific elementului vid (figura 2.

În figura 2. Utilizarea atributelor permite obţinerea unui mai mare grad de flexibilitate în procesul prelucrărilor.10 se prezintă rezultatul vizualizării documentului în Internet Explorer.8 sunt prezentate câteva exemple de specificaţii de atribute ilegale. care respectă norma XML pentru ca acesta să fie un document bine format. iar documentul din figura 2. elementele din prologul unui document XML bine format sunt toate opţionale.9 (document cu structură minimală) conţine un singur element <logo>. prologul este el însuşi opţional.8 <magazin tip=”C&A”> Un document XML cu structură minimală După cum am precizat.23 Remarci: Atributele reprezintă o alternativă la inserarea informaţiilor într-un document. Figura 2. Fără comentarii! <curs tip=” ”seral” ”> <album tip=”<CD>”> Figura 2. În consecinţă.10 . Figura 2.9 În figura 2.

11. Figura 2.12 se prezintă codul sursă XML. datadeînceput>. Figura 2.12 Remarci: Acest document simplu XML poate fi citit şi înţeles fără a utiliza un program specializat! Tag-urile <calendar>. <suma> imaginate de noi furnizează informaţii privind datele (de tip caracter). pornind de la secvenţa de cod (X)HTML din figura 2. <costuri>. <datadesfârşit>. în care tag-urile … imaginate de noi sunt semnificative. nu creează confuzii şi descriu conţinutul lor.24 Aplicaţie Creaţi un document XML cu structură minimală. Numele tag-urilor trebuie să respecte următoarele reguli: .11 În figura 2.

XMl. Pentru a defini relaţiile între elemente. <fraza> este elementul rădăcină. În exemplul nostru (figura 2. cifre. linii şi puncte.12). XML foloseşte următoarea terminologie: • elementul rădăcină. • elementul frate. • numele tag-urilor sunt limitate numai la caractere latine. În structura unui document XML numai elementul rădăcină nu are un element părinte. Toate celelalte elemente trebuie să se găsească în interiorul elementului rădăcină. • numele unui tag nu trebuie să conţină spaţii. Un element fiu aparţine unui singur element părinte. Prezentăm în continuare câteva din regulile care stau la baza creării unui document XML bine format.25 numele unui tag trebuie să înceapă cu o literă (majusculă sau minusculă) sau cu o liniuţă de subliniere. În XML. . spaţiu de nume. • elementul părinte.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. • numele unui tag nu trebuie să înceapă cu XML. <descriere> este elementul părinte al elementelor <calendar> şi <costuri>. • numele unui tag poate să conţină: litere. Documentul trebuie să conţină un element de cel mai înalt nivel (elementul rădăcină sau elementul document). • elementul fiu. xmL. • Regulile de aur ale documentelor XML bine formate Documentul mail. XmL. • numele unui tag poate conţine caracterul (:) numai în construcţia specială. xML. liniuţe de subliniere. <calendar> şi <costuri> sunt elemente fiu ale elementului <descriere>. XML permite utilizarea elementelor fără conţinut (vide). Elementele trebuie să fie corect imbricate. un document bine format trebuie să respecte regula: „fiecărui tag de început îi corespunde un tag de sfârşit”. xml. <calendar> şi <costuri> sunt elemente fraţi. xMl.

pe care documentul XML trebuie să o lege sau nu la o foaie de stiluri. Elementele XML sunt case-sensitive. documentele XML pe care le veţi realiza vor fi cu siguranţă bine formate şi vor fi corect interpretate de browser-e cât şi de alte programe. care manipulează şi afişează conţinutul documentului. Atunci când afişaţi un document XML într-un browser (Microsoft Internet Explorer 5 sau o versiune superioară). . Microsoft Internet Explorer 5 (sau o versiune superioară) va afişa pagina de erori. Identificaţi şi eliminaţi erorile de sintaxă XML Înainte ca browser-ul Microsoft Internet Explorer să afişeze documentul dumneavoastră XML. Numele tag-urilor elementelor vide trebuie să se termine cu o bară oblică (/). browser-ul afişează o pagină care conţine un mesaj de eroare.26 Fiecare element trebuie să conţină un tag de deschidere şi un tag de închidere. care trebuie să poarte acelaşi nume. Numele tag-urilor nu trebuie să conţină spaţii. browser-ul furnizează procesorul XML şi cel puţin o parte a aplicaţiei (termenul de aplicaţie pe care-l utilizăm este diferit de o aplicaţie XML sau vocabular pe care am definit-o în Conversaţia 1). El obţine acest acces cu ajutorul unui modul software numit aplicaţie. parser-ul său XML (analizor sintactic) analizează conţinutul documentului. fără a încerca să afişeze documentul. Dacă parser-ul detectează o eroare. Valorile atributelor trebuie să fie plasate între ghilimele sau apostrofuri. Remarci: Procesorul XML este modulul software care citeşte documentul XML şi furnizează accesul la conţinutul documentului. ci numai litere. Dacă dumneavoastră respectaţi aceste reguli (pe care vi le reamintim ori de câte ori avem ocazia s-o facem). cifre (nu în prima poziţie) şi liniuţe de subliniere (_).

Figura 2. în exemplul nostru) se numeşte element părinte.14) care nu este bine format. Afişaţi documentul XML într-un browser.13) care nu este bine format! Figura 2.15 Remarci: Un element care conţine unul sau mai multe elemente imbricate (carte. Afişaţi documentul XML într-un browser. a) Un document (figura 2. b) Un document (figura 2.14 Remarcă. . Un element care este conţinut direct în elementul părinte (titlu. Afişaţi documentul XML într-un browser. parser-ul verifică numai dacă documentul este bine format şi afişează un mesaj în caz de eroare.13 Remarcă. în exemplul nostru) se numeşte element fiu sau sub-element sau element inserat în elementul părinte. c) Un document (figura 2.27 Atunci cânt deschideţi un document XML direct în Microsoft Internet Explorer 5 (sau o versiune superioară).15) care nu este bine format! Figura 2. El nu verifică dacă documentul este valid! Aplicaţii Verificaţi dacă următoarele documente sunt bine formate. Identificaţi şi eliminaţi erorile de sintaxă.

Elemente imbricate.16 Remarcă. Puteţi include diferite tipuri de item-uri în conţinutul unui element. referinţe de entităţi generale sau referinţe de caractere.17 elementul adresa conţine 5 elemente imbricate. după cum urmează: elemente imbricate (nested). instrucţiuni de prelucrare. date de tip caracter.16) care nu este bine format! Figura 2. secţiuni CDATA. În figura 2. XML Creaţi elemente XML cu tipuri de conţinut diferite Conţinutul unui element este textul situat între tag-ul de început şi tag-ul de sfârşit al acestuia. comentarii.28 d) Un document (figura 2. . Afişaţi documentul XML într-un browser.

18 În figura 2.18 conţinutul elementului titlu îl reprezintă datele de tip text (Pădurea spânzuraţilor). . ]]> (şir de caractere).17 Date de tip caracter.19 este ilustrat un exemplu de conţinut al unui element care cuprinde atât date de tip text (Calea Victoriei) cât şi un element imbricat (subtitlu).29 Figura 2. & (simbolul ampersand). Datele de tip caracter reprezintă textul corespunzător conţinutului informativ al unei element. Atunci când adăugaţi text unui element puteţi insera orice caracter cu excepţia următoarelor caractere (speciale): < (simbolul mai mic). În figura 2. Figura 2. Figura 2.19 Remarcă.

În figura 2. Rolul unei instrucţiuni de prelucrare este de a furniza o informaţie pe care procesorul XML să o poată trimite unei .22 Instrucţiuni de prelucrare. orice caracter doriţi cu excepţia şirului de caractere ]]>. O secţiune CDATA este un bloc de text în interiorul căruia puteţi insera liber.20 este prezentat un exemplu care conţine o referinţă de entitate generală internă în vederea afişării copyright-ului. În figura 2.21 Secţiuni CDATA.21 este prezentat un exemplu care conţine o referinţă de caractere în vederea afişării simbolului © de copyright.20 Referinţe de caractere. Figura 2.30 Referinţe de entităţi generale. Figura 2.22 este prezentat un exemplu de secţiune CDATA plasată în elementul <mesaj>. În figura 2. Figura 2.

Comentariile.26 se prezintă un exemplu de comentariu ilegal.24 Puteţi insera un comentariu la finele elementului rădăcină (figura 2.(figura 2.25 În figura 2.& mai puţin linia dublă -. Folosiţi instrucţiuni de prelucrare pentru a preciza navigatorului forma de prelucrare sau de afişare a documentului. Remarci: Un comentariu debutează cu <!-. În figura 2. >.23 este prezentat un exemplu de instrucţiune de prelucrare XML.24). Figura 2. . Puteţi introduce caracterele speciale <. Figura 2.şi se termină cu caracterele -->.23 Remarci: Instrucţiunea de prelucrare din prolog creează o legătură către o foaie de stiluri pentru a afişa datele de tip caracter ale unui document XML. Un comentariu reprezintă o adnotare în documentul dumneavoastră XML pe care însă programatorul o poate folosi (citi) dar procesorul XML … o ignoră.25). Figura 2.31 aplicaţii.

un document XML bine format.32 Figura 2. – Documente XML. Pentru a crea documente XML bine formate. Editorul XML Spy. – Editorul XML Notepad sau. Iată cum creăm cu editorul de texte Notepad. Metoda 3 Metoda 4 Metoda 5 Metoda 6 – Programe care generează fişiere XML. De menţionat că toate instrumentele şi metodele recomandate prezintă avantaje şi dezavantaje. multe dintre acestea fiind gratuite (!). care conţine următorul mesaj e-mail: „Trimiteţi script-urile” (vezi Conversaţia 1). . – Aplicaţii care generează date sub forma unor documente XML. folosiţi una din metodele prezentate mai jos: Metoda 1 Metoda 2 – Editorul de texte Notepad.26 XML Metode şi instrumente pentru crearea documentelor XML bine formate Documentele XML bine formate pot fi create cu ajutorul mai multor instrumente (soft). – Baze de date. de care va trebui să ţineţi seama în alegerea pe care urmează să o faceţi.

Figura 2.0” encoding=”ISO-8859-1” ?>. Tastaţi. 2. Declaraţia poate preciza de asemenea şi setul de caractere utilizat (atributul encoding): <?xml version=”1. W3C va propune în viitor noi modificări. prima linie a documentului (figura 2. Setul UTF-8 reprezintă caracterele ASCII standard pe 1 octet şi caracterele accentuate pe 3 octeţi. .28 Remarci: Comentariile XML sunt similare comentariilor HTML.28). Declaraţia poate conţine şi alte informaţii. exceptând valoarea atributului encoding (ISO-8859-1). încă numit ISO-Latin 1 conţine caracterele accentuate ale limbii franceze. Declaraţia <?xml version=”1. Figura 2. cu litere mici. Lungimea comentariilor nu este limitată. înlocuind setul UTF-8 utilizat în mod implicit. Tastaţi <email>.27). Cu siguranţă. Declaraţia XML trebuie să utilizeze caractere mici.0” ?> indică browser-ului că … se află în faţa unui document XML. 3. dar forma cea mai simplă este cea indicată. Setul de caractere ISO-8859-1.33 Metoda 1 – Editorul de texte Notepad 1. apăsaţi de câteva ori tasta Enter după care tastaţi </email> (figura 2. Comentariile nu necesită tag-uri de închidere. Introduceţi comentariul „Prima aplicaţie XML” (figura 2.29).27 Remarci: Prima linie a documentului este o declaraţie XML.

<subject>. <from>. Puteţi da orice nume elementului rădăcină. Modelul general al unui exemplar (instance. Introduceţi între tag-urile <email> … </email> tag-urile <to>.30).29 Remarci: <email> este elementul rădăcină. în limba engleză) specific tipului de date e-mail este: <email> <to> </to> <from> </from> <date> </date> <subject> </subject> <body> </body> </email> 5.34 Figura 2. Salvaţi fişierul în folder-ul My Documents.30 Remarcă. Figura 2. sub numele mail. <date>. <body> care descriu structura mesajului (tipul de date) e-mail (figura 2. dar nu uitaţi că acesta trebuie să fie semnificativ! 4.31). . <email> … </email> delimitează tipul general de date.xml (figura 2.

31 Remarcă.32).txt. Dacă editorul dumneavoastră de texte adaugă extensia .35 Figura 2.xml”).32 . Figura 2. plasaţi numele fişierului între ghilimele (“mail. Afişaţi documentul XML în Microsoft Internet Explorer (figura 2. 6.

Pentru aceasta. verificaţi codul XML în editorul de texte (declaraţia XML se găseşte pe prima linie?. salvaţi din nou fişierul şi reîncărcaţi-l în browser. Puteţi cere navigatorului să afişeze un tag particular cu un anume font. via Start Microsoft XML Notepad Programs Microsoft XML Notepad (figura 2.34 . Metoda 2 – Editorul XML Notepad 1. documentul a fost corect salvat?). fie transformaţi tag-urile XML în HTML cu ajutorul unui limbaj XSLT (XML Stylesheet Language Transformation). Deschideţi aplicaţia XML Notepad.34). Schimbaţi numele elementului rădăcină în email (figura 2. tag-urile de deschidere au fost scrise corect?.36 Remarci: Dacă fişierul dumneavoastră nu a fost afişat corect sau aţi obţinut un mesaj de eroare (!). Figura 2. Figura 2.33 2. corectaţi erorile. tag-urile XML au fost introduse corect?. color etc.33). size. fie utilizaţi foile de stiluri CSS.

36). Introduceţi în fereastra Values valoarea pentru elementul to (figura 2. Figura 2.35).37 . Inseraţi un nou element via Insert Element (figura 2.37). Figura 2. Schimbaţi numele elementului fiu Child_Element în elementul fiu to (figura 2.36 5. Figura 2.37 3.35 4.

Introduceţi numele acestui element. 6. subject şi body (figura 2. Figura 2. Repetaţi paşii 5.39 8. Introduceţi valoarea elementului (figura 2. Figura 2.38 6.38).39). Figura 2.40). from (figura 2. 7 pentru elementele date.38 7.40 .

Figura 2.smlspy.41 10. Salvaţi documentul cu numele email în folder-ul My Documents (figura 2. Figura 2.42.39 9.com).43). Suite document e-mail cu XML Spy 1.com) Iată cum creăm acelaşi (http://www.xmlspy. Deschideţi aplicaţia XML Spy. Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară). via Start XML Spy IDE (figura 2.41). figura 2.42 Metoda 2 – XML Spy (http://www. Programs XML Spy .

Creaţi un nou document via File New (figura 2.43 2. Figura 2. 3. iar apoi apăsaţi butonul OK (figura 2.40 Figura 2.44 Remarcă.45). Se deschide fereastra Create new document. .44). În fereastra Create new document alegeţi tipul de document dorit.

46 4. Adăugaţi un nou element via XML 2. Figura 2. Se creează un nou document XML (figura 2.47).45 Remarcă. Append Element (figura .46).41 Figura 2.

care este elementul rădăcină. introduceţi elementul fiu (figura 2.48).47 5. . Introduceţi numele elementului – email (figura 2.48 6.42 Figura 2.49). Pentru acest element. Figura 2.

Figura 2.49 7.50).50 .43 Figura 2. Introduceţi numele şi atributul acestui element (figura 2.

via XML (figura 2.44 8.51 9. Adăugaţi şi celelalte elemente. Append Element Figura 2.51). Introduceţi numele elementelor şi atributele lor (figura 2. Figura 2.52 .52).

4. Metoda 2 – Transformaţi elementele XML în HTML înainte de a le afişa. Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară).53 11. 6) de creare a documentelor XML. folosiţi metodele prezentate mai jos. Figura 2. În continuare. figura 2. . Salvaţi documentul cu numele email1 în folder-ul My Documents (figura 2. descriem pe scurt caracteristicile celorlalte metode (3. Pentru a afişa în anumite condiţii (pe care le puteţi impune) documentul XML într-un browser. Metoda 1 – Utilizaţi foile de stiluri CSS. Figura 2.54 Remarcă.53).45 10.54. 5.

Este normal. . câştigul de timp este apreciabil în raport cu metoda clasică (actualizarea separat a bazei de date şi a listelor cu tranzacţii. Datorită sintaxei simple a XML-ului se pot scrie uşor aplicaţii care să genereze datele sub forma unor documente XML. datele sunt înregistrate sub o formă structurată permiţând efectuarea a numeroase prelucrări (sortări. manipulări. sortând. Există numeroase similitudini între documentele XML şi bazele de date. personalizând afişarea acestora.46 Remarci: Programele capabile să înregistreze datele în format XML sunt din ce în ce mai numeroase: Microsoft Office. extrăgând informaţii. PAO etc. de exemplu) – Metoda 5. Aceste programe generează direct fişiere XML. selecţii. cazul unui catalog de produse. În cele două cazuri. Limbajul XSLT este un limbaj creat pentru acest scop: sortare. selecţie şi accesare date XML (Metoda 4). pe care apoi le puteţi consulta şi modifica cu orice editor de texte sau editor XML (Metoda 3). urmând ca aceste date să poată fi exportate sub diferite forme (Metoda 6). ca odată cu generalizarea formatului XML tot mai mulţi utilizatori să dorească să utilizeze acest tip de document. interogări). Dacă doriţi să actualizaţi baza de date şi să afişaţi datele modificate. Unul din marile avantaje privind legătura între bazele de date şi documentele XML este productivitatea.

55).47 XML Testaţi-vă cunoştinţele Temă 1. XML Spy).org/AudioVideo/ http://www.w3.org/TR/SVG/ http://www. Descrieţi în XML următoarele structuri de date (figura 2.55 2. Cum puteţi afişa un document XML într-un browser? Vizitaţi site-urile http://www. Figura 2.55 utilizând una din metodele prezentate mai jos: Metoda 1 – Utilizaţi un editor de texte (Notepad). 3.org/TR/2000/REC-xml-20001006 .w3. Metoda 2 – Utilizaţi un editor XML (XML Notepad.w3. Creaţi documentul XML din figura 2.

O soluţie de a ocoli această restricţie este de a utiliza o referinţă de caracter (exemplu. &#169 pentru caracterul ©) sau o referinţă de entitate generală predefinită (exemplu.Conversaţia 3 Inseraţi caractere speciale cu XML ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XML – Caracterele speciale pot provoca erori de prelucrare XML – Inseraţi secţiuni CDATA XML – Utilizaţi entităţi predefinite XML – Definiţi şi utilizaţi o referinţă de entitate generală internă XML – Temă ••••••••••••••••••••••••••••••••••••••••• XML Caracterele speciale pot provoca erori de prelucrare După cum aţi putut constata. În acest caz este mult mai simplu de a plasa textul care conţine caractere speciale în interiorul unei secţiuni CDATA. &lt. © în datele din conţinutul unui element. utilizarea referinţelor este complicată şi creează dificultăţi la citirea datelor. pentru caracterul <). &. . Totodată. & etc. dacă doriţi să inseraţi mai multe caractere speciale (<. nu puteţi insera direct caracterele speciale: <. >.). >.

Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară). Creaţi cu XML Spy un document XML (ecuatie.1 Remarcă. Inseraţi secţiuni CDATA O secţiune CDATA permite afişarea (fără erori!) datelor care conţin Iată cum afişăm în XML mesajul: „Dacă a<>0 atunci x=b/a”. 2.1).2.xml) cu structura minimală: <mesaj>Dacă a<>0 atunci x=b/a.xml nu va putea fi afişat din cauza caracterelor speciale „<” şi „>” inserate. 1.2 . figura 3. Figura 3.50 XML caractere speciale. Documentul ecuatie. </mesaj> (figura 3. Figura 3.

Cuvântul cheie CDATA se scrie cu majuscule. 4. Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau superioară). Plasaţi mesajul într-o secţiune CDATA (figura 3. 3.3 Remarci: O secţiune CDATA începe cu <![CDATA[ şi se termină cu ]]>. Secţiunile CDATA nu pot fi imbricate.4 Remarcă. Figura 3. Browser-ul afişează un mesaj de eroare provocat de existenţa caracterelor „<” şi „>”. Navigatorul afişează textul plasat în secţiunea CDATA fără eroare.51 Remarcă. figura 3.3).4. . Toate caracterele unei secţiuni CDATA sunt tratate ca o parte literală a datelor de tip caracter ale elementului şi nu ca un tag XML. Figura 3.

&gt.6 . Înlocuiţi caracterul & cu referinţa la entitatea predefinită &amp. utilizând entitatea predefinită &amp.5 Caracter inserat predefinit & < > ’ ” Referinţa de caracter echivalentă &#38. 1. &#60. &apos. &#62.52 XML Utilizaţi entităţi predefinite Într-un document XML. pentru a insera caracterul special &. Figura 3. Iată cum creăm un document XML (cu structură minimală) care conţine codul <promo>Vizitaţi magazinele C&A!</promo>.6). &quot. Remarci: Inserarea uneia din aceste referinţe de entităţi predefinite este echivalentă cu inserarea referinţei de caracter echivalentă. Referinţa entitate &amp. &lt.5. Referinţele de entităţi predefinite sunt mult mai uşor de reţinut şi de înţeles atunci când le vedeţi într-un document. Figura 3. (figura 3. &#34. puteţi utiliza o referinţă la o entitate predefinită pentru a insera unul din cele cinci caractere listate în figura 3. &#39.

53 Remarci: Referinţa la entitatea predefinită &amp. Figura 3. Indicaţie. înlocuind semnul întrebării (?) cu valoarea hexazecimală a lui 169. este identică celei utilizate în (X)HTML – începe cu &. Utilizaţi referinţe de caractere &#169. Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară).7 Remarcă. caracterul & apare explicit. (X)HTML utilizează entităţi de caractere pentru afişarea caracterelor speciale. sau &#?. asociate documentelor XML: întreg documentul XML. se continuă cu amp şi se termină cu punct şi virgulă. în timp ce XML nu le utilizează decât pentru specificarea datelor. XML Definiţi şi utilizaţi o referinţă de entitate generală internă Specificaţiile XML utilizează termenul entitate. o secţiune DTD externă. În navigator. în sens general pentru a se referi la unul din tipurile de stocare. Aplicaţie Creaţi documentul XML (cu structură minimală) care conţine codul <copyright>©2003 LUMINA BLANDA</copyright>.7. . 2. figura 3.

entitatea internă cp (figura 3. Figura 3. În cele ce urmează vom utiliza termenul entitate într-un sens mai restrâns şi anume referirea la un şir de caractere plasat între ghilimele. În particular. un şir de caractere între ghilimele.8 . Introduceţi în DTD-ul documentului (bine format).54 un fişier extern. acolo unde doriţi. ceea ce permite inserarea rapidă a textului. mecanismul entităţilor XML este util pentru stocarea blocurilor de text XML foarte des utilizate. imediat sub linia de comentariu. frecvent utilizate în site-ul nostru: Copyright 2003 LUMINA BLANDA. definit ca o entitate externă într-un DTD şi referită cu ajutorul unei referinţe de entitate. Iată cum adăugăm. la finele documentului email.8). definit ca entitate într-un DTD al documentului şi referit cu ajutorul referinţelor de entităţi. Metoda 1 – Editorul de texte Notepad 1. datele de tip text. cp.xml. Referinţele entităţilor generale interne se definesc în DTD prin tag-ul <!ENTITY>. definit ca o entitate internă într-un DTD şi referită cu ajutorul unei referinţe de entitate. Vom defini şi utiliza o referinţă de entitate generală internă.

Numele entităţii (cp) reprezintă numele atribuit entităţii în declaraţia <!DOCTYPE>. în aplicaţia noastră). conţine numele entităţii (cp) plasat între & şi . (figura 3. la finele documentului. şirul nu poate conţine caracterul (%). 2. Referinţa de entitate &cp. nume de produs. O entitate internă este o entitate conţinută într-un şir de caractere plasat între ghilimele. excepţie făcând începutul unei referinţe de entitate caracter sau entitate generală.9). copyright etc. O entitate externă este o entitate conţinută într-un fişier separat. şirul nu poate conţine caracterul (&).. numit şir între ghilimele sau expresie literală (Copyright 2003 LUMINA BLANDA. Figura 3. titlu. . valoarea pe care dumneavoastră o atribuiţi unei entităţi generale interne este un şir de caractere delimitat prin ghilimele.9 Remarci: Declaraţia unei entităţi trebuie să preceadă referinţa la această entitate. conţinutul şirului trebuie evident să fie plasat legal. Introduceţi referinţa de entitate &cp. în locul în care doriţi să inseraţi entitatea. nume_entitate (cp în exemplul nostru) trebuie să respecte regulile de aur XML. cu respectarea următoarelor reguli: şirul poate fi delimitat cu ajutorul unor ghilimele simple (’) sau duble (”). şirul nu poate conţine ghilimele identice cu cele ale delimitatorilor. Entităţile interne sunt definite în DTD cu tag-ul special <!ENTITY> care este sintaxa: <!ENTITY nume_entitate valoare_entitate> unde.55 Remarci: Referinţele entităţilor generale interne se folosesc pentru texte frecvent utilizate: adresă. Puteţi afecta unei entităţi generale interne întreaga valoare a unei expresii generale interne. valoare_entitate este valoarea entităţii.

Executaţi clic pe simbolul minus (-) din stânga elementului email (figura 3. Întrucât documentul email.10).xml) într-un browser (figura 3.10 Remarci: Navigatorul înlocuieşte codul cp prin valoarea entităţii (figura 3. Vizualizaţi documentul (email. navigatorul (Internet Explorer) se mulţumeşte să afişeze codul sursă al documentului care cuprinde: tag-urile (comentariile) şi datele de tip caracter. Utilizarea unei entităţi generale internă prezintă avantajul următor: puteţi modifica valoarea în tot documentul XML.56 Entitatea cp se mai numeşte entitate generală internă analizabilă (corespunde tipului XML bine format).10).11).xml nu conţine un link la o foaie de stiluri. . Microsoft Internet Explorer atribuie un cod color diferitelor componente ale documentului pentru a facilita identificarea acestora şi afişează elementul documentului (<email>) sub forma unei arborescenţe retractabile/expandabile pentru a indica structura logică a documentului şi a vă permite vizualizarea diferitelor nivele de detaliu. 3. Figura 3.

57 Figura 3.12 Metoda 2 – Editorul XML Spy Iată cum creăm acelaşi document email.11 Elementul documentului se va contracta. În figura 3. .xml cu XML Spy.xml în care puteţi identifica numele elementelor şi atributele lor.12. Figura 3.13 se prezintă documentul email. ca în figura 3.

care nu pot fi inserate sub forma lor literală.13 Aplicaţie Comentaţi următoarele exemple: <titlu>&lt.58 Figura 3. În cele trei exemple. B”> Remarcă. referinţele de entităţi predefinite sunt utilizate pentru a insera caractere. fatalitate><titlu> <produs compania=”C&amp. . Kit &quot.A”>bluză vară<produs> <!ENTITY titlu ”c1 &quot.

xml. Care este semnificaţia următoarelor referinţe de entitate: &qt.org/Markup/ http://www.w3. &amp. În ce situaţii utilizaţi o secţiune CDATA? Vizitaţi site-urile www. 2. În ce situaţii definiţi şi utilizaţi o referinţă de entitate generală internă (analizabilă)? 3.com www.ibiblio.htm .org/pub/sun-info/standards/xml/why/xmlapps.59 XML Testaţi-vă cunoştinţele Temă 1. &lt.

Figura 4. Aplicaţii XML – Temă ••••••••••••••••••••••••••••••••••••••••• XML Să nu uităm … documentele XML bine formate Fiecare document XML trebuie să fie bine format. el trebuie să satisfacă un minimum de exigenţă şi de conformitate (figura 4. Altfel spus. Aplicaţii XML – Adăugaţi atribute unui element XML.1).1 .Conversaţia 4 Creaţi documente XML valide ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XML – Să nu uităm … documentele XML bine formate XML – Definiţi structura unui document XML valid.

Aplicaţii Un document XML bine format poate fi de asemenea valid. O declaraţie de tip de document are următoarea sintaxă: <!DOCTYPE nume_element DTD> unde. care se plasează în prologul unui document XML valid. Un DTD furnizează procesorului XML (Microsoft Internet Explorer) un prototip standard pentru verificarea validităţii documentului. oricare ar fi el. atributele şi alte caracteristici ale documentului. browser-ul. Adăugaţi un DTD O declaraţie de tip de document este un bloc de tag-uri XML. Un document XML valid este un document bine format. el nu poate fi considerat ca un document XML. . Definiţi structura unui document XML XML valid. care satisface următoarele două criterii: Prologul documentului cuprinde o declaraţie de tip de document care conţine un DTD ce defineşte structura documentului. nu va afişa nici-un mesaj de eroare! Dacă un document nu este bine format. Remarci: Norma XML defineşte DTD-ul ca „o gramatică pentru o clasă de documente”. Restul documentului se conformează structurii definite în DTD. nume_element este numele elementului rădăcină. care conţine declaraţii ce definesc elementele.62 Remarcă. Dacă suprimaţi elementul <mama> sau dacă adăugaţi încă trei elemente <copil>. DTD este definiţia tipului de document (Document Type Definition).

DTD-ul trebuie să fie înlocuit prin conţinutul său real. altfel spus. urmate de o paranteză dreaptă închisă (]).63 Remarci: Ca toate cuvintele cheie XML. entităţi care nu sunt analizabile utilizând cuvântul cheie ENTITY. În figura 4. instrucţiuni de prelucrare. DOCTYPE trebuie să fie scris cu majuscule. externe). declararea listei de atribute. atributele şi alte caracteristici.2 se prezintă un document XML valid complet.2 Un DTD (Document Type Definition) poate conţine următoarele tipuri de declaraţii: declararea tipurilor de elemente. declararea entităţilor (interne. entităţi analizabile. comentarii. Figura 4. utilizând cuvântul cheie ELEMENT. declararea notaţiilor. utilizând cuvântul cheie NOTATION. DTD-ul se compune dintr-o paranteză dreaptă deschisă ([). . urmată de o serie de declaraţii de tag-uri. care conţine un DTD cu o singură declaraţie (de tip element) fără restricţii de conţinut (ANY). Declaraţiile de tag-uri descriu structura logică a documentului. ele definesc elementele documentului. referinţe de entităţi de parametrii.

adresa şi informaţiile de contact ale unui client (figura 4. Considerăm că este mai uşor de înţeles structura unui DTD cu ajutorul unui exemplu. specificaţiile elementelor. 2002. Young.3). trebuie să declaraţi explicit tipul fiecărui element utilizat în document. Tehnologia aplicaţiilor Web (XML. de conţinut sau modelul de conţinut ale . Altfel spus. consultaţi lucrările: Floarea Năstase. ordinea elementelor.64 Remarcă. ASP). declaraţiile DTD indică: tipul de elemente pe care documentul le conţine. Declaraţi tipul de element Într-un document XML. DOM. Michael J. 2001. Etape par étape. Declaraţiile DTD descriu structura logică a documentului. Paris. O declaraţie de tip de element (DTD) precizează numele tipului de element şi conţinutul autorizat al elementului (specificând totodată şi ordinea în care elementele pot apărea). Editura Economică. Microsoft Press. XML. Iată cum creăm un DTD care include numele. Pentru mai multe informaţii privind tipurile de declaraţii. Pavel Năstase.

Definiţi un document de tip client (figura 4. Elementele: nume.65 Figura 4. Simbolul se traduce prin (figura 4. Schema a fost realizată cu aplicaţia XML Spy (vezi www. adresa.5 . Pentru a construi un DTD trebuie să cunoaştem lista elementelor pe care dorim să le asamblăm.4): telefon telefoane Figura 4.com).4 telefon telefon 1.5).3 Remarci: Scopul unui DTD este de a defini elementele care pot fi utilizate într-un document XML şi de a specifica relaţiile între ele. Schema din figura 4. Figura 4. telefoane sunt obligatorii.xmlspy. Un client poate fi valid numai cu o adresă şi un telefon.3 se numeşte schema modelului de date şi defineşte conţinutul elementului client. iar elementul online este opţional.

Caracter ? + Semnificaţie Nici una sau o apariţie a elementului precedent (este opţional). Definiţi elementul client specificând structura sa. în ordinea indicată (figura 4. Tabelul 1 * 3.66 2. Elementele cu unul sau mai multe elemente fiu sunt definite cu numele elementelor fiu plasate între paranteze rotunde. adresa. Faptul că ele sunt separate prin virgulă impune ca ele să se găsească în ordinea indicată. Una sau mai multe apariţii a elementului precedent. telefoane.6 Remarci: <!ELEMENT client> defineşte elementul client.6). online.1 Utilizaţi sintaxa: . semnul plus (+) şi asteriscul (*). model_conţinut sau specificatii_continut precizează conţinutul elementului. Elementul online? (online urmat de un semn de întrebare) poate să nu apară sau să apară o singură dată în conţinutul unei instanţe (este opţional).1 Utilizaţi sintaxa: <! ELEMENT nume_element model_conţinut> unde. 3. Figura 4. online?. Nici una sau mai multe apariţii a elementului precedent. care conţine patru elemente: nume. 2. 2. Specificaţi conţinutul elementului nume.2 Înlocuiţi nume_element cu client şi model_conţinut cu: nume. a căror semnificaţie este precizată în tabelul 1. telefoane. adresa. Puteţi modifica model_conţinut utilizând: semnul întrebării (?). nume_element este numele elementului rădăcină.

7 Remarci: PCDATA este prescurtarea de la Parsed Character Data (date caracter analizabile). Figura 4.9 4.8 Pentru elementele cu un conţinut oarecare folosiţi cuvântul cheie ANY (figura 4. Figura 4. Figura 4. Definiţi elementul adresa (vezi figura 4.3) specificând structura sa (figura 4.8).2 Înlocuiţi nume_fiu cu nume şi model_conţinut cu #PCDATA (figura 4. Figura 4.67 <! ELEMENT nume_fiu model_conţinut> 3.10).9). Elementul nume poate conţine numai text.7). Pentru a preciza conţinutul unui element vid folosiţi cuvântul cheie EMPTY (figura 4.10 . care va fi analizat de către procesorul XML.

cod. Numerele de telefon pot fi deci introduse direct între tag-urile de închidere şi de început. Altfel. Elementul telefon va conţine text ca şi elementele strada. Figura 4.12). Definiţi elementul telefoane specificând structura sa (figura 4. număr. figura 4. ? ce apar în model_conţinut al unui element părinte semnifică faptul că elementul declarat este obligatoriu şi nu se poate repeta (el trebuie să apară o dată şi numai o dată). +. specificaţi conţinutul (date de tip text) celor două elemente fiu. ţara. Definiţi elementul online cu cele două elemente fiu email şi url. Figura 4.12 Remarci: Elementul telefoane poate conţine numai elemente telefon.68 5. iar apoi închideţi tag-ul <!DOCTYPE> (figura 4. cod. Absenţa unuia din operatorii: *. se va genera o eroare în faza de validare. număr.13). Semnul „+” semnifică faptul că elementul telefoane trebuie să conţină cel puţin un element telefon şi că acest element poate fi repetat ori de câte ori este necesar.11. oraş. . oraş. 7. Specificaţi conţinutul (date de tip text) elementelor: strada.11 6. ţara.

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: Definiţia 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
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 cuvântul cheie SYSTEM urmat de un URL-relativ (client.dtd) sau absolut (http://...): <!DOCTYPE client SYSTEM ”client.dtd”>.

8. Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară), figura 4.17.

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

Elementele sunt separate prin virgule. Elementele nume, adresa, telefoane sunt obligatorii, online este facultativ.
<!ELEMENT client (nume|adresa|telefoane)+, online?)>

Unul din elementele: nume, adresa, telefoane poate fi prezent. Semnul + precizează că această opţiune poate fi repetată. Elementul online nu se schimbă. Fiecare element poate să apară o dată, în mod opţional. Fiind separate prin virgule, elementele trebuie să apară în ordinea indicată.
<!ELEMENT client (nume?, adresa?, telefoane?, online?)>

Figura 4.18 Precizaţi care din afirmaţiile următoare sunt corecte.18.21. . Element rădăcină invalid (figura 4.20 Se consideră DTD-ul descris în figura 4. Element rădăcină valid (figura 4. 1.19 2.72 Aplicaţii Se consideră DTD-ul descris în figura 4.20).19). Figura 4. Figura 4.

73

Figura 4.21 Precizaţi care din afirmaţiile următoare sunt corecte. 1. Element rădăcină valid (figura 4.22).

Figura 4.22 2. Element rădăcină invalid (figura 4.23).

Figura 4.23 3. Element rădăcină invalid (figura 4.24).

Figura 4.24 4. Element rădăcină valid (figura 4.25).

74

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

Figura 4.26 Precizaţi care din afirmaţiile următoare sunt corecte. 1. Element rădăcină valid (figura 4.27).

Figura 4.27 2. Element rădăcină invalid (figura 4.28).

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

75

Figura 4.29 Precizaţi care din afirmaţiile următoare sunt corecte. 1. Element rădăcină valid (figura 4.30).

Figura 4.30 2. Element rădăcină valid (figura 4.31).

Figura 4.31 3. Element rădăcină valid (figura 4.32).

Figura 4.32

Permite declararea unei imagini într-un DTD şi apoi utilizarea acesteia într-un document. O referinţă la un identificator unic. Numele unei entităţi externe. Atributele nu sunt obligatorii. O listă de NMTOKEN separate prin spaţii. Aplicaţii Toate elementele descrise într-un DTD pot avea un număr oarecare de atribute. atributele au o valoare. după cum urmează: <! ATTLIST nume_element valoare_implicită> nume_atribut tip_atribut . valoarea trebuie să fie plasată între ghilimele. O listă de entităţi externe (separate prin spaţii). O listă de referinţe la identificatori unici (separaţi prin spaţii). Remarcă. Identificator unic. Iată ceea ce ştim până în acest moment despre atribute: atributele au un nume.76 XML Adăugaţi atribute unui element XML. Lista de atribute a unui element XML începe cu ATTLIST. Ele permit adăugarea de informaţii suplimentare în mod simplu. Tipuri de atribute CDATA ENTITY ENTITIES Enumerare ID IDREF IDREFS NMTOKEN NMTOKENS NOTATION Tabelul 2 Descriere Poate conţine text (şir de caractere). În tabelul 2 se prezintă diferite tipuri de atribute cu o scurtă descriere. O listă de cuvinte separate prin „|”. Un cuvânt.

77 unde.numele elementului căruia i se asociază nume_atribut.33 .33) realizat cu aplicaţia XML Spy. . Figura 4.unul din cuvintele rezervate: #REQUIRED (atributul trebuie să fie întotdeauna prezent). . Vom utiliza modelul de date (modificat) client (figura 4.numele atributului urmat de modelul reprezentând valorile posibile. Iată cum procedăm pentru a adăuga atributul tip=”telefon” elementului <mobil>. nume_element nume_atribut tip_atribut valoare_implicită . #FIXED (atributul va utiliza întotdeauna valoarea implicită care a fost declarată). .vezi tabelul 2. #IMPLIED (prezenţa atributului este facultativă).

35 2. nume_atribut cu tip. Introduceţi după ultimul element definit (<!ELEMENT mobil (#PCDATA)>) linia <!ATTLIST nume_element nume_atribut tip_atribut valoare_implicită>. precum luminablanda1. Figura 4. înlocuind nume_element cu mobil.35). tip_atribut cu CDATA şi valoare_implicită cu #IMPLIED (figura 4. Definiţia XML a modelului de date (modificat) client este ilustrată în figura 4.dtd). .xml din figura 4.dtd) pentru generarea documentelor XML. Utilizaţi noua schemă completă (client1.36.78 Remarcă.34 (client1.34 1. Figura 4.

Figura 4.37). Introduceţi în elementul <mobil> din documentul luminablanda1.38. Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară). figura 4.79 Figura 4.36 3. .37 4.xml atributul tip=”telefon” (figura 4.

39): Figura 4.38 Aplicaţii Adăugaţi un atribut elementului <client> care să evidenţieze tipul clientului: persoană fizică sau persoană juridică. .39 <!ATTLIST client tip=(fizica|juridica) #REQUIRED> Actualizaţi documentul XML care utilizează noua schemă (figura 4. Introduceţi în schema anterioară următoarea linie de cod (figura 4.80 Figura 4. Indicaţie.40 … Adăugaţi elementului <client> un atribut de tip identificator unic. Introduceţi următoarea linie de cod (figura 4. Indicaţie.41).40): … <client tip=”fizică”> Figura 4.

. Iată care este procedura pe care vă invităm s-o aplicaţi. mobil?)> Figura 4.. Construiţi DTD-ul corespunzător en-tête-ului (figura 4.dtd schimbaţi linia de cod a elementului <telefon> (figura 4. de cercetare etc).41 .43 2... <!ATTLIST client tip (fizica|juridica) #REQUIRED id ID #IMPLIED> Figura 4.. <!ELEMENT telefon (acasa?.81 . .42 . Modificaţi elementul <telefon> astfel încât elementele <acasa> şi <mobil> să fie opţionale. serviciu. 1.. bibliografie [2].. În documentul client1. Figura 4. introducere.44). Elementele raportului (structura ierarhică) sunt: en-tête.42). Construiţi DTD-ul corespunzător unui raport (tehnic. Construiţi DTD-ul corespunzător introducerii şi concluziilor (figura 4.. concluzii. Indicaţie.43). cuprins. Figura 4.44 .

Construiţi DTD-ul corespunzător cuprinsului (corpul documentului).46). figura 4. Figura 4.46 .45 4.82 3.45. Figura 4. Construiţi DTD-ul corespunzător bibliografiei (figura 4.

47 .47). Figura 4. Scrieţi DTD-ul în forma sa finală (figura 4.83 5.

.48 XML Testaţi-vă cunoştinţele Temă 1. „*”. Care este semnificaţia următoarelor caractere: „?”. Precizaţi rolul cuvintelor cheie: PCDATA. Care este structura unui DTD (Document Type Definition)? 2.84 Creaţi documentul XML corespunzător raportului (vezi structura DTD-ului din aplicaţia precedentă). „|”? 3. ANY în cadrul tag-ului <! ELEMENT>. Figura 4. „+”.48. EMPTY. figura 4.

Ce tipuri de atribute cunoaşteţi? 6.org/ http://www.xmlmag. Care este rolul atributelor? 5.com/topics/xml/ .85 4.apache.ddj.com http://xml. Care sunt valorile implicite ale atributelor? Vizitaţi site-urile http://www.

Conversaţia 5 Afişaţi documentele XML cu ajutorul foilor de stiluri în cascadă ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XML – Utilizaţi foile de stiluri CSS XML – Creaţi fişierul de stiluri (foaia de stiluri) CSS. Crearea unei foi de stiluri în cascadă şi legarea ei la un document XML este o metodă de a indica navigatorului cum trebuie să afişeze elementele unui document. poate fi deschis direct în browser (Microsoft Internet Explorer 5 . evident un navigator nu poate ştii cum să le afişeze (tag-urile XML nu sunt predefinite!). Un document XML cu o foaie de stiluri ataşată. Cum dumneavoastră inventaţi (creaţi) propriile elemente în XML. Aplicaţii XML – Legaţi o foaie de stiluri CSS la un document XML XML – Inseraţi elemente HTML în documentele XML XML – Temă ••••••••••••••••••••••••••••••••••••••••• XML Utilizaţi foile de stiluri CSS O foaie de stiluri în cascadă (Cascading Style Sheet – CSS) este un fişier care conţine instrucţiuni de formatare a elementelor unui document XML.

css. Pentru a afişa un document XML cu o foaie de stiluri CSS trebuie să parcurgeţi următoarele două etape principale: Etapa 1 – Crearea fişierului de stiluri CSS. Nu este necesar să utilizăm o pagină HTML pentru a accesa datele şi a le afişa (contrar altor metode de afişare a unui document XML pe care le vom prezenta în conversaţiile următoare). Plasarea instrucţiunilor de afişare într-o foaie de stiluri separată a documentului XML măreşte gradul de utilizare a acesteia iar actualizarea este mult mai uşoară! Utilizarea unei foi de stiluri în cascadă este probabil metoda cea mai simplă de afişare a unui document XML. Etapa 2 – Legarea fişierului de stiluri CSS (foii de stiluri) la un document XML.css (figura 5. Fişierul conţine un set de reguli care indică navigatorului modul de formatare şi afişare a elementelor într-un document XML specific.2). Pentru a crea un fişier de stiluri. nu ezitaţi să apelaţi la … bătrânul Notepad! Iată cum creăm fişierul de stiluri stud.1). facultatea ce aparţin documentului XML matricola.xml (figura 5.88 sau o versiune superioară). XML Creaţi fişierul de stiluri (foaia de stiluri) CSS O foaie de stiluri în cascadă este un fişier text cu extensia . care conţine trei seturi de reguli pentru afişarea elementelor: student. . nume.

89 Figura 5.1 Figura 5.2 .

4 Fişierul de stiluri stud. Figura 5. care conţine una sau mai multe declaraţii separate prin punct şi virgulă (figura 5.3). Fiecare din cele trei reguli conţine: selectorul.4).1 conţine un comentariu şi trei seturi de reguli.css conţine trei reguli: una pentru elementele student.6).90 Remarci: Fişierul de stiluri stud.3 Puteţi de asemenea folosi comentarii în situaţia în care doriţi să dezactivaţi temporar o regulă sau o parte a regulii (figura 5.6 . una pentru elementele nume şi în sfârşit una pentru elementele facultatea. Figura 5.css din figura 5. Într-o foaie de stiluri comentariul debutează cu caracterele slash şi asterisc (/*) şi se termină cu caracterele asterisc şi slash (figura 5.5 blocul de declaraţie. delimitat prin două acolade ({}).5). care este numele tipului de element căruia i se aplică modul de formatare şi afişare (figura 5. Figura 5. Figura 5.

urmată de o valoare (figura 5. Declaraţia font-style: italic defineşte stilul italic pentru afişarea textului elementelor.8 .7 Declaraţia display-block inserează o linie de spaţii înainte şi după textul elementului. {font-style:italic} Figura 5.xml (figura 5. Figura 5. Aplicaţii Afişaţi cu caractere normale (nu italice!).91 declaraţia.7). Iată care este procedura pe care vă invităm s-o aplicaţi.8). Utilizaţi atributul style. care se compune dintr-o proprietate particulară.8 este prezentat modul de utilizare al atributului style. cu font 14 (nu 10!) elementul <nume> Adam Ion </nume>. Declaraţia font-size: 10 pt defineşte mărimea (10 puncte) caracterelor pentru afişarea textului elementelor. În figura 5. urmată de caracterul două puncte (:). Declaraţia font-weight: bold defineşte stilul bold pentru afişarea textului elementelor. care aparţin documentului matricola. Declaraţia margin-top: 13 pt adaugă o margine de 13 puncte deasupra textului elementului. se asociază atributul (style) elementului nume.

92 Remarcă. Figura 5. definiţi proprietatea display. editura. în aceeaşi foaie de stiluri (figura 5. autor. .11).10 Pentru elementul student. font-weight. an una din regulile prezentate mai jos. margin-right: 14 pt} {display: block. font-size.10). font-variant. În cazul unui document XML valid. {display: block. font-style. titlu. va trebui să declaraţi atributul style în DTD înainte de a-l putea utiliza. margin-bottom: 12 pt} {display: block.9 Remarcă. Puteţi de asemenea include un tip de element în mai mult de o regulă. Figura 5. folosind unul din următoarele cuvinte cheie CSS: block. Afişaţi elementul facultatea cu una din proprietăţile CSS: font-family (figura 5. inline (valoare implicită).9). margin-left: 12 pt} Iată care este procedura pe care vă invităm s-o aplicaţi (figura 5. <!ATTLIST nume style CDATA # IMPLIED> Aplicaţi următoarelor elemente: nuvela. none (navigatorul nu afişează elementul).

Figura 5. Afişaţi textul elementului nume în culoarea roşie. Pentru mai multe informaţii consultaţi lucrarea: Liviu Dumitraşcu. Figura 5. Editura Universităţii din Ploieşti.13 Plasaţi imaginea upg.12 Afişaţi textul elementului nume cu culoarea albastră pe un fond galben.jpg în centrul elementului facultatea.13). Folosiţi proprietatea CSS background – color (figura 5.14 .11 Remarcă.14).93 Figura 5. 2003. Figura 5. Folosiţi proprietăţile background – repeat şi background – position (figura 5.12). (X)HTML. Folosiţi proprietatea CSS color (figura 5.

Sintaxa generală a acestei instrucţiuni este următoarea: <?xml-stylesheet type=”text/css” href=”calefişier CSS”?>. 1. Inseraţi în prologul documentului XML. Pavel Năstase.15 Remarcă. Microsoft Press. calefişier CSS este un URL care indică amplasarea fişierului foii de stiluri.css la documentul XML matricola. instrucţiunea de prelucrare xml-stylesheet (figura 5. Editura Economică. Michael J. 2002.15). Pentru mai multe informaţii privind afişarea documentelor XML cu ajutorul foilor de stiluri în cascadă.16). Tehnologia aplicaţiilor Web. unde.xml. . Etape par etape. Iată cum legăm fişierul de stiluri CSS stud. instrucţiunea de prelucrare xml-stylesheet. trebuie să inseraţi în prologul documentului. Paris.94 Folosiţi proprietatea text-align cu valoarea center pentru a centra elementul nume (figura 5. Figura 5. consultaţi lucrările: Floarea Năstase. XML. XML Legaţi o foaie de stiluri CSS la un document XML Pentru a lega o foaie de stiluri în cascadă (CSS) la un document XML. Young. 2001.

Figura 5. Tastaţi URL-ul (figura 5.95 Figura 5. .18 Într-un document XML puteţi include mai multe foi de stiluri. figura 5.17.19).17 Remarci: Atunci când o foaie de stiluri CSS este legată direct la un document XML. puteţi deschide direct acest document în Internet Explorer (versiunea 5 sau superioară). Afişaţi documentul XML (în care aţi inserat instrucţiunea de prelucrare xml-stylesheet) în Microsoft Internet Explorer (versiunea 5 sau superioară).16 2. Figura 5.18) şi acţionaţi tasta Enter. inserând o instrucţiune de prelucrare xml-stylesheet pentru fiecare dintre ele (figura 5.

veţi spune! Este adevărat. 217 – 218). Paris. Young.19 XML Inseraţi elemente HTML în documentele XML Să presupunem că doriţi să inseraţi într-un document XML elementul: <IMG src=”sigla.jpg”/>. O astfel de regulă. însă navigatorul nu are de unde să ştie dacă este vorba de un element HTML şi nu de un element XML. 2001 pag. cu condiţia ca ele să aparţină unor spaţii de nume distincte (vezi lucrarea Michael J. trebuie ca toate numele de elemente HTML (sunt destule!) să fie rezervate exclusiv pentru inserarea elementelor HTML. Este un element HTML. puteţi utiliza o convenţie XML numită spaţiu de nume care vă permite să distingeţi numele aflate în conflict. care vă permite utilizarea tuturor numelor pe care le găsiţi corespunzătoare pentru elementele legale. ar fi împotriva spiritului XML. Două elemente distincte pot avea acelaşi nume. Din fericire pentru dumneavoastră.96 Figura 5. . XML étape par étape. Microsoft Press. Pentru a face să funcţioneze acest mecanism de discriminare.

HR etc.domeniu1. Dimpotrivă. Pentru a putea utiliza un spaţiu de nume trebuie să-l declaraţi explicit (figura 5.21 se prezintă un element XML vid şi bine format care forţează navigatorul să insereze un element HTML IMG. introduceţi în continuare două puncte (:). Spaţiul de nume html este un spaţiu de nume rezervat şi specific. A.97 Numele unui element care se regăseşte într-un spaţiu de nume se construieşte în felul următor: plasaţi la începutul numelui elementului spaţiul de nume. Internet Explorer 5 (sau o versiune superioară) îl va trata ca pe un element HTML şi-l va insera în pagina afişată.w3c. navigatorul îl va trata ca pe un element XML normal. Elementul are un nume reprezintă un identificator unic . Figura 5. care se declară în maniera următoare: xmlns:html=’http://www. în timp ce nume 1 este în spaţiul de nume implicit al documentului. reprezintă declaraţia unui spaţiu de nume. În figura 5.20). dacă elementul nu este în spaţiul de nume html. iar apoi numele elementului. Un element cu numele spaţiu – nume1: nume1 şi elementul cu numele nume1 pot coexista în acelaşi document şi vor fi considerate ca două elemente distincte întrucât ambele aparţin unor spaţii de nume separate: spaţiu – nume1: nume1 se află în spaţiul de nume spaţiu – nume 1.20 unde.com Remarci: Dacă un element XML poartă numele unui element HTML (IMG.org/TR/REC-html40’.) şi dacă el se află în spaţiul de nume html. http://www. spatiu-nume1 xmlns=” …” reprezintă spaţiul de nume utilizat pentru numirea elementului nume1.

w3. primul atribut declară spaţiul de nume iar al doilea atribut este un atribut standard HTML (SRC).xml.org/TR/REC-CSS1 http://www. Cum definiţi proprietatea font-style? Vizitaţi site-urile http://www. Prezentaţi etapele pe care trebuie să le parcurgeţi pentru a afişa un document XML în Microsoft Internet Explorer (versiunea 5 sau superioară). 3. Descrieţi procedura de legare (asociere) a foilor de stiluri la un document XML. Descrieţi procedura de creare a unui fişier de stiluri. cu ajutorul foilor de stiluri CSS. XML Testaţi-vă cunoştinţele Temă 1. 4.org/TR/REC-xml-names/ .org/TR/REC-CSS2 http://www.98 asociat unui spaţiu de nume şi conţine de asemenea două atribute. Figura 5.w3. Explicaţi mecanismul de cascadă în foile de stiluri CSS.21 Amintiţi-vă că pentru a insera elemente HTML.w3.com http://www. Cum definiţi proprietatea display? 6. 5. 2. documentul XML trebuie să conţină o foaie de stiluri ataşată.

XSLT este un limbaj de înalt nivel care cuprinde 35 de elemente definite de World Wide Web Consortium. Remarci: XSLT 1. pe hârtie de imprimantă etc. Aplicaţii XSLT – Alte elemente XSLT propuse de XML XML – Temă ••••••••••••••••••••••••••••••••••••••••• XSLT eXtensible Stylesheet Language Transformation Vom începe conversaţia noastră prin a studia XSLT.Conversaţia 6 Afişaţi documentele XML cu ajutorul foilor de stiluri XSLT ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XSLT – eXtensible Stylesheet Language Transformation XSLT – Utilizaţi foile de stiluri XSLT XSLT – Creaţi fişierul de stiluri (foaia de stiluri) XSLT XSLT – Legaţi o foaie de stiluri XSLT la un document XML XSLT – Principiul unei transformări XSLT.0 a fost publicat sub formă de recomandare la data de 16 noiembrie 1999. pe un telefon mobil. Principalul obiectiv al limbajului îl constituie transformarea documentelor (sursă) XML în alte documente XML care pot fi afişate într-un navigator Internet. . XSLT este un limbaj declarativ.

chiar dacă aceasta rămâne o viziune mai simplistă a mecanismelor de punere în operă prin această tehnologie. în aceeaşi manieră în care inseraţi adresele într-o scrisoare tip (cu foile de stiluri CSS nu puteţi afişa decât informaţiile declarate în documentul XML!). foile de stiluri XSLT permit manipularea. Modelele corespund unor pattern-uri compuse din elemente şi atribute în arborele sursă şi definesc conţinutul arborelui rezultant. Foile de stiluri XSLT permit formatarea şi afişarea atributelor şi elementelor XML (cu foile de stiluri CSS nu puteţi formata şi afişa decât elementele XML!). Remarci: O foaie de stiluri XSLT trebuie să fie un document XML bine format! (XSLT nu admite definirea DTD-urilor!). Limbajul foilor de stiluri XSLT permite scrierea foilor de stiluri transformând documentele sursă în documente care utilizează un vocabular (ansamblu de tag-uri) diferit. XSL şi XSLT corespund tehnologiei foilor de stiluri XML. limbaj de descriere a stilului de prezentare a documentelor XML.100 XSLT (eXtensible Stylesheet Language Transformation) şi XSL/FO (eXtensible Stylesheet Language Formatting Objects) reprezintă două mari tehnologii ale limbajului XSL (eXtensible Stylesheet Language). Etapa 2 – Legarea fişierului de stiluri XSLT (foii de stiluri) la un document XML. Limbajul XSLT este exprimat sub forma unui vocabular XML. în limba engleză). . adică un ansamblu de modele (templates. Se poate face o paralelă între relaţia CSS – HTML şi relaţia XSL – XML. reorganizarea şi afişarea datelor de o manieră dinamică (cu foile de stiluri CSS nu puteţi afişa datele decât într-o manieră statică!). XSLT Utilizaţi foile de stiluri XSLT O foaie de stiluri XSLT este un fişier XML care permite integrarea datelor XML într-un template (model). atunci când aceste pattern-uri sunt identificate. În sfârşit. Pentru a afişa un document XML cu o foaie de stiluri XSLT (XSL) vă invităm să parcurgeţi următoarele etape prezentate mai jos: Etapa 1 – Crearea fişierului de stiluri XSLT (XSL).

. care va prelucra fişierul sursă XML.xsl.xsl sunt următoarele: Crearea unui element <html> pentru pagina Web. Fişierul de stiluri conţine un set de reguli template (templates rules.xsl. La rândul ei. statistica. statistica. o regulă template defineşte un „pattern” (element ţintă). nu-l uitaţi pe … bătrânul Notepad! Iată cum procedăm pentru a crea fişierul de stiluri (foaia de stiluri) XSLT.1) şi va crea fişierul HTML rezultant. Funcţiile fişierului de stiluri XSLT.xml (figura 6. Crearea unui titlu (Statistici Brazilia) pentru pagina Web. În figura 6. care corespunde elementelor din arborele sursă şi un „template”. statistica. Afişarea numelui echipei şi a rezultatului (BRAZILIA este pe locul 1).xml) creat cu Notepad pentru care dorim să creăm fişierul de stiluri (foaia de stiluri) statistica. sau elementele specificate prin atributul match al modelului.1 este prezentat documentul XML (statistica. în limba engleză). Elementul template permite definirea modului de transformare şi de afişare a nodurilor de date XML.xsl. Pentru a crea un fişier de stiluri XSLT (XSL).101 XSLT Creaţi fişierul de stiluri (foaia de stiluri) XSLT O foaie de stiluri XSLT (XSL) este un fişier text cu extensia . Crearea unui titlu (Statistici Brazilia) pentru fereastra navigatorului.

Figura 6. statistica.2. figura 6.102 Figura 6. Treziţi-l pe bătrânul Notepad! 1. În absenţa foii de stiluri XSLT legate la documentul XML.3.1 Remarci: Documentul conţine datele statistice pentru echipa de fotbal a Braziliei. campionatul mondial de fotbal 2002.2 Şi-acum să ne grăbim încet. .xml navigatorul (Internet Explorer) va afişa rezultatul ilustrat în figura 6. pas cu pas. Introduceţi elementul rădăcină <xsl:stylesheet> după declaraţia xml (prima linie).

2. Elementele care nu conţin prefixul xsl: se regăsesc în arborele rezultant. Elementul rădăcină (xsl:stylesheet) conţine două atribute: version şi xmlns:xsl care au valorile menţionate. Aceste elemente constituie scheletul paginii HTML generate. Următoarea formă este de asemenea validă: <xsl:transform xmlns:xsl=”http://www. Pattern-ul unei reguli template este valoarea atributului match al elementului xsl:template. cu atributul match=”statistica” (figura 6.5): . Un model <xsl:template/> se construieşte astfel (figura 6.103 Figura 6. xmlns:xsl=”http://www.w3c. Elementul rădăcină xsl:stylesheet informează procesorul că acest document este o foaie de stiluri XSLT. Datele sunt însă extrase din documentul XML pentru a umple scheletul.4 Remarci: Nu uitaţi că elementele foilor de stiluri care încep cu xsl: sunt elemente XSL.org/1999/XSL/Transform” este spaţiul de nume XSLT.w3. Figura 6.0. Valoarea 1999 reprezintă anul de alocare a URI pentru W3C. Template-ul pentru ieşire este conţinutul elementului xsl:template.0”.3 Remarci: O foaie de stiluri XSLT trebuie să conţină un element rădăcină (document) <xsl:stylesheet>. precizându-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. 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/>. Toate celelalte elemente sunt fragmente ale rezultatului literal şi sunt copiate ca atare în documentul rezultant. Introduceţi elementul <xsl:template>.org/1999/XSL/Transform” version=”1.4).

Figura 6. Figura 6. Fiecare regulă template este reprezentată printr-un element <xsl:template>.6 4.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. Introduceţi elementul <xsl:value-of select=”[expresie]”/> pentru crearea conţinutului elementului HTML <h1> Statistici Brazilia </h1>.7 . 3.7). Introduceţi elementul <xsl:value-of select=”[expresie]”/> pentru crearea conţinutului elementului HTML <title> Statistici Brazilia </title>. înlocuind [expresie] cu echipa (figura 6. înlocuind [expresie] cu echipa (figura 6.104 Figura 6.6).

atunci textul acestor elemente este de asemenea inclus. Aţi observat că elementul <xsl:value-of select=”echipa” a fost utilizat de trei ori în acest model pentru: crearea conţinutului elementului HTML <title>. titlul paginii. 5. . Acest element prezintă un pericol: dacă elementul documentului sursă posedă elemente fiu. <html>.8). Figura 6. 6. iar apoi [expresie] cu clasament (figura 6. <xsl:template> şi <xsl:stylesheet> (figura 6.105 Remarcă. înlocuind prima dată [expresie] cu echipa. Închideţi tag-urile <body>.9).8 Remarcă. Introduceţi instrucţiunea <xsl:value-of select=”[expresie]”/> pentru crearea conţinutului elementului HTML <p> Brazilia este pe locul 1 </p>. construirea frazei „Brazilia este pe locul 1”. Elementul <xsl:value-of select=”[expresie]”/> permite scrierea în documentul rezultant a valorii unui element al documentului sursă.

11).106 Figura 6. . Verificaţi dacă foaia de stiluri este bine formată. Figura 6. afişând-o în Internet Explorer (figura 6. figura 6. Salvaţi foaia de stiluri sub numele statistica.10 8.xsl (atenţie la extensie!).9 7.10.

.107 Figura 6. Aplicaţie Construiţi acelaşi document cu editorul XML Spy.12 se prezintă documentul generat cu XML Spy. În figura 6.11 Remarci: Dacă Internet Explorer afişează un mesaj de eroare. Asiguraţi-vă că toate tag-urile deschise au fost bine închise şi că toate elementele au fost corect imbricate. verificaţi sintaxa foii de stiluri.

instrucţiunea de prelucrare Pentru a lega o foaie de stiluri XSLT la un document XML.108 Figura 6.xsl”?> unde.12 XSLT inseraţi în Legaţi o foaie de stiluri XSLT la un document XML prologul documentului. trebuie să xml-stylesheet. Sintaxa generală a acestei instrucţiuni este următoarea: <?xml-stylesheet type=”text/css” href=”calefişier. .

109 calefişier.0 (XML este mult mai dependent de foile de stiluri decât HTML!). Inseraţi în prologul documentului XML.13).14. 1. instrucţiunea de prelucrare xml-stylesheet (figura 6. Figura 6. Figura 6.xsl la documentul XML statistica. href=”statistica. Afişaţi documentul XML (în care aţi inserat instrucţiunea de prelucrare xml-stylesheet) în Microsoft Internet Explorer (versiunea 5 sau superioară).5 şi nu de toate procesoarele XML.13 Remarci: Această instrucţiune de prelucrare este recunoscută de Microsoft Internet Explorer 5.xsl este URL-ul care indică amplasarea fişierului foii de stiluri XSLT.xsl” acţionează în mod similar tag-ului LINK din HTML 4.14 . figura 6.xml. 2. Iată cum legăm fişierul de stiluri XSLT statistica.

puteţi deschide direct acest document în Internet Explorer (versiunea 5 sau superioară).15).110 Remarcă. <xsl:sort/>. . Această regulă se aplică numai nodului rădăcină al arborelui sursă. Acest model realizează următoarele operaţii: Modelul găseşte elementul rădăcină al documentului. aplicând regula <xsl:template match=”/”>.xml. Tastaţi URL-ul şi acţionaţi tasta Enter (figura 6. cu ajutorul instrucţiunii <xsl:apply-templates />. <xsl:for-each>. Majoritatea foilor de stiluri sunt alcătuite din reguli template asemănătoare cu cele prezentate în figura 6. Modelul scrie în documentul rezultant a doua serie de elemente literale şi opreşte prelucrarea documentului sursă. Aplicaţii Vom studia în cele ce urmează diferite elemente XSLT propuse de XSL: <xsl: template match=”/”>. <xsl:apply-templates>. <xsl:template match=”/”> [elemente literale rezultante] <xsl:apply-templates/> [elemente literale rezultante] Figura 6. Modelul scrie în documentul rezultant o serie de elemente literale (tag-uri HTML care sunt copiate identic în documentul rezultant). Vom include şi situaţiile statistice ale echipelor Germaniei. El aplică celelalte modele ale foii de stiluri elementelor fii ale elementului rădăcină. ediţia 2002. respectiv 3 la Campionatul mondial de fotbal din Coreea şi Japonia. În cele ce urmează vom lucra cu o versiune mai bogată a documentului statistica.16 </xsl:template> Remarcă. Atunci când o foaie de stiluri XSLT este legată direct la un document XML.15 XSLT Principiul unei transformări XSLT.16 [1]. Turciei. Pentru a desemna nodul rădăcină se va utiliza simbolul „/” ca valoare a atributului match. Figura 6. care au cucerit locul 2. <xsl:value-of/>.

Clasament.111 Aplicaţii Creaţi o foaie de stiluri XSLT care generează un document HTML ce conţine un tabel cu o linie pentru fiecare element <echipa>. Înfrângeri. Victorii. Utilizaţi editorul de texte Notepad. 1.17 este prezentat documentul XML (statistica.18). Capul de tabel cuprinde următoarele câmpuri: Echipa.17 Iată cum construim o foaie de stiluri XSLT. Introduceţi elementul <xsl:template match=”/”> pentru a localiza elementul rădăcină (figura 6.xml) pentru care dorim să creăm fişierul de stiluri (foaia de stiluri). În figura 6. . Figura 6. care generează un document HTML ce conţine un tabel cu o linie pentru fiecare element <echipa>.

2. începând cu nodul rădăcină.20. Introduceţi 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). Creaţi o pagină HTML (figura 6. Figura 6. .19). Tot ceea ce constituie prelucrare trebuie să fie în interiorul elementului <xsl:template match=”/”>.18 Remarci: În timpul fazei de execuţie vor fi afişate toate nodurile XML. figura 6.112 Figura 6. Atributul match permite definirea nodurilor asupra cărora se vor aplica regulile template-ului. Elementul xsl:template defineşte un template care va putea fi aplicat unui nod.19 3.

Figura 6. Valoarea atributului (obligatoriu) select este o expresie. Această expresie este evaluată şi obiectul rezultat este convertit într-un şir de caractere. Introduceţi elementul <xsl:for-each select=”//echipa”> pentru a genera un tabel cu o linie pentru fiecare element <echipa> (figura 6.21). Cu enunţul <xsl:for-each select=”[expresie]”/> se identifică un element (echipa) din documentul XML care este iterat (repetat) şi căruia i se aplică aceeaşi transformare pentru fiecare instanţă.113 Figura 6. 4.21 Remarci: statistici_cm_fotbal/nume – selectează elementul fiu <nume> al elementului <statistici_cm_fotbal>.20 Remarcă. .

23).22.22 Remarci: Elementul <xsl:apply-templates> cu atributul select permite aplicarea regulilor template unui document. procesorul XSLT analizează fiecare element fiu şi îi aplică regula template. Introduceţi elementul <xsl:apply-templates/> pentru a umple cele trei linii ale tabelului cu datele corespunzătoare fiecărei echipe (nume. Figura 6. 6. Figura 6. xsl: with-param. </xsl:template>. clasament).23 . rezultate. </xsl:stylesheet> (figura 6. Elementul <xsl:apply-templates> nu poate conţine decât două tipuri de elemente: xsl: sorte. figura 6. 5. Există numeroase asemănări între sistemul de adresare a documentelor XML (sub formă de arbore şi noduri) şi navigarea în structura directoarelor. Introduceţi tag-urile de închidere: </table>. </body>.114 Prin ”//” se selectează toate nodurile descendente ale elementului echipa indiferent de nivelul ierarhic. La întâlnirea elementului <xsl:apply-templates/>.

24. 7. Figura 6.24 Remarci: Tag-urile HTML au înlocuit tag-urile XML originale. Tag-urile originale sunt suprimate dar ele au servit la identificarea elementelor al căror conţinut trebuia să fie copiat. acesta generează documentul HTML ilustrat în figura 6. Numai conţinutul elementelor documentului XML original.25. figura 6. Afişaţi documentul XML în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară). Acest conţinut este plasat în elementele HTML definite în foaia de stiluri.115 Atunci când documentul şi foaia de stiluri asociată sunt analizate de către procesorul XML. şi nu tag-urile este copiat în documentul rezultant. .

Indicaţie. Pentru a sorta elementele unui document sursă utilizaţi elementul <xsl:sort/>.26. vom sorta elementele documentului sursă (XML) în funcţie de clasamentul echipelor.25 Afişaţi echipele în ordinea în care au fost clasate (după clasament!).116 Figura 6. . <xsl:for-each/>. Acest element trebuie utilizat ca fiu al unuia din elementele <xsl:apply templates/>. Adăugaţi elementului <xsl:sort/> atributul select care precizează elementul utilizat drept criteriu de sortare. În cazul nostru.26 Remarci: Nu întotdeauna este necesar de a defini explicit un model (template) care corespunde fiecărui element al documentului sursă. XSLT furnizează modele standard sau modele implicite care permit prelucrarea elementelor în absenţa regulilor specifice (vezi elementul <xsl:apply-template />). Figura 6. Iată cum aplicaţi elementul <xsl:sort/> pentru sortarea elementelor documentului sursă din figura 6.

<xsl:param> – permite declararea parametrilor locali/globali. pe care de regulă le fac debutanţii sunt următoarele: foaia de stiluri nu este un document bine format. <xsl:attribute> – permite inserarea unui atribut. Editura Economică. Erorile XSLT curente. <xsl:call-template></xsl:call-template> – permite apelarea unei reguli template specifice. el nu va genera nimic în documentul rezultant. <xsl:copy> – permite efectuarea unei copii a nodului curent. în arborele rezultant. XML Alte elemente XSLT propuse de XSL Listăm în continuare alte elemente XSLT (vezi Yannick LEJEUNE & Alexandre PINHEL. Micro Application. modelul <xsl:template match=”Statistica” /> suprimă conţinutul elementului <statistica>. De exemplu. toate elementele XSLT se referă la nodul curent. <xsl:choose> – permite selectarea unei variante în funcţie de context. Pavel Năstase. Folosiţi enunţurile: <xsl:for-each select=”[expresie]” /> sau <xsl:apply-templates match=”[expresie]” />. . <xsl:apply-imports> – permite aplicarea regulilor conţinute într-un fişier importat. <xsl:attribute-set> – permite inserarea unui set de atribute sub acelaşi nume. e-Poche. În cadrul enunţului <xsl:template />. Paris şi Floarea Năstase. foaia de stiluri nu găseşte elementul rădăcină. Tehnologia aplicaţiilor Web.117 Puteţi suprima conţinutul unui element al documentului sursă definind un model vid pentru acel element. 2002) pe care vă invităm să le folosiţi în aplicaţiile dumneavoastră: <xsl:comment></xsl comment> – permite generarea comentariilor în documentul de ieşire. Evitaţi să utilizaţi elementul <xsl:apply-templates /> fără atributul match. Întrucât acest model (vid) nu conţine nici un element literal rezultant şi nici un element XSLT. XML. 2001.

Comparaţi foile de stiluri CSS cu foile de stiluri XSLT. <xsl:text> – adaugă un text documentului de ieşire. <xsl:include> – include o foaie de stil în foaia de stiluri curentă. <xsl:variable> – declară o variabilă globală sau locală. <xsl:namespace-alias> – înlocuieşte un nume de spaţiu cu un altul. <xsl:if> – evaluează o expresie logică şi returnează o valoare booleană (true sau false). <xsl:message> – afişează un mesaj de eroare. <xsl:fallback> – generează codul de înlocuire a unui element neidentificat de către procesorul XSLT. .118 <xsl:copy-of> – permite efectuarea unei copii a unui set de noduri. <xsl:decimal-format> – defineşte modul în care un număr este convertit în şir de caractere. 2. <xsl:element> – permite definirea unui nou element. <xsl:preserve-space> – conservă nodurile vide. XML Testaţi-vă cunoştinţele Temă 1. <xsl:key> – creează o cheie unică pentru un element. <xsl:number> – inserează în arborele rezultant numărul nodului curent sau afişează acest număr. Descrieţi pe scurt etapele pentru afişarea unui document XML cu o foaie de stiluri XSLT (XSL). <xsl:strip-space> – şterge nodurile care nu conţin decât spaţii albe. <xsl:stylesheet> – introduce o foaie de stil.

Descriere Elementul persoana Oricare element Figura 6.27 .29 (o listă cu simboluri). Exemplu persoana * / //persoana . Figura 6. Comentaţi următoarea regulă template: <xsl:template match=”/”> <b> <xsl:value-of select=”card”/> </b> </xsl:stylesheet> 8. .28 Efectuaţi transformarea XML HTML pentru a obţine rezultatul afişat în figura 6.Se consideră următorul exemplu XML (figura 6. Cum definiţi o regulă template? 5.. Pattern Nume * / // .. Care este patern-ul următoarei reguli template? <xsl:template match=”statistica”> 6.27). Cum selectaţi nodul rădăcină al arborelui sursă? 7. 9. .28).119 3. Cum traduceţi în limba română cuvântul match (vezi atributul match=”/”). Descrieţi următoarele exemple de pattern-uri utilizate pentru identificarea nodurilor unei structuri arborescente asociate unui document sursă XML (figura 6. 10. Ce este XSL? 4.

w3.Comentaţi următorul exemplu (figura 6.org/TR/xslt .30 Vizitaţi site-urile www.29 11.wapforum. Figura 6.30) creat cu XML Spy.120 Figura 6.org http://www.

Cu limbajul XPath puteţi selecta un nod (o resursă) al unui document XML pentru a-i aplica o transformare. XSLT şi XPath facilitează crearea unor transformări specifice. Este posibil de a crea expresii XPath pentru a selecta datele XML.Conversaţia 7 Utilizaţi XSLT cu XPath pentru afişarea documentelor XML ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XPath XML XML XSLT. Aplicaţii – Inseraţi modele HTML în foile de stiluri XSLT – Combinaţi 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). XPath – XML Path Language. limbaj pentru adresarea fragmentelor XML. Puteţi selecta . XSLT permite crearea şi aplicarea template-urilor (modelelor) unor documente sursă XML.

vizitaţi site-ul www. valoarea atributului. statistici.1 este prezentat documentul XML.1 <victorii> <victorii> .org/TR/xpath. Pentru a explora XPath în detalii. Această listă este departe de a fi completă.122 elementele unui document XML pentru a le copia în documentul rezultant. Un arbore de noduri reprezintă atât structura cât şi conţinutul unui document XML [1]. Este posibil de a considera ierarhia elementelor sub forma unui arbore de noduri. În figura 7. am considerat documentele ca pe un text alcătuit din tag-uri care oferă informaţii asupra conţinutului documentului.xml ca un arbore de elemente. Puteţi sorta. numele atributului. Remarcă. Până acum. prezenţa unui element fiu/părinte particular. XPath este un subiect prea vast pentru a putea fi tratat integral în această lucrare. <statistici_cm_fotbal> <nume> <echipa> <echipa> <echipa> <echipa> <rezultate <rezultate> <rezultate> Figura 7.w3c. este necesar de a vedea documentele XML sub o formă puţin diferită. Vizualizaţi documentele XML ca arbore de noduri Înainte de a începe să explorăm sintaxa limbajului XPath şi de a scrie expresii XPath. selecta şi manipula elementele în funcţie de următoarele caracteristici: numele elementului.

Elementele fundamentale ale expresiilor XPath sunt prezentate în figura 7. . Puteţi perfecţiona căile de acces către elementele documentului sursă utilizând predicate XPath. <xsl:apply-template match=”[expresie]”/> unde. expresie este o expresie XPath alcătuită din instrucţiuni care permit selectarea unuia sau mai multor elemente ale unui document XML. != (diferit). numite axe pentru a specifica relaţiile între elemente. Un predicat este o expresie booleană./ // * @* Fiu al nodului curent Părinte al nodului curent Descendent al nodului curent Oricare element fiu al nodului curent Toate atributele nodului curent Exemple de expresii XPath: /statistici_cm_fotbal/* – selectează toate elementele fii ale elementului <statistici_cm_fotbal>. Simbol / . >=. care în urma evaluării returnează o valoare de tip boolean: true sau false. Elementul XSLT <xsl:apply-template/> poate fi utilizat în două moduri: fără atribut. <xsl:apply-template/>. Operatorii folosiţi într-o expresie logică sunt: <. specificarea condiţiilor de prelucrare a unui nod. noduri instrucţiune de prelucrare. o expresie XPath poate fi un simplu nume de element. XSLT utilizează XPath pentru: selectarea nodului de prelucrare. noduri element. cu un atribut match. noduri spaţiu de nume.2. noduri text. 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. noduri atribut. >.. Semnificaţie Figura 7. //înfrângeri – selectează toţi descendenţii elementului <înfrângeri>. noduri comentariu.123 Remarci: Un arbore poate conţine şapte tipuri de noduri: nod rădăcină. Axele XPath selectează nodurile în funcţie de relaţia lor ierarhică cu nodul curent.2 Axele XPath XPath furnizează un set de cuvinte cheie. /statistici_cm_fotbal/nume – selectează elementul fiu <nume> al elementului <statistici_cm_fotbal>. <=.

124 Axele XPath permit construirea căilor de acces complexe în vederea localizării nodurilor specifice ale unui document. oricare ar fi nivelul lor ierarhic. Toate nodurile care preced nodul curent. un test. Toate nodurile care preced nodul curent şi care au acelaşi părinte. oricare ar fi nivelul lor ierarhic.3 se prezintă specificatorii axelor XPath. Toate nodurile care se succed nodului curent. Un nod fiu este situat direct în . Nodul curent. Calea de acces constă din: o axă. Toţi strămoşii nodului curent. Toate nodurile care se succed nodului curent şi care au acelaşi părinte. Părintele direct al nodului curent. Axa child descendent parent ancestor following-sibling preceding-sibling following preceding Figura 7.3 self nodul curent. Toţi descendenţii nodului curent. Semnificaţie Toţi fiii nodului curent. În figura 7. unul sau mai multe predicate.

Atunci când o foaie de stiluri prelucrează un document XML. unul sau mai multe predicate (situate între paranteze drepte) care permit rafinarea nodurilor selectate. elementele documentului sunt comparate cu elementele XSLT ale acestei foi. textului.xml.4 <victorii> <victorii> descendenţi Sintaxa XPath este structurată în mai multe părţi. nodul de test. comentariilor sau instrucţiunilor de prelucrare într-un document în funcţie de metadate (numele tag-urilor şi atributelor) şi de poziţia lor în ierarhia elementelor XML. după cum urmează: axa. Limbajul XPath permite identificarea elementelor. nodul în curs de prelucrare este numit nod contextual. care va preciza ce caracteristici trebuie să posede nodurile pentru a fi selectate.125 Remarci: În figura 7. Alte exemple: descendent::echipa – desemnează toate elementele numite echipa care sunt descendenţi ai nodului curent. urmat de zero sau mai multe predicate plasate între paranteze drepte. [position()=1] este predicatul. În figura 7. child este numele axei. În exemplul: Child::eva[position()=1]. În momentul prelucrării. care reprezintă relaţia arborescentă ce posedă nodul curent împreună cu nodurile pe care dorim să le selectăm. statistici. parent::* – desemnează elementul părinte al nodului curent.4 este ilustrată reprezentarea axelor XPath pentru documentul XML. atributelor. Sintaxa unui XPath este următoarea: numele axei.5 este ilustrat modul în care nodul contextual se deplasează în arborele documentului prelucrat prin foaia de stiluri. eva este nodul de test. urmat de nodul de test separat prin ”::”. . stămoşi <statistici_cm_fotbal> părinte <nume> precedent curent (self) următorii <echipa> <echipa> <echipa> <echipa> <rezultate <rezultate> <rezultate> Figura 7.

6 .5 Aplicaţii <nume> <rezultate> Se consideră documentul statistici. Figura 7. construit cu Notepad.126 <statistici_cm_fotbal> <nume> <echipa> <echipa> <echipa> Figura 7.xml ilustrat în figura 7.6.

Utilizaţi următoarea foaie de stiluri (vezi figura 7.127 Afişaţi rezultatul expresiei: <xsl:value-of select=”nume”>. . Foaia de stiluri xpath2. Salvaţi documentul şi afişaţi în Internet Explorer rezultatul acestei instrucţiuni.xsl cu xpath2.8 este afişat rezultatul pe care trebuie să-l obţineţi.8 Modificaţi fişierul statistici. Figura 7.7 În figura 7.xsl.xml şi înlocuiţi xpath.xsl utilizează instrucţiunea <xsl:value-of select=”statistici_cm_fotbal/nume”/>.9 este afişat rezultatul pe care trebuie să-l obţineţi. considerând că nodul contextual este al doilea element <echipa> (TURCIA) al documentului. Figura 7.7). În figura 7.

xsl utilizează instrucţiunea <xsl:value-of select=”preceding-sibling::echipa/rezultate/ victorii”/>. Salvaţi documentul şi afişaţi în Internet Explorer rezultatul acestei instrucţiuni.10 Modificaţi fişierul statistici.xml şi înlocuiţi xpath3. În figura 7.xsl cu xpath3.xsl. Figura 7.128 Figura 7.11 . Foaia de stiluri xpath4.xsl.11 este afişat rezultatul pe care trebuie să-l obţineţi.xml şi înlocuiţi xpath2.xsl utilizează instrucţiunea: <xsl:value-of select=”//echipa[3]/nume”/>.xsl cu xpath4. În figura 7. Figura 7.10 este afişat rezultatul pe care trebuie să-l obţineţi.9 Modificaţi fişierul statistici. Foaia de stiluri xpath3. Salvaţi documentul şi afişaţi în Internet Explorer rezultatul acestei instrucţiuni.

Un element literal rezultant permite la rândul lui crearea unui model HTML şi umplerea zonelor documentului cu ajutorul instrucţiunilor XSLT/XPath [1]. Figura 7.12 pentru a servi ca model în foaia de stiluri. Un model HTML este constituit din cod HTML. care este comun tuturor paginilor site-ului. Iată cum modificăm pagina HTML afişată în figura 7.129 Remarci: Specificatorul de axe XPath preceding-sibling are următoarea semnificaţie: toate nodurile care preced nodul curent şi care au acelaşi părinte. Instrucţiunea <xsl:value-of select=”preceding-sibling::echipa/ rezultate/victorii”/> selectează valoarea elementului fiu <victorii> al elementului <rezultate> al elementului <echipa> care preced nodul contextual. Va trebui mai întâi să precizăm câmpurile din pagina HTML care urmează să primească datele XML (vezi figura 7. Remarcă.13 în care se prezintă modelul HTML care conţine statisticile pentru Campionatul Mondial de Fotbal 2002). XML Inseraţi modele HTML în foile de stiluri XSLT Recomandarea XSLT a consorţiului W3C vă permite scrierea unei foi de stiluri sub forma unui element literal rezultant.12 .

130

Figura 7.13

1. Examinaţi fişierul 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: Originea acestui fişier nu are importanţă. Puteţi să-l creaţi manual, el putând de asemenea proveni dintr-o bază de date. Pentru moment, ne vom concentra numai pe structura datelor, pentru a putea scrie foaia de stiluri XSLT. În documentul statistici.xml (figura 7.14) datele sunt plasate dezordonat (în mod intenţionat!). Ele vor fi sortate în foaia de stiluri. Elementul rădăcină <statistici_cm_fotbal> posedă un element fiu, <nume> care conţine numele campionatului de fotbal – Campionatul Mondial de Fotbal 2002. <statistici_cm_fotbal> posedă mai mulţi fii instanţiaţi de elementul <echipa>. Fiecare element <echipa> posedă un fiu <nume>. În acest context, <nume> conţine numele echipei.

132
Fiecare element <echipa> posedă un fiu numit <rezultate>. Fiecare element <rezultate> posedă fiii: <victorii>, <înfrângeri> şi <nule>. Aceste elemente conţin respectiv numărul de victorii, numărul de înfrângeri şi numărul de meciuri nule ale echipei. Fiecare element <echipa> posedă un element <clasament> care conţine clasamentul echipei la Campionatul Mondial de Fotbal 2002 din Coreea şi Japonia.

2. Creaţi expresiile XPath pentru extragerea datelor din fişierul XML. Întrucât noi cunoaştem ordinea datelor, vom utiliza instrucţiunea <xsl:value-of /> pentru a selecta o dată specifică în fişierul statistici.xml în vederea plasării acesteia în modelul HTML. Pentru aceasta, vom scrie o cale de acces care va servi ca valoare atributului select. 2.1 Scrieţi instrucţiunea XPath pentru a extrage conţinutul elementului (figura 7.15). ... <xsl:value-of select=”statistici_cm_fotbal/nume”/> Figura 7.15 ... 2.2 Scrieţi instrucţiunea XPath pentru a extrage informaţiile 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 aflându-se în elementul <nume> fiu al elementului <echipa> poate fi selecţionat direct. <xsl: value-of select=”nume”/>.

<nume>,

fiul

lui

<statistici_cm_fotbal>

2.3 Scrieţi instrucţiunea XPath pentru a extrage informaţiile privind numărul de victorii, înfrângeri şi meciuri nule pentru cele trei echipe de fotbal (figura 7.17).

..133 .xml într-un editor de texte şi asociaţi-i foaia de stiluri literal. <xsl:value-of select=”clasament”> 3. 2.18 . Introduceţi în foaia de stiluri (literal.18).xsl) din figura 7..4 Scrieţi instrucţiunea XPath pentru a extrage conţinutul elementului <clasament> (figura 7. adăugând după linia de . Deschideţi fişierul statistici.19 expresiile XPath pe care le-aţi creat (figura 7. <xsl:value-of select=”rezultate/victorii”/> <xsl:value-of select=”rezultate/infrangeri”/> <xsl:value-of select=”rezultate/nule”/> Figura 7.17 .19 4. . Figura 7. Figura 7...18)...xsl..

20 este afişat rezultatul pe care trebuie să-l obţineţi.20 Remarcă.134 declaraţie următoarea linie: <?xml-stylesheet type=”text/xsl” href=”literal.xsl”?>.xml) într-un model HTML.21 . Navigatorul Internet Explorer afişează datele documentului XML (statistici. Deschideţi fişierul în Internet Explorer. În figura 7. Figura 7. 5.21): Figura 7. Aplicaţii Afişaţi î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. În corpul instrucţiunii <xsl:for-each> adăugaţi instrucţiunea <xsl:sort select=”nume”/> ca în secvenţa următoare (figura 7. Indicaţie.

Indicaţie.135 În figura 7.22 se prezintă în ordine alfabetică echipele de fotbal clasate pe primele trei locuri. Figura 7.23 În figura 7.24 . locul 2. Figura 7. Modificaţi linia <xsl:sort select=”nume”/> înlocuind valoarea atributului select cu clasament.22 Afişaţi în funcţie de clasament echipele de fotbal clasate pe primele trei locuri la Campionatul Mondial de Fotbal 2002 ce a avut loc în Coreea şi Japonia. locul 3) echipelor de fotbal. Figura 7.24 se prezintă clasamentul (locul 1.

Înainte de a vă entuziasma de facilităţile CSS cu XML este util de a compara această tehnologie cu XSLT. procesor XSLT. XSLT şi XPath sunt limbaje greoaie şi dificil de învăţat. ca HTML). ca de exemplu: ele nu pot manipula elemente XML. conversia XML HTML. XSLT permite următoarele prelucrări ale datelor XML: selectarea din document a unui conţinut specific. documentul XML este afişat integral sau deloc. combinarea conţinutului mai multor documente. XSLT prezintă de asemenea câteva limitări. Această facilitate reprezintă un avantaj! CSS-urile impun şi anumite limitări. limbajul foilor de stiluri. util pentru convertirea unui document XML al unui vocabular către un altul. manipularea şi sortarea datelor. CSS şi XSLT prezintă diferenţe importante. Noi domenii de utilizare apar în fiecare zi. precum . sau transformator XSLT cu care puţine browser-e sunt echipate. CSS-urile nu permit specificarea unei formatări variind în funcţie de atributele elementelor. CSS-urile nu pot selecta/sorta elemente. Întreprinderile îl utilizează ca format pentru schimbul informaţiilor comerciale. ca de exemplu: XSLT nu propune nici o sintaxă pentru formatare (formatarea poate fi indicată numai efectuând o conversie către un alt limbaj.136 XML Combinaţi CSS şi XSLT XML este un limbaj suplu care poate fi utilizat pentru numeroase aplicaţii profesionale. XSLT este un limbaj de programare bogat şi puternic. XML WML etc. suportul CSS variază în funcţie de navigator. XSLT cere un program special. Utilizat cu XPath. CSS-urile permit specificarea într-o manieră foarte simplă a formatării elementelor HTML sau XML.

Utilizaţi instrucţiunea <xsl:choose> pentru a testa valoarea atributului şi a crea elementul corespunzător în documentul rezultant.}).css) care va conţine două clase: masculin şi feminin.137 HTML în vederea afişării acestuia.masculin{font-weight:bold.}). iar elementele celei de-a doua clase vor fi afişate cu italic (. Remarcă.25. Cu toate limitările. Plasaţi elementele într-o linie a tabelului care va fi de clasă masculin sau feminin în funcţie de atributul sex al elementului <nume>. CSS oferă pe de altă parte o sintaxă simplă pentru a specifica modul în care elementele trebuie să fie afişate. xml). Aplicaţie [1] Combinaţi două foi de stiluri CSS şi XSLT pentru a afişa datele XML prezentate în figura 7. . Elementele primei clase vor fi afişate cu bold (. CSS-urile sunt foarte puternice dacă le utilizaţi în combinaţie cu XSLT. Creaţi după aceea o foaie de stiluri XSLT pentru extragerea datelor necesare pornind de la fişierul (gen.feminin{font-style:italic.25 Indicaţie. Figura 7. Creaţi o foaie de stiluri CSS simplificată (gen.

ibiblio.w3.xml.org/pub/sun-info/standards/xml/why/xmlapps.htm . Cum definiţi axele XPath? 4.com http://www. XPath Testaţi-vă cunoştinţele 1.138 XSLT. Care este rolul limbajului XPath? 2. De ce utilizăm XSLT cu XPath? 3. Comentaţi instrucţiunea: Temă <xsl: sort select=”clasament”/> Vizitaţi site-urile www.org/TR/xpath www.

versiunea 1.Conversaţia 8 De la DTD la XML Schema ••••••••••••••••••••••••••••••••••••••••• În această conversaţie: XML – Scheme XML XML – Tipuri de date predefinite utilizate în schemele XML XML – Construiţi o schemă XML XML – Software XML Schema. . O dată cu dezvoltarea şi răspândirea XML-ului. limitele DTD-ului apăreau din ce în ce mai jenante. Aplicaţii XML – Temă ••••••••••••••••••••••••••••••••••••••••• XML Scheme XML Pe parcursul conversaţiilor precedente am învăţat să utilizăm DTD XML pentru a defini vocabularul şi structura documentelor XML. Autorii XML-ului doreau la început să conserve o compatibilitate maximă cu SGML (Standard Generalized Markup Language) predecesorul său. mult mai complex.0 a recomandării XML specifică o formă simplificată a DTD-ului pentru crearea de vocabulare şi validarea documentelor XML. Din acest motiv. Am învăţat de asemenea cum să validăm un document în raport cu un DTD. verificând structura documentului cu cea descrisă prin DTD.

O schemă XML oferă în plus posibilitatea validării conţinutului elementelor. sunt compatibile cu spaţiile de nume ceea ce permite combinarea document. în raport cu DTD XML următoarele avantaje: permit definirea tipurilor de date într-un mod mult mai precis. Puteţi crea şi valida aceleaşi documente cu ajutorul unei scheme XML sau a unui DTD. alegerea între scheme XML şi DTD XML nu afectează structura documentelor pe care le creaţi. mai multor vocabulare în cadrul aceluiaşi DTD XML prezintă următoarele avantaje: utilizează o sintaxă mai simplă.140 Remarcă. Pentru a elimina aceste limite ale DTD-ului consorţiul W3C a decis să creeze un nou standard (mai 2001) – XML Schema. Regulile de instanţiere sunt limitate. sunt compatibile cu un număr mai mare de aplicaţii (cel puţin pentru moment!) Remarci: Probabil schemele XML şi DTD XML vor continua să coabiteze pentru o bună perioadă de timp! Pentru a lua corect o decizie în privinţa utilizării schemelor XML sau DTD XML trebuie să ţineţi cont şi de compatibilitatea celor două tehnici cu instrumentele pe care le aveţi la dispoziţie. Controlul tipului de conţinut al unui element este limitat. capabil să răspundă nevoilor utilizatorilor. sunt ele însele documente XML. între schemele XML şi DTD XML. Analizaţi şi decideţi! Scheme XML sau DTD XML? Schemele XML prezintă. Limitele DTD-ului sunt următoarele: Un DTD nu este un document XML. va trebui să alegeţi când creaţi documente XML. Aşadar. sunt mult mai concise. . Cu excepţia spaţiilor de nume.

141 XML Tipuri de date predefinite utilizate în schemele XML Înainte de a construi împreună prima schemă XML. zecimal etc. A construi o schemă fără 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 conţinut şi a atributelor elementelor XML. Integer (orice întreg situat în intervalul închis -126789 la 126789). positiveInteger (orice număr întreg pozitiv situat în intervalul închis 1 la 126789). Binary (defineşte tipul de date binar). NonPositiveInteger (orice număr întreg negativ sau nul situat în intervalul închis -126789 la 0). nonNegativeInteger (orice număr întreg pozitiv sau nul situat în intervalul închis 0 la 126789). 1 sau 0). . O schemă XML poate specifica dacă un element trebuie să conţină un număr (întreg. negativeInteger (orice număr întreg negativ situat în intervalul închis -126789 la -1).) ceea ce un DTD nu permitea. va trebui să înţelegem principiile fundamentale. byte (orice număr întreg situat în intervalul închis -1 la 126). Cele mai importante tipuri de date predefinite utilizate în schemele XML sunt următoarele [2]: tipuri simple numerice Boolean (defineşte tipul de date boolean – true sau false.

NMTOKEN. P134Y. tipuri DTD ID. NMTOKENS. unsignedShort (orice număr întreg situat în intervalul închis 0 la 12678). IDREFS. long (orice număr întreg situat în intervalul închis -1 la 12678967543233). int (orice număr întreg situat în intervalul închis -1 la 126789675). unsignedInt (orice număr întreg situat în intervalul închis 0 la 1267896754).142 short (orice număr întreg situat în intervalul închis -1 la 12678). date (defineşte data calendaristică: zzllaa). unsignedLong (orice număr întreg situat în intervalul închis 0 la 12678967543233). decimal (orice număr zecimal pozitiv sau negativ).4e+38 la 1. unsignedByte (orice număr întreg situat în intervalul închis 0 la 126). dateTime (Exemplu: 2003-09-01 T13:20:00+02:00). float (orice număr zecimal situat în intervalul 3. P3Y4M10J T8H30M13S).4e-45). GYearMonth (Exmplu: 2003-09). . duration (Exemple: P-1347M. IDREF. tipuri temporale time (defineşte ora).

Elemente de tip simplu şi de tip complex Schema XML descrie structura documentelor XML în mod similar DTD-urilor. XML Construiţi o schemă XML Pentru început vom compara un DTD cu schema XML echivalentă. Este foarte important să reuşiţi să deosebiţi cele două tipuri de elemente între ele întrucât acestea se definesc în mod diferit în cadrul unei scheme XML (simpleType defineşte elementul de tip simplu. tipuri particulare string (defineşte un şir de caractere). care nu pot avea nici fii.3) al cărui DTD este prezentat în figura 8. hexBinary (defineşte datele în sistemul hexazecimal). piesă cu piesă pornind de la documentul XML scheme. Name. Remarcă.143 ENTITY. care pot avea elemente fii şi atribute. Iată cum procedăm pentru a crea o schemă XML.1 (creat de asemenea cu Notepad). nici atribute. Apoi veţi vedea şi singuri ce va urma.xml creat cu editorul Notepad (figura 8. . elemente de tip complex. iar complexType defineşte elementul de tip complex). Schemele XML fac distincţie între două tipuri de elemente: elemente de tip simplu. NOTATION. any URI (defineşte un identificator de resurse).

2 Unitate măsură Denumire produs Figura 8.3 . Lista produse excursie Produse excursie Produse excursie Produse excursie Cantitate Figura 8.144 Figura 8. Ierarhia listei de produse de excursie este prezentată în figura 8.2.1 Remarci: DTD-ul XML prezentat nu spune nimic despre valorile autorizate ale elementului <um> (unitate de măsură) şi nu precizează faptul că elementul <cantitate> are drept conţinut o valoare numerică.

Definiţi spaţiul de nume cu tag-ul <xs: schema> şi atributul xmlns (figura 8. . în doi pe … OMUL! Şi-acum să fim creativi! Pentru a crea o schemă XML. <xs: schema> este primul element pe care îl întâlnim într-o schemă XML. id (vezi http://www. Metoda 1 Dacă vi se va părea complicată această metodă să nu vă îngrijoraţi.5). puteţi critica sărăcia acestei liste! În ceea ce ne priveşte am considerat suficiente 3 kg de banane. version.4 Remarci: După declaraţia documentului XML (prima linie). elementFormDefault. Cu această declaraţie. folosiţi una din metodele prezentate mai jos: Metoda 1 – Codificarea manuală. finalDefault. Figura 8.145 Remarcă.org/2001/XMLSchema). căci nu sunteţi singurii în această situaţie. 2 kg de biscuiţi şi 1 borcan de ness pentru o simplă ascensiune. <xs: schema> poate conţine de asemenea şi următoarele atribute. 1.w3. Exemplu de utilizare a atributului targetNamespace al elementului <xs: schema> (figura 8.org/2000/10/XMLSchema). elementul rădăcină iar prezenţa sa este obligatorie. toate facultative: targetNamespace. El este deci. attributeFormDefault. Metoda 2 – Codificarea automată cu aplicaţii dedicate. toate elementele schemei care conţin sufixul xs: (xsd:) vor fi recunoscute ca aparţinând spaţiului de nume corespunzător (vezi http://www. blockDefault.w3.4). Evident.

El posedă două atribute: name şi ref. default (primeşte ca valoare un şir de caractere. ia ca valori un întreg pozitiv sau nul (în mod implicit primeşte valoarea 1)).6 Remarci: Elementul de tip complex <lista_produse_excursie> este o secvenţă de <produse_excursie>. ref. Definiţi elementul de tip complex <lista_produse_excursie>. fixed (primeşte ca valoare un şir de caractere. equivclass (ia ca valoare un nume). 2. atribuie elementului o valoare implicită). care este diminutivul de la reference face referiri la un element deja declarat sau care urmează a fi declarat ulterior. minOccurs (defineşte numărul minim de apariţii ale unui element (occurence) într-un document. primeşte ca valoare un nume). ia ca valoare un întreg pozitiv sau nul (în mod implicit primeşte valoarea 1)). După cum aţi putut constata element permite declararea unui element. care sunt exclusive. Celelalte atribute facultative ale tag-ului <xs: element> sunt [2]: type (defineşte tipul elementului. Atributele name şi ref (facultative) sunt cele mai frecvent folosite în declararea unui element. maxOccurs (defineşte numărul maxim de apariţii ale unui element într-un document.5 2. name permite declararea unui atribut în mod local.1.146 Figura 8. .Introduceţi elementul <xs: element name= ”lista_produse_ excursie”> (figura 8. atribuie elementului o valoare fixă şi invariabilă). Figura 8.6).

7 2.Introduceţi enunţul <xs: sequence> (figura 8.2. form (primeşte ca valoare qualified sau unqualified. Într-un document. indică dacă numele elementului trebuie să conţină sau nu prefixul xs:(xsd:)). id (vezi DTD). . Atributele pe care le posedă <xs: sequence> sunt: id.Introduceţi elementul <xs: complexType> (figura 8. minOccurs.8).9). Figura 8. elementele declarate în secvenţă trebuie să apară obligatoriu cel puţin o dată în ordinea în care ele au fost definite. testează dacă elementul nu va putea fi prezent într-un document).147 nullable (primeşte ca valoare true sau false.Introduceţi elementul vid <produse_excursie> cu atributul maxOccurs (figura 8. testează dacă elementul este sau nu este nul).7). 2. abstract (primeşte ca valoare true sau false. Figura 8.3.4. maxOccurs.8 Remarci: sequence este un grup de elemente. 2.

care conţine secvenţa: <cantitate>. Elementul de tip simplu <produs> va fi un şir de caractere (xs: string). niciuna (figura 8. . Definiţi elementul de tip complex <produse_excursie>. 4.10 Remarci: Elementul de tip simplu <cantitate> va fi un număr zecimal (xs: decimal).10). Figura 8. Definiţi elementul <um> cu următoarele valori predefinite: kg. bucăţi.9 Remarcă. <produs>. borcan (borcane). <um>. 3. Elementul <um> poate fi definit ca un simplu string dar dorim să-l limităm la o serie de valori predefinite. în ordinea indicată (figura 8.148 Figura 8.11) . maxOccurs=”unbounded” precizează că numărul maxim de elemente <produse_excursie> care trebuie să fie prezente în document nu este limitat.

11 Remarci: Schema utilizează elementul de constrângere <xs: restriction> cu atributul base pentru a preciza că elementul <um> este de tip xs: string. XML Software XML Schema La ora actuală există numeroase aplicaţii care vă pot ajuta să creaţi scheme XML fără a mai învăţa sintaxa prezentată în cadrul primei metode. două dintre cele mai cunoscute aplicaţii pentru crearea schemelor XML: (TIBCO’s) XML Authority. borcan(e) etc. Fiecare constrângere este un element care posedă un atribut numit value şi defineşte una din valorile posibile.149 Figura 8. Prezentăm în cele ce urmează. restriction conţine faţete care permit reducerea spaţiului de valori. Valoarea este restricţionată printr-o faţetă definită cu elementele <xs: enumeration>. Ele permit de asemenea crearea în mod automat a schemelor XML pornind de la documentele XML (Metoda 2 – Codificarea automată cu aplicaţii dedicate). XML Spy. Aceste aplicaţii utilizează liste derulante pentru selecţia elementelor şi afişează rezultatul sub formă grafică. .). Faţeta enumeration permite limitarea spaţiului de valori la o listă de valori (kg.

xml. în afară de interfaţa cu utilizatorul este şi aceea de a lucra cu mai multe dialecte. Puteţi de exemplu deschide un DTD XML şi să-l salvaţi (cu comanda Save as) în echivalentul său XML Schema. compatibil Microsoft Biz Talk (http://biztalk. XML Authority oferă o reprezentare vizuală a modelului.w3. SOX (Schema for object – Oriented XML).extensibility.onesoft. SGML (Standard Generalized Markup Language).org/TR/2000/REC-xml-20001006).org/XML/Schema).w3.gr.jp/relax).htm). posibilitatea de a insera uşor comentarii şi de a modifica direct sursa pentru aceia care. (http://www. Este unul din primele medii de dezvoltare a schemelor creat pentru XML. din timp în timp au nevoie să intervină în cod. Una din funcţiunile cele mai interesante ale XML-ului Authority.w3. DDML (http://www.ch).microsoft.com/ librarz/default.w3.asp?URL=/library/psdk/xmlsdk/xmlp7k6d.tibco. XML Authority este simplu şi uşor de utilizat de la nivel de interfaţă şi permite dezvoltatorilor de aplicaţii să creeze rapid scheme pe care apoi să le verifice în timp real.org/TR/NOTE-dcd).org/TR/NOTE-ddml).com) a fost creat de o întreprindere numită Extensibility (răscumpărată după aceea de TIBCO).org) sau altele. (http://www. Este un instrument practic pentru a crea.htm). modifica şi elimina elemente şi atribute.iso. DTD XML (http://www.org). DCD (http://www.biztalk. One Soft RELAX Adjunct SOX versiunea 2 (http://www. (http://www.w3. XDR (http://msdn. XML Authority poate lucra [5] cu următoarele dialecte: Biz Talk (http://www. XML Schema .150 (TIBCO’s) XML Authority XML Authority (http://www.com/resources/saf. SGML (http://www.com). Schema (http://www.org/TR/NOTE-SOX).

oferă o interfaţă simplă pentru listele de elemente şi de atribute.151 Exportul în diverse dialecte nu este singura funcţie importantă a XML Authority. SGML.xmlspy. XML Spy este disponibil numai sub Windows! XML Spy permite editarea fişierelor HTML şi ASP.mtx (MetaStream XML). Formatele (extensia fişierului) pe care XML Spy [5] ştie să le recunoască sunt: . Sursele de date pe care XML Authority ştie să le importe sunt: COM.rdf (Resource Description Framework). Afişaţi totodată şi codul sursă al schemei XML realizate.dtd (Document Type Definition).com) este un alt celebru instrument de creare a schemelor XML.com. Unix şi MacOs. 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. Aplicaţie Creaţi cu XML Authority (Metoda 2) schema XML pornind de la documentul XML ilustrat în figura 8. . Java.ent (Entity Sets). al cărui DTD este prezentat în figura 8. .mml (Mathematical Markup Language). . LDAP (Lightweight Directory Access Protocol). vizitaţi site-ul http://www. XML Authority permite să se exporte reprezentarea vizuală a schemelor în format GIF. .1 (vezi Metoda 1). XML (document XML bine format).dcd (Document Content Description). În plus. XML Authority este disponibil sub Windows. XML Spy XML Spy (http://www. Remarci: Dacă doriţi mai multe informaţii despre XML Authority.smil . .cml (Chemical Markup Language). ajută utilizatorul cu o funcţie de introducere date semi-automată. dar ele nu au la bază XML. faţă de aceste funcţii.3. .math şi . Câteva funcţii ale XML Authority oferă o mare supleţe pentru conversiile unui tip de date în altul.biz (BizTalk). . . ODBC.tibco.

svg (Scalable Vector Graphics). editarea vizuală a schemelor. .13.xsl (foaia de stiluri XSL). .12 Codul sursă al schemei XML generate cu XML Spy este prezentat în figura 8.xml (document XML). . Aplicaţii Creaţi cu XML Spy (Metoda 2) aceeaşi schemă XML pe care aţi realizat-o manual (Metoda 1) şi automat (Metoda 2) cu XML Authority. . editarea directă a sursei XML. Figura 8.152 (Synchronized Multimedia Integration Language). . Remarci: XML Spy este un instrument simplu de folosit.xdr (XML – Data Reduced). XML Spy prezintă şi alte facilităţi precum: introducerea semi-automată a datelor.xsd (Schema XML). . .12 se prezintă schema XML generată cu XML Spy. . extraordinar de flexibil şi foarte complet.wml (Wireless Markup Language).xhtml (eXtensible Hypertext Markup Language). În figura 8. .xslt (transformare XSL). posibilitatea de creare a unei documentaţii în format HTML sau Word.

15).13 Se consideră DTD-ul (agenda.153 Figura 8.14 şi documentul XML conform acestui DTD (figura 8.dtd) din figura 8. .

154 Figura 8.14 .

.155 Figura 8.15 Realizaţi schema XML echivalentă folosind una din metodele prezentate mai jos: Metoda 1 – Codificarea manuală. Metoda 2 – Codificarea automată cu aplicaţii dedicate.

În figura 8. Figura 8.17.16 Codul sursă al schemei XML generate cu XML Spy este prezentat în figura 8.17 . Elementele <nume>. <prenume> sunt de type=”xs.string”.156 Remarcă. Figura 8.16 se prezintă schema XML generată cu XML Spy (Metoda 2).

157 (continuare) Figura 8.17 .

158
Remarcă. Puteţi realiza o conversie automată DTD XML dtd2xsd, care se găseşte pe site-ul W3C (www.w3c.org). XML Schema şi cu aplicaţia

XML
Testaţi-vă cunoştinţele
1. Când folosiţi schemele XML?

Temă

2. Daţi exemple de tipuri de date predefinite. 3. Cum se definesc elementele de tip simplu şi de tip complex? 4. Ce software XML Schema cunoaşteţi? 5. Comentaţi următorul cod XML (figura 8.18)?

Figura 8.18

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

Conversaţia 9

Complemente XML
••••••••••••••••••••••••••••••••••••••••• În această conversaţie:
XML – DOM, interfaţă pentru manipularea documentelor (X)HTML şi XML XML – Script-uri XML XML – Creaţi prima pagină Web interactivă XML – Inseraţi o imagine într-un document XML XML – Creaţi legături şi interogări î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 aplicaţiilor Web. DOM creează o ierarhie de obiecte sau mai exact un arbore ale cărui noduri reprezintă obiectele documentului XML. Aceste noduri sau obiecte ne furnizează metode (funcţii) 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, consultaţi lucrările [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 Rădăcina documentului NodeList ElementNode <exemplu> NodeList ElementNode <body> NodeList TextcharacterDataNode Două mere, două pere!
Remarci: Documentul conţine mai multe tipuri de noduri (nodul rădăcină este obligatoriu!). Interfaţa NodeList este prezentă chiar dacă documentul nu posedă decât un singur nod. Interfeţele se prezintă sub două forme [1]: interfeţe fundamentale – Node, Document, DOMImplementation, DocumentFragment, NodeList, Element, NamedNodeMap, Attr, CharacterData, Text, Comments, DOMException; interfeţe extinse – CDATASection, DocumentType, Notation, Entity, EntityReference, ProcessingInstruction. Obiectul Node permite realizarea următoarelor operaţii principale: parcurgerea arborelui; obţinerea de informaţii dintr-un nod; actualizarea unui nod. Atributele obiectului Node sunt următoarele: ownerDocument, nodeName, nodeValue, nodeType, namespaceURI, prefix, localName, attributes, previousSibling, nextSibling, parentNode, childNodes, firstchild, lastchild. Metodele atributului Node sunt următoarele: supports (), cloneNode (), hascildnodes, insertBefore (), appendchild (), replacechild (), removechild ().

Figura 9.1

Figura 9.2

XML

Script-uri XML

Creaţi şi manipulaţi obiecte DOM XML cu Java Script
După cum aţi putut constata, paginile Web pe care le-am construit împreună au fost … statice! Cu siguranţă că vă aşteptaţi la mai mult!

Pentru realizarea acestei aplicaţii am folosit lucrarea: Kay Ether. ASP). care pe lângă tehnicile cunoscute mai face apel la tehnicile specifice DOM şi Java Script. Tehnologia aplicaţiilor Web (XML. Pavel Năstase. paginile 258 – 259. pornind de la documentul XML statistici.3. Puteţi utiliza DOM. utilizând facilităţile de script ale browser-ului Microsoft Internet Explorer (versiunea 5 şi superioară) pentru a crea. Java Script (nu Java!) este unul din limbajele cele mai vechi şi cele mai răspândite pentru prelucrarea paginilor Web. Editura Economică 2002.xml prezentat în figura 9. Paris. Java Script este un limbaj uşor de învăţat şi este recunoscut de toate navigatoarele. în sfârşit pagini Web interactive. Java Script permite asamblarea obiectelor DOM în paginile noastre Web. Remarcă. Aceste calităţi şi nu … doar atât îl recomandă pentru manipularea documentelor şi a foilor de stiluri cu ajutorul DOM. DHTML pentru a crea pagini Web interactive.161 În cele ce urmează vom învăţa să manipulăm documentele XML. Alan Houser. Remarcă. Java Script. 2002 Floarea Năstase. XML Web Training. XML Creaţi prima pagină Web interactivă Construcţia paginilor Web interactive este o activitate complexă. Remarcă. Iată cum procedăm pentru a crea pagina Web interactivă intitulată „Campionatul Mondial de Fotbal 2002”. Bucureşti. Java Script Web Training. Paris 2002. . OEM. CSS. Collection Web Training. Pentru mai multe detalii privind limbajul Java Script consultaţi următoarele resurse: Collection Web Training. DOM.

162 Figura 9. Pagina Web interactivă trebuie să asigure următoarele funcţiuni: afişarea rezultatelor într-un tabel HTML. .3 Remarcă. Pentru a putea exemplifica execuţia aplicaţiei. 1.4). 2. sortarea tabelului în funcţie de clasament. executând clic pe titlul coloanei corespunzătoare. Precizaţi funcţiunile paginii Web. sortarea tabelului în ordine alfabetică. am schimbat ordinea în clasament a celor trei echipe. Iniţializaţi obiectele reprezentând documentul sursă XML şi foaia de stiluri XSLT (figura 9. după numele echipelor sau în funcţie de clasament.

XMLDocument reprezintă documentul XML. Codul JavaScript a fost inserat direct în foaia de stiluri XSLT în secţiunea CDATA. Utilizaţi metoda selectSingleNode (figura 9. Navigatorul încarcă documentul XML şi foaia de stiluri XSLT în momentul în care script-ul este executat. .163 Figura 9.XSLDocument reprezintă foaia de stiluri XSLT iar document. Manipulaţi obiectele DOM. Cu instrucţiunea <xsl:comment> codul JavaScript va fi comentat în fişierul rezultant.5: <script> <xsl:comment> <![CDATA[ Cod JavaScript … Figura 9.5 ]]> va genera următorul rezultat (figura 9.7). document. Codul din figura 9.6 <script> <!-Cod JavaScript --> </script> 3.6): Figura 9.4 Remarci: Numele obiectelor xslStyleSheet şi xmlSource sunt nume de variabile arbitrare.

7 Remarci: Odată create obiectele care reprezintă documentele.8). Instrucţiunea următoare selectează atributul numit select al elementului <xsl:sort> al foii de stiluri.8 . 4. ele pot fi utilizate pentru a manipula aceste documente. Pentru aceasta este suficient de a utiliza una sau mai multe metode (metoda este un termen al programării orientate obiect şi are aproximativ aceeaşi semnificaţie ca şi o funcţie). Această metodă ia în considerare un singur argument: drumul de acces către nodul care trebuie să fie selectat. 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. Creaţi o funcţie JavaScript pentru a modifica atributul select al elementului <xsl:sort> (figura 9.164 Figura 9. Obiectul XSLDocument. Figura 9. cum ar fi un comentariu sau o instrucţiune de prelucrare).

Obiectul xmlSource. Figura 9. Pentru a afişa datele. Metoda nodeValue permite modificarea valorii lui sortColoana. unde coloana poate primi una din valorile: echipa sau clasament pe care le folosim în operaţia de sortare. (figura 9. Apelaţi funcţia de afişare display.9 6.165 Remarci: Funcţia display(coloana) are un singur argument numit coloana. Inseraţi tag-ul <div id=”clasament”/> în fişierul HTML rezultant (figura 9. Noi apelăm această metodă cu xslStylesheet pentru a reaplica foaia de stil modificată.10) adăugând după aceea câmpurilor Echipa şi Clasament un gestionar de evenimente onclick (figura 9. vom utiliza DOM-ul plasând rezultatele într-un obiect numit clasament.10 .9). Figura 9. 5. obiectul clasament va conţine rezultatele.active care transformă pointer-ul într-un icon de tip mânuţă.documentElement posedă o metodă numită transformNode care primeşte ca argument numele obiectului corespunzător foii de stiluri. Vom utiliza această metodă pentru a determina criteriul de sortare. În acest mod.11). DOM HTML Microsoft posedă o metodă innerHTML care permite modificarea unei porţiuni a codului HTML al unei pagini. declarând mai întâi o clasă .

Atunci când vom aplica unui element clasa active. pointer-ul se va modifica de fiecare dată când el va fi plasat pe acel element. 7.11 Remarci: De fiecare dată când utilizatorul va executa clic pe Echipa sau Clasament. În figura 9. Realizaţi programul complet.12 .12 se prezintă foaia de stiluri XSLT care conţine codul JavaScript. funcţia display va fi apelată cu argumentul corespunzător.166 Figura 9. Figura 9.

12 8.xml) în Microsoft Internet Explorer (versiunea 5 sau o versiune superioară).167 (continuare) Figura 9. Figura 9.13 . figura 9.13. Afişaţi documentul (statistici.

168 9. Figura 9. Testaţi rezultatul.14 Remarcă.15 .14). Executaţi clic pe Echipa (figura 9. Browser-ul afişează documentul dinamic cu datele sortate după numele echipei (figura 9. Figura 9.15).

Browser-ul afişează documentul dinamic cu datele sortate după clasament (figura 9.16 Remarcă.17 . Figura 9. Figura 9.169 10.16). Executaţi clic pe Clasament (figura 9.17). Testaţi rezultatul.

În XML nu se întâmplă acelaşi lucru. În consecinţă. În XML va trebui să modificaţi DTD-ul pentru ca tipurile de imagini utilizate să fie acceptate. Navigatoarele afişează imaginile dintr-un document HTML datorită tag-ului img. Navigatoarele nu recunosc tag-ul img inclus într-un document XML. puteţi numi cum doriţi acest tag: img. grafic. Figura 9. Definiţi un element img într-un DTD – începeţi cu <!ELEMENT. adăugaţi numele elementului şi terminaţi cu EMPTY> (figura 9. Declaraţia <!ELEMENT img EMPTY>) a fost inclusă în DTD pentru a valida documentul XML care conţine un element vid.18 Remarci: Elementele vide sunt declarate prin cuvântul cheie EMPTY.19).170 XML Inseraţi o imagine într-un document XML Codul care permite inserarea imaginilor într-un document XML este mult mai complex decât cel utilizat în (X)HTML. Am preferat img pentru a înţelege mai bine procedura. 1. de forma: <img/>.18). Iată cum procedăm pentru a adăuga un element imagine (img în HTML) într-un DTD (excursie.dtd) [1]. . 2. Adăugaţi un atribut pentru a preciza calea de acces la imagine (figura 9. foto etc. poză.

apoi SYSTEM şi calea de acces. va trebui să definim o notaţie (NDATA) pentru formatele de imagine GIF. Definirea unei entităţi în DTD nu constituie decât jumătate din ceea ce avem de făcut! În continuare.d. Valoarea unui astfel de atribut nu este analizabilă. Iată care este procedura pe care trebuie s-o urmaţi pentru a crea o notaţie.m.20 . JPEG. Figura 9. PNG ş.171 Figura 9. va trebui să indicaţi o valoare pentru atributul source pentru a preciza calea de acces către imagine.a. JPEG etc. Definiţi entitatea (ENTITY) imagine într-un DTD – după cuvântul cheie <!ENTITY indicaţi numele (sigla) entităţii (figura 9. introduceţi în continuare NDATA şi numele utilizat în notaţie (GIF. De fiecare dată când veţi utiliza tag-ul img.). Dumneavoastră puteţi folosi orice nume doriţi! Tipul de atribut ENTITY defineşte referinţa la datele binare externe (imagini). Vă mai amintiţi de cuvântul cheie #REQUIRED! El semnifică faptul că atributul trebuie să fie întotdeauna prezent.20).19 Remarci: Noi am utilizat atributul source (pentru a înţelege mai bine procedura). 1.

dumneavoastră utilizaţi un tip de date externe.22). Nu uitaţi bara oblică! Aplicaţie Inseraţi într-un document XML (sigla.22 Remarcă. contrar sintaxei HTML. puteţi să le utilizaţi în documentele dumneavoastră XML.23 este prezentat DTD-ul aplicaţiei (sigla. Datele (fişierele) externe semnifică faptul că dumneavoastră referiţi fişiere non-XML în documentele pe care le-aţi creat. În figura 9.xml) sigla societăţii LUMINA BLÂNDĂ. Iată cum adăugăm codul necesar pentru a insera o imagine într-un document XML (figura 9. Acum.21 Remarci: DTD-urile externe private sunt identificate prin cuvântul cheie SYSTEM. Figura 9. În XML toate tag-urile elementelor vide trebuie să se termine cu „/”.172 2.21). Dacă faceţi referire la un fişier GIF/JPG. . Definiţi (în DTD) notaţia (NOTATION) după entitatea care o utilizează (figura 9.dtd). după ce aţi definit notaţiile în DTD. Figura 9.

fişierul sigla. Figura 9.26 este prezentat documentul sigla.jpg) utilizaţi XSLT.xml.25 este afişat rezultatul.jpg nu este afişat în browser.24 este prezentat documentul sigla.173 Figura 9.xsl.23 În figura 9. În figura 9. . Pentru afişarea siglei societăţii LUMINA BLÂNDA (sigla.24 În figura 9. Figura 9.25 Remarci: Deşi disponibil.

27 Remarcă. Figura 9.174 Figura 9.27 este afişat rezultatul în browser-ul Internet Explorer. Pentru crearea şi afişarea imaginilor aveţi nevoie de un soft dedicat (Adobe SVG Viewer. .). SVG (Scalable Vector Graphics) este un vocabular standard XML care permite crearea imaginilor.26 În figura 9. Imaginile SVG se integrează perfect în documentele XML. Adobe Illustrator 9 etc.

XLink a fost creat pentru a permite utilizarea legăturilor mult mai puternice decât cele HTML. nu pot fi direcţionate decât către un document întreg sau către un punct al unui document sau un reper definit în prealabil. privind standardul SVG vizitaţi site-ul: XML Creaţi legături şi interogări în documentele XML Creaţi legături cu XLINK (XML Linking Language) Trebuie să recunoaştem că legăturile HTML suferă de următoarele limitări: sunt unidirecţionale.org/TR/SVG. orice element XML poate constitui o legătură. dar cu siguranţă vă veţi schimba opinia atunci când veţi cunoaşte facilităţile oferite de XLink.w3. Poate pentru moment multe dintre aceste limitări nu vă deranjează. legăturile XLink sunt multidirecţionale. nu pot fi direcţionate decât către documente HTML. o legătură XLink poate fi direcţionată către un element sau un ansamblu de elemente în documentul ţintă. . Prezentăm pe scurt câteva dintre facilităţile oferite de XLink [2]: legăturile XLink pot fi direcţionate către orice tip de resursă. legăturile XLink pot fi activate manual sau în mod automat.175 Pentru mai multe detalii http://www. XLink posedă o sintaxă mult mai bogată. nu pot fi obţinute decât cu elementul <a>. trebuie mereu activate manual.

Paris R. . Manuel de référence XML.xml </xlink:simple>.xml”> Link către sigla. În afară de facilităţile de referire a elementelor.org. Vă mai amintiţi de XPath? L-aţi folosit în foile de stiluri XSLT! Cea mai mare parte a sintaxei XPointer este împrumutată din specificaţiile XPath. XML Web Training. 2001. Microsoft.org/1999/xlink Kay Ether. Exemplu: <xlink:simple href=”sigla.org http://www. XML.w3. Collection Web Training. Sultan Rehman. Creaţi elemente XLink. XPointer conţine instrucţiuni suplimentare care servesc identificării unor părţi ale acestor elemente. 2002 Limbajul XML Pointer (XPointer) XPointer este utilizat pentru referirea secţiunilor documentelor externe. Alexandre PINHEL. evident în funcţie de structura şi conţinutul acestora. Micro Application. Remarcă. Paris 2002 Yannick LEJEUNE. Brad Leupen. OEM.w3. Pentru mai multe detalii consultaţi următoarele resurse: http://www. Pentru mai multe detalii consultaţi site-ul: http://www.w3. Alan Houser. Exemplu: <!ELEMENT mail (#PCDATA)> <!ATTLIST mail xlink: type (simple) #FIXED „simple” xlink: href CDATA #REQUIRED Remarcă.176 Aplicaţii Creaţi legături XLink simple. Allen Wyke. XPointer poate indica de asemenea poziţiile relative ale acestora (Exemplu: al patrulea element după primul element <persoana>). e-Poche.

20/ http://www.org/TR/SVG http://users.177 Limbajul XML Query Limbajul XML Query a fost creat de W3C (World Wide Web Consortium). Ce este DOM-ul? Temă 2. XQuery foloseşte elementele limbajelor XPath. Cum inseraţi o imagine într-un document XML? 4. pentru afectarea rezultatelor intermediare variabilelor.uk/mhkay/Saxon http://www.org/XML/Query XML Testaţi-vă cunoştinţele 1.w3.w3.107.org http://www. Remarcă. XPointer şi conţine în plus un set de instrucţiuni proprii pentru limbajul de interogare. Cum creaţi o pagină Web interactivă? 3.w3. Pentru mai multe detalii consultaţi site-urile: http://www.co.w3.org http://13. pentru utilizarea expresiilor condiţionale şi pentru filtrarea rezultatelor.228.iclway. Care sunt facilităţile oferite de XLink? 5.org/1999/xlink . Care sunt facilităţile oferite de limbajele XML XPointer şi XML XQuery? Consultaţi site-urile http://www.w3.

Sultan Rehman. Young. Brad Leupen. Microsoft Press. 2002 2. Pavel Năstase. OEM. Manuél de référence XML. 2002. Alexandre Pinnel. ASP). Yannick Lejeune. e-Poche. Collection Web Training. Alan Houser. Floarea Năstase. 2002 . Kay Ether. Editura Economică. Étape par étape. Paris 3. Microsoft. Allen Wyke. XML Web Training. R. 2001. MicroApplication. Michael J. XML. Bucureşti 4. Paris. Paris.BIBLIOGRAFIE 1. DOM. 2001 5. Tehnologia aplicaţiilor Web (XML. XML.

Sign up to vote on this title
UsefulNot useful