Documente Academic
Documente Profesional
Documente Cultură
XML
XML
CUPRINS
Conversaia 1. De la (X)HTML la XML.............................................. 3
XML
XML
XML
XML
Conversaia 1
De la (X)HTML la XML
n aceast conversaie:
f
f
f
f
XML
Ce este XML?
Limbajul XML, acronimul de la eXtensible Markup Language, a fost
definit de consoriul W3C n anul 1996.
Remarc. Definiia complet a limbajului XML dat de W3C o gsii la adresa:
http://www.w3.org/TR/REC-xml.
4
9 Tag-urile XML nu sunt predefinite; altfel spus, XML permite crearea
tag-urilor personalizate, ceea ce este nemaipomenit.
9 Pentru descrierea structurilor de date, documentele XML pot utiliza un
DTD (Document Type Definition).
9 Un document care conine un DTD este autodescriptiv.
Remarc. Pentru a nelege XML-ul, trebuie s v aducei aminte ce este (X)HTML-ul!
(vezi Liviu Dumitracu, (X)HTML, Editura Universitii din Ploieti, 2003).
Aplicaii XML
Pe bun dreptate, v putei ntreba ce facei cu XML n practic? Teoria
fr prax.
Prezentm n continuare, o scurt list de aplicaii XML:
9 structurarea datelor n baze de date;
9 structurarea documentelor;
9 grafic vectorial (VML, sau Vector Markup Language);
9 prezentri multimedia (SMIL Synchronized Multimedia Integration
Language; HTML + TIME, sau HTML Timed Interactive Multimedia
Extensions);
9 comunicarea deschis ntre aplicaii, via Web cu ajutorul mesajelor
bazate pe XML (SOAP, sau Simple Object Access Protocol);
5
9 schimbul
de
informaii
financiare
(OFX,
sau
Open
Financial
Exchange);
9 tranzacii comerciale pe Internet (XFDL, sau eXtensible Forms
Description Language);
9 resurse umane (HRMML, sau Human Resource Management Markup
Language);
9 formatarea
formulelor
matematice
pe
Web
(MathML,
sau
partiturilor
muzicale
(MusicML,
sau
Music
Markup
Language);
9 buletine meteo (OMF, sau Weather Observation Markup Format);
9 tranzacii imobiliare (RETS, sau Real Estate Transaction Standard).
XML
6
Fraza poate fi descompus dup cum urmeaz:
9
9
9
9
adjectiv (ultimul);
substantiv (tren);
verb (a plecat);
sfrit de fraz (.).
XML
7
Regulile XML pot fi clasificate n dou categorii:
9 reguli de sintax XML;
9 reguli de validitate a documentelor XML.
Figura 1.1
Limbaj
HTML
Codul surs
<P>nva s priveti dincolo de aparene!</P>
XHTML
XML
Remarci:
8
care mai multe elemente sunt definite cu tag-urile de nchidere
facultative.
Remarci:
Figura 1.2
Limbaj
HTML
Codul surs
<IMG src=sigla.jpg>
XHTML
XML
9
9 Metoda 2 Adugai un tag de nchidere (Exemplu: <br>
</br>).
Remarc. V sugerm s utilizai prima metod, care v ofer o economie de spaiu i
de timp.
delimitate de ghilimele.
Iat cum delimitm valorile a trei atribute n limbajele: HTML, XHTML,
XML (figura 1.3).
Figura 1.3
Limbaj
HTML
Codul surs
<P align=center>nva s priveti dincolo de
aparene!
XHTML
XML
Figura 1.4
Limbaj
HTML
Codul surs
<INPUT name=C1 type=checkbox id=C1
value=Java checked>
XHTML
id=c1
10
Remarc. n limbajul HTML, sintaxa tag-ului <INPUT> este corect, dar n XHTML,
conform regulilor XML (toate atributele trebuie s conin valori) sintaxa nu este
corect. Nu ne rmne dect s definim atributul egal cu el nsui.
11
Exemple de elemente HTML, XHTML, XML corect imbricate
9 HTML <P> Acesta este <B> venitul meu </B>!
9 XHTML <p> Acesta este <b> venitul meu </b> </p>!
9 XML
12
Un element rdcin este delimitat printr-un tag de deschidere plasat la
nceputul documentului i un tag de nchidere plasat la finele
documentului.
n figura 1.5 este prezentat tipul de date email (element rdcin) sub
form de structur arborescent.
email
Figura 1.5
to
from
date
subject
body
<email>
<to> </to>
<from> </from>
<date> </date>
<subject> </subject>
<body> </body>
</email>
n figura 1.6 este prezentat documentul XML, care descrie datele e-mail
(vezi figura 1.5) de o manier structurat.
Figura 1.6
13
Figura 1.7
Remarci:
14
Figura 1.8
Figura 1.9
Reguli:
15
9 Toate elementele XML trebuie s conin un tag de deschidere i un
9
9
9
9
9
9
9
9
9
9
9
tag de nchidere.
Elementele vide XML trebuie s se termine cu un spaiu urmat de o
bar oblic.
Pentru a delimita valorile atributelor XML utilizai ghilimelele.
Toate atributele XML trebuie s aib valori.
Toate documentele XML trebuie s aib cel puin un element
rdcin.
Declaraia XML este facultativ.
Tag-urile XML trebuie s fie imbricate n mod corect.
Numele tag-urilor pot conine: caractere alfanumerice (litere i cifre),
liniu (-), liniu de subliniere (_) i trebuie s conin cel puin o
liter.
Numele atributelor se scriu cu minuscule.
Spre deosebire de HTML, sfritul unui document XML nu este marcat
cu </xml>.
Comentariile XML au aceeai sintax ca i comentariile XHTML.
Un document bine format nu necesit un DTD (Document Type
Definition). Declaraia DOCTYPE este facultativ.
DTD intern
Dou sunt tag-urile care ne permit s definim n interiorul documentului
XML propria noastr structur: <!DOCTYPE> i <!ELEMENT>.
Tag-ul <!DOCTYPE> permite deschiderea unui bloc de definire a
tag-ului. Va trebui s dm un nume acestui bloc. Sintaxa (relum
exemplul anterior: email), este prezent n figura 1.10.
<!DOCTYPE email
[
Figura 1.10
]>
16
Numele poate conine litere, cifre (n afar de prima liter) i caracterul
de subliniere (underscore, caracterul _).
Tag-urile sunt apoi definite n interiorul parantezelor drepte. Tag-ul
<!ELEMENT> permite definirea unui tag. Sintaxa este urmtoarea:
<!ELEMENT nume_tag (coninut)>
unde,
9 nume_tag desemneaz numele tag-ului (cum indic numele su);
9 coninut specific la care tag (tag-uri) sau date este legat acest tag.
Figura 1.11
17
DTD extern
Dac dorii s definii un fiier DTD extern (ex.dtd) va trebui s creai un
nou fiier (vezi figura 1.12).
Figura 1.12
Figura 1.13
Aplicaie
n figura 1.14 este prezentat un document XML bine format i valid
(client.xml), care definete tipul de date client (element rdcin).
Comentai declaraia DOCTYPE, care este obligatorie.
18
Figura 1.14
XML
Tem
Testai-v cunotinele
1. Care sunt cele 10 obiective ale limbajului XML?
2. Cum este utilizat XML-ul n practic?
3. Care sunt regulile de sintax XML pe care le-ai reinut?
4. Care dintre elementele de mai jos sunt case-sensitive:
9 HTML;
9 XHTML;
9 XML.
5. Ce este un document bine format?
6. Ce este un document valid?
Vizitai site-urile
9 http://www.w3.org/XML/
9 http://msdn.microsoft.com/xml/default.asp
9 http://www.oasis open.org/cover/xml.html#applications
Conversaia 2
n aceast conversaie:
f XML Structura unui document XML bine format
f XML Creai elemente XML cu tipuri de coninut diferite
f XML Metode i instrumente pentru crearea documentelor XML bine
formate
f XML Tem
XML
20
9 prologul;
9 elementul rdcin (numit i elementul document).
Pentru a nelege mai bine anatomia unui document XML, vom face
referiri la documentul mail.xml, o mai veche cunotin de-a noastr
(figura 2.1).
S ncepem cu prologul!
Figura 2.1
Figura 2.2
21
Elementul rdcin.
document
XML,
elementele
indic
structura
logic
Figura 2.3
Remarci:
9 Fiecare din elementele inserate n elementul email (to, from, date, subject,
body) nu conin dect date de tip caracter.
9 Elementul rdcin din cadrul unui document XML este similar elementului
BODY din cadrul unei pagini (X)HTML, cu singura deosebire c putei s-i
atribuii orice nume legal.
22
Elemente vide
Putei introduce de asemenea n documentul dumneavoastr un element
vid, altfel spus un element fr coninut.
Putei crea un element vid plasnd tag-ul de nchidere imediat dup
tag-ul de deschidere (figura 2.4).
Figura 2.4
<hr> </hr>
Sau, putei utiliza tag-ul specific elementului vid (figura 2.5).
Figura 2.5
<hr />
Remarci:
Figura 2.7
23
Remarci:
<magazin tip=C&A>
Figura 2.9
Figura 2.10
24
Aplicaie
Creai un document XML cu structur minimal, pornind de la secvena de
cod (X)HTML din figura 2.11.
Figura 2.11
Figura 2.12
Remarci:
25
9
9
9
26
9 Fiecare element trebuie s conin un tag de deschidere i un
apostrofuri.
Dac dumneavoastr respectai aceste reguli (pe care vi le reamintim ori
de cte ori avem ocazia s-o facem), documentele XML pe care le vei
realiza vor fi cu siguran bine formate i vor fi corect interpretate de
browser-e ct i de alte programe.
27
9 Atunci cnt deschidei un document XML direct n Microsoft Internet Explorer
5 (sau o versiune superioar), parser-ul verific numai dac documentul este
bine format i afieaz un mesaj n caz de eroare. El nu verific dac
documentul este valid!
Aplicaii
Verificai dac urmtoarele documente sunt bine formate. Identificai i
eliminai erorile de sintax.
a) Un document (figura 2.13) care nu este bine format!
Figura 2.13
Remarc. Afiai documentul XML ntr-un browser.
Figura 2.14
Remarc. Afiai documentul XML ntr-un browser.
Figura 2.15
Remarci:
9 Un element care conine unul sau mai multe elemente imbricate (carte, n
exemplul nostru) se numete element printe. Un element care este coninut
direct n elementul printe (titlu, n exemplul nostru) se numete element fiu
sau sub-element sau element inserat n elementul printe.
9 Afiai documentul XML ntr-un browser.
28
d) Un document (figura 2.16) care nu este bine format!
Figura 2.16
Remarc. Afiai documentul XML ntr-un browser.
XML
29
Figura 2.17
Figura 2.18
Figura 2.19
Remarc. Atunci cnd adugai text unui element putei insera orice caracter cu excepia
urmtoarelor caractere (speciale): < (simbolul mai mic), & (simbolul ampersand), ]]>
(ir de caractere).
30
Referine de entiti generale. n figura 2.20 este prezentat un
exemplu care conine o referin de entitate general intern n vederea
afirii copyright-ului.
Figura 2.20
Figura 2.21
Figura 2.22
31
aplicaii. n figura 2.23 este prezentat un exemplu de instruciune de
prelucrare XML.
Figura 2.23
Remarci:
Figura 2.24
9 Putei insera un comentariu la finele elementului rdcin (figura 2.25).
Figura 2.25
9 n figura 2.26 se prezint un exemplu de comentariu ilegal.
32
Figura 2.26
XML
9 Metoda 2
sau,
Editorul XML Spy;
9 Metoda 3
9 Metoda 4
Documente XML;
9 Metoda 5
Baze de date;
9 Metoda 6
33
Metoda 1 Editorul de texte Notepad
1. Tastai, cu litere mici, prima linie a documentului (figura 2.27).
Figura 2.27
Remarci:
9 Prima linie a documentului este o declaraie XML.
9 Declaraia <?xml version=1.0 ?> indic browser-ului c se afl n
faa unui document XML.
9 Declaraia poate conine i alte informaii, dar forma cea mai simpl
este cea indicat. Cu siguran, W3C va propune n viitor noi
modificri.
9 Declaraia poate preciza de asemenea i setul de caractere utilizat
(atributul encoding): <?xml version=1.0 encoding=ISO-8859-1
?>.
9 Setul de caractere ISO-8859-1, nc numit ISO-Latin 1 conine
caracterele accentuate ale limbii franceze, nlocuind setul UTF-8
utilizat n mod implicit. Setul UTF-8 reprezint caracterele ASCII
standard pe 1 octet i caracterele accentuate pe 3 octei.
9 Declaraia XML trebuie s utilizeze caractere mici, exceptnd valoarea
atributului encoding (ISO-8859-1).
Figura 2.28
Remarci:
9 Comentariile XML sunt similare comentariilor HTML.
9 Comentariile nu necesit tag-uri de nchidere.
9 Lungimea comentariilor nu este limitat.
34
Figura 2.29
Remarci:
9 <email> este elementul rdcin.
9 <email> </email> delimiteaz tipul general de date.
9 Putei da orice nume elementului rdcin, dar nu uitai c acesta
trebuie s fie semnificativ!
4.
Figura 2.30
Remarc. Modelul general al unui exemplar (instance, n limba englez) specific
tipului de date e-mail este:
<email>
<to> </to>
<from> </from>
<date> </date>
<subject> </subject>
<body> </body>
</email>
35
Figura 2.31
Figura 2.32
36
Remarci:
9 Dac fiierul dumneavoastr nu a fost afiat corect sau ai obinut un
mesaj de eroare (!), verificai codul XML n editorul de texte
(declaraia XML se gsete pe prima linie?; tag-urile XML au fost
introduse corect?; tag-urile de deschidere au fost scrise corect?;
documentul a fost corect salvat?), corectai erorile, salvai din nou
fiierul i rencrcai-l n browser.
9 Putei cere navigatorului s afieze un tag particular cu un anume font,
size, color etc. Pentru aceasta, fie utilizai foile de stiluri CSS, fie
transformai tag-urile XML n HTML cu ajutorul unui limbaj XSLT (XML
Stylesheet Language Transformation).
Figura 2.33
Figura 2.34
37
3. Schimbai numele elementului fiu Child_Element n elementul
fiu to (figura 2.35).
Figura 2.35
Figura 2.36
Figura 2.37
38
6. Introducei numele acestui element, from (figura 2.38).
Figura 2.38
Figura 2.39
Figura 2.40
39
9. Salvai documentul cu numele email n folder-ul My Documents
(figura 2.41).
Figura 2.41
10. Afiai
documentul
XML
Microsoft
Internet
Explorer
Figura 2.42
document
cu
XML
Spy
40
Figura 2.43
Figura 2.44
Remarc. Se deschide fereastra Create new document.
41
Figura 2.45
Remarc. Se creeaz un nou document XML (figura 2.46).
Figura 2.46
42
Figura 2.47
Figura 2.48
43
Figura 2.49
Figura 2.50
44
8. Adugai i celelalte elemente, via XML t Append t Element
(figura 2.51).
Figura 2.51
9.
Figura 2.52
45
10. Salvai
documentul
cu
numele
email1
folder-ul
My
Figura 2.53
11. Afiai
documentul
XML
Microsoft
Internet
Explorer
Figura 2.54
Remarc. Pentru a afia n anumite condiii (pe care le putei impune)
documentul XML ntr-un browser, folosii metodele prezentate mai jos.
9 Metoda 1 Utilizai foile de stiluri CSS;
9 Metoda 2 Transformai elementele XML n HTML nainte de a le afia.
46
Remarci:
9 Programele capabile s nregistreze datele n format XML sunt din ce
47
XML
Tem
Testai-v cunotinele
1. Descriei n XML urmtoarele structuri de date (figura 2.55).
Figura 2.55
2. Creai documentul XML din figura 2.55 utiliznd una din metodele
prezentate mai jos:
9 Metoda 1 Utilizai un editor de texte (Notepad);
9 Metoda 2 Utilizai un editor XML (XML Notepad, XML Spy).
3. Cum putei afia un document XML ntr-un browser?
Vizitai site-urile
9 http://www.w3.org/AudioVideo/
9 http://www.w3.org/TR/SVG/
9 http://www.w3.org/TR/2000/REC-xml-20001006
Conversaia 3
n aceast conversaie:
f
f
f
f
f
XML
50
XML
Figura 3.1
Remarc. Documentul ecuatie.xml nu va putea fi afiat din cauza caracterelor
speciale < i > inserate.
2. Afiai
documentul
XML
Microsoft
Internet
Figura 3.2
Explorer
51
Remarc. Browser-ul afieaz un mesaj de eroare provocat de existena
caracterelor < i >.
Figura 3.3
Remarci:
9 O seciune CDATA ncepe cu <![CDATA[ i se termin cu ]]>.
9 Toate caracterele unei seciuni CDATA sunt tratate ca o parte literal
a datelor de tip caracter ale elementului i nu ca un tag XML.
9 Cuvntul cheie CDATA se scrie cu majuscule.
9 Seciunile CDATA nu pot fi imbricate.
4. Afiai
documentul
XML
Microsoft
Internet
Explorer
Figura 3.4
Remarc. Navigatorul afieaz textul plasat n seciunea CDATA fr eroare.
52
XML
Figura 3.5
&
<
>
'
"
Caracter inserat
predefinit
&
<
>
Referina de caracter
echivalent
&
<
>
'
"
Remarci:
9 Inserarea uneia din aceste referine de entiti predefinite este
echivalent cu inserarea referinei de caracter echivalent.
9 Referinele de entiti predefinite sunt mult mai uor de reinut i de
neles atunci cnd le vedei ntr-un document.
Iat cum crem un document XML (cu structur minimal) care conine
codul <promo>Vizitai magazinele C&A!</promo>, utiliznd entitatea
predefinit & pentru a insera caracterul special &.
1. nlocuii caracterul & cu referina la entitatea predefinit &
(figura 3.6).
Figura 3.6
53
Remarci:
9 Referina la entitatea predefinit & este identic celei utilizate n
(X)HTML ncepe cu &, se continu cu amp i se termin cu punct i
virgul.
9 (X)HTML utilizeaz entiti de caractere pentru afiarea caracterelor
speciale, n timp ce XML nu le utilizeaz dect pentru specificarea
datelor.
2. Afiai
documentul
XML
Microsoft
Internet
Explorer
Figura 3.7
Remarc. n navigator, caracterul & apare explicit.
Aplicaie
Creai documentul XML (cu structur minimal) care conine codul
<copyright>2003 LUMINA BLANDA</copyright>.
Indicaie. Utilizai referine de caractere © sau &#?; nlocuind semnul
ntrebrii (?) cu valoarea hexazecimal a lui 169.
XML
54
9 un fiier extern, definit ca o entitate extern ntr-un DTD i
Figura 3.8
55
Remarci:
9 Referinele entitilor generale interne se folosesc pentru texte
frecvent utilizate: adres, nume de produs, titlu, copyright etc.
9 O entitate intern este o entitate coninut ntr-un ir de caractere
plasat ntre ghilimele. O entitate extern este o entitate coninut
ntr-un fiier separat.
9 Entitile interne sunt definite n DTD cu tag-ul special <!ENTITY>
care este sintaxa:
<!ENTITY nume_entitate valoare_entitate>
unde,
nume_entitate (cp n exemplul nostru) trebuie s respecte regulile
de aur XML;
valoare_entitate este valoarea entitii; valoarea pe care
dumneavoastr o atribuii unei entiti generale interne este un ir
de caractere delimitat prin ghilimele, numit ir ntre ghilimele sau
expresie literal (Copyright 2003 LUMINA BLANDA, n aplicaia
noastr).
9 Putei afecta unei entiti generale interne ntreaga valoare a unei
expresii generale interne, cu respectarea urmtoarelor reguli:
irul poate fi delimitat cu ajutorul unor ghilimele simple () sau
duble ();
irul nu poate conine ghilimele identice cu cele ale delimitatorilor;
irul nu poate conine caracterul (&), excepie fcnd nceputul
unei referine de entitate caracter sau entitate general;
irul nu poate conine caracterul (%);
coninutul irului trebuie evident s fie plasat legal, n locul n care
dorii s inserai entitatea.
Figura 3.9
Remarci:
9 Declaraia unei entiti trebuie s precead referina la aceast
entitate.
9 Referina de entitate &cp; conine numele entitii (cp) plasat ntre &
i ;. Numele entitii (cp) reprezint numele atribuit entitii n
declaraia <!DOCTYPE>.
56
9 Entitatea cp se mai numete entitate general intern analizabil
(corespunde tipului XML bine format).
9 Utilizarea unei entiti generale intern prezint avantajul urmtor:
putei modifica valoarea n tot documentul XML.
Figura 3.10
Remarci:
9 Navigatorul nlocuiete codul cp prin valoarea entitii (figura 3.10).
9 ntruct documentul email.xml nu conine un link la o foaie de stiluri,
navigatorul (Internet Explorer) se mulumete s afieze codul surs
al documentului care cuprinde: tag-urile (comentariile) i datele de tip
caracter. Microsoft Internet Explorer atribuie un cod color diferitelor
componente ale documentului pentru a facilita identificarea acestora
i afieaz elementul documentului (<email>) sub forma unei
arborescene retractabile/expandabile pentru a indica structura logic
a documentului i a v permite vizualizarea diferitelor nivele de
detaliu.
9 Executai clic pe simbolul minus (-) din stnga elementului email
(figura 3.11).
57
Figura 3.11
Figura 3.12
58
Figura 3.13
Aplicaie
Comentai urmtoarele exemple:
9 <titlu>< fatalitate><titlu>
9 <produs compania=C&A>bluz var<produs>
9 <!ENTITY titlu c1 " Kit " B>
Remarc. n cele trei exemple, referinele de entiti predefinite sunt utilizate pentru a
insera caractere, care nu pot fi inserate sub forma lor literal.
59
XML
Tem
Testai-v cunotinele
1. Care este semnificaia urmtoarelor referine de entitate:
9 &qt;
9 &
9 <
2. n ce situaii definii i utilizai o referin de entitate general intern
(analizabil)?
3. n ce situaii utilizai o seciune CDATA?
Vizitai site-urile
9 www.xml.com
9 www.w3.org/Markup/
9 http://www.ibiblio.org/pub/sun-info/standards/xml/why/xmlapps.htm
Conversaia 4
n aceast conversaie:
f
f
f
f
XML
Fiecare document XML trebuie s fie bine format. Altfel spus, el trebuie
s satisfac un minimum de exigen i de conformitate (figura 4.1).
Figura 4.1
62
Remarc. Dac suprimai elementul <mama> sau dac adugai nc trei
elemente <copil>, browser-ul, oricare ar fi el, nu va afia nici-un mesaj de
eroare! Dac un document nu este bine format, el nu poate fi considerat ca
un document XML.
XML
valid. Aplicaii
Adugai un DTD
O declaraie de tip de document este un bloc de tag-uri XML, care se
plaseaz n prologul unui document XML valid.
O declaraie de tip de document are urmtoarea sintax:
<!DOCTYPE nume_element DTD>
unde,
nume_element este numele elementului rdcin;
DTD este definiia tipului de document (Document Type
63
Remarci:
9 Ca toate cuvintele cheie XML, DOCTYPE trebuie s fie scris cu
majuscule.
9 DTD-ul trebuie s fie nlocuit prin coninutul su real.
ele
definesc
elementele
documentului,
atributele
alte
caracteristici.
n figura 4.2 se prezint un document XML valid complet, care conine
un DTD cu o singur declaraie (de tip element) fr restricii de
coninut (ANY).
Figura 4.2
ELEMENT;
9 declararea listei de atribute;
9 declararea entitilor (interne, externe); entiti analizabile,
64
Remarc. Pentru mai multe informaii privind tipurile de declaraii, consultai
lucrrile:
9 Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web (XML,
DOM, ASP), Editura Economic, 2002;
9 Michael J. Young, XML, Etape par tape, Microsoft Press, Paris, 2001.
de
coninut
sau
modelul
de
coninut
ale
elementelor.
Considerm c este mai uor de neles structura unui DTD cu ajutorul
unui exemplu.
Iat cum crem un DTD care include numele, adresa i informaiile de
contact ale unui client (figura 4.3).
65
Figura 4.3
Remarci:
9 Scopul unui DTD este de a defini elementele care pot fi utilizate ntr-un
document XML i de a specifica relaiile ntre ele.
9 Simbolul
telefon
telefoane
Figura 4.4
telefon
telefon
Figura 4.5
66
2. Definii elementul client specificnd structura sa.
2.1 Utilizai sintaxa:
<! ELEMENT nume_element model_coninut>
unde,
nume_element este numele elementului rdcin;
model_coninut sau specificatii_continut precizeaz
coninutul elementului.
2.2 nlocuii nume_element cu client i model_coninut cu:
nume, adresa, telefoane, online?, n ordinea indicat (figura
4.6).
Figura 4.6
Remarci:
9 Elementele cu unul sau mai multe elemente fiu sunt definite cu numele
elementelor fiu plasate ntre paranteze rotunde. Faptul c ele sunt separate
prin virgul impune ca ele s se gseasc n ordinea indicat.
9 Putei modifica model_coninut utiliznd: semnul ntrebrii (?), semnul plus
(+) i asteriscul (*), a cror semnificaie este precizat n tabelul 1.
Caracter
Tabelul 1
Semnificaie
67
<! ELEMENT nume_fiu model_coninut>
3.2 nlocuii nume_fiu cu nume i model_coninut cu #PCDATA
(figura 4.7).
Figura 4.7
Remarci:
9 Pentru a preciza coninutul unui element vid folosii cuvntul cheie EMPTY
(figura 4.8).
Figura 4.8
9 Pentru elementele cu un coninut oarecare folosii cuvntul cheie ANY (figura
4.9).
Figura 4.9
Figura 4.10
68
5. Specificai coninutul (date de tip text) elementelor: strada,
numr, ora, cod, ara, figura 4.11.
Figura 4.11
Figura 4.12
Remarci:
puin un element telefon i c acest element poate fi repetat ori de cte ori
este necesar. Elementul telefon va conine text ca i elementele strada,
numr, ora, cod, ara. Numerele de telefon pot fi deci introduse direct ntre
tag-urile de nchidere i de nceput.
9 Absena unuia din operatorii: *, +, ? ce apar n model_coninut al unui
element printe semnific faptul c elementul declarat este obligatoriu i nu
se poate repeta (el trebuie s apar o dat i numai o dat). Altfel, se va
genera o eroare n faza de validare.
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:
Figura 4.15
Figura 4.16
71
9 Deoarece DTD-ul are o structur ce poate fi folosit la generarea mai multor
Figura 4.17
Remarc. Prezentm trei variante pentru elementul client cu scopul de a pune n
eviden rezultatul pentru fiecare caz n parte.
9 <!ELEMENT client (nume, adresa, telefoane, online?>
Fiecare element poate s apar o dat, n mod opional. Fiind separate prin
virgule, elementele trebuie s apar n ordinea indicat.
72
Aplicaii
Se consider DTD-ul descris n figura 4.18.
Figura 4.18
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin invalid (figura 4.19).
Figura 4.19
2. Element rdcin valid (figura 4.20).
Figura 4.20
Se consider DTD-ul descris n figura 4.21.
73
Figura 4.21
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.22).
Figura 4.22
2. Element rdcin invalid (figura 4.23).
Figura 4.23
3. Element rdcin invalid (figura 4.24).
Figura 4.24
4. Element rdcin valid (figura 4.25).
74
Figura 4.25
Se consider DTD-ul descris n figura 4.26.
Figura 4.26
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.27).
Figura 4.27
2. Element rdcin invalid (figura 4.28).
Figura 4.28
Se consider DTD-ul descris n figura 4.29.
75
Figura 4.29
Precizai care din afirmaiile urmtoare sunt corecte.
1. Element rdcin valid (figura 4.30).
Figura 4.30
2. Element rdcin valid (figura 4.31).
Figura 4.31
3. Element rdcin valid (figura 4.32).
Figura 4.32
76
Adugai atribute unui element XML.
XML
Aplicaii
Descriere
CDATA
ENTITY
ENTITIES
Enumerare
ID
Identificator unic.
IDREF
IDREFS
NMTOKEN
Un cuvnt.
NMTOKENS
NOTATION
Tabelul 2
nume_atribut
tip_atribut
77
unde,
9 nume_element
9 nume_atribut
9 tip_atribut
- vezi tabelul 2.
9 valoare_implicit
trebuie
fie
ntotdeauna
Figura 4.33
78
Remarc. Definiia XML a modelului de date (modificat) client este ilustrat n figura
4.34 (client1.dtd).
Figura 4.34
linia
<!ATTLIST
nume_element
Figura 4.35
79
Figura 4.36
3. Introducei
elementul
<mobil>
din
documentul
Figura 4.37
4. Afiai
documentul
XML
Microsoft
Internet
Explorer
80
Figura 4.38
Aplicaii
Adugai un atribut elementului <client> care s evidenieze tipul clientului:
persoan fizic sau persoan juridic.
Indicaie. Introducei n schema anterioar urmtoarea linie de cod (figura
4.39):
Figura 4.39 <!ATTLIST client tip=(fizica|juridica) #REQUIRED>
Actualizai documentul XML care utilizeaz noua schem (figura 4.40):
<client tip=fizic>
Figura 4.40
Adugai elementului <client> un atribut de tip identificator unic.
Indicaie. Introducei urmtoarea linie de cod (figura 4.41).
81
...
<!ATTLIST client tip (fizica|juridica) #REQUIRED id ID #IMPLIED>
Figura 4.41 ...
Modificai elementul <telefon> astfel nct elementele <acasa> i
<mobil> s fie opionale.
Indicaie. n documentul client1.dtd schimbai linia de cod a elementului
<telefon> (figura 4.42).
...
<!ELEMENT telefon (acasa?, serviciu, mobil?)>
Figura 4.42 ...
Construii DTD-ul corespunztor unui raport (tehnic, de cercetare etc).
Elementele raportului (structura ierarhic) sunt: en-tte, introducere, cuprins,
concluzii, bibliografie [2].
Iat care este procedura pe care v invitm s-o aplicai.
1. Construii DTD-ul corespunztor en-tte-ului (figura 4.43).
Figura 4.43
2. Construii DTD-ul corespunztor introducerii i concluziilor (figura
4.44).
Figura 4.44
82
3. Construii DTD-ul corespunztor cuprinsului (corpul documentului),
figura 4.45.
Figura 4.45
4. Construii DTD-ul corespunztor bibliografiei (figura 4.46).
Figura 4.46
83
5. Scriei DTD-ul n forma sa final (figura 4.47).
Figura 4.47
84
Creai documentul XML corespunztor raportului (vezi structura DTD-ului din
aplicaia precedent), figura 4.48.
Figura 4.48
XML
Tem
Testai-v cunotinele
1. Care este structura unui DTD (Document Type Definition)?
2. Care este semnificaia urmtoarelor caractere: ?, +, *, |?
3. Precizai rolul cuvintelor cheie: PCDATA, EMPTY, ANY n cadrul
tag-ului <! ELEMENT>.
85
4. Care este rolul atributelor?
5. Ce tipuri de atribute cunoatei?
6. Care sunt valorile implicite ale atributelor?
Vizitai site-urile
9 http://www.xmlmag.com
9 http://xml.apache.org/
9 http://www.ddj.com/topics/xml/
Conversaia 5
n aceast conversaie:
f
f
f
f
f
XML
88
sau o versiune superioar). Nu este necesar s utilizm o pagin HTML
pentru a accesa datele i a le afia (contrar altor metode de afiare a
unui document XML pe care le vom prezenta n conversaiile urmtoare).
Plasarea instruciunilor de afiare ntr-o foaie de stiluri separat a
documentului XML mrete gradul de utilizare a acesteia iar actualizarea
este mult mai uoar!
Utilizarea unei foi de stiluri n cascad este probabil metoda cea mai
simpl de afiare a unui document XML.
Pentru a afia un document XML cu o foaie de stiluri CSS trebuie s
parcurgei urmtoarele dou etape principale:
9 Etapa 1 Crearea fiierului de stiluri CSS;
9 Etapa 2 Legarea fiierului de stiluri CSS (foii de stiluri) la un
document XML.
XML
89
Figura 5.1
Figura 5.2
90
Remarci:
9 Fiierul de stiluri stud.css din figura 5.1 conine un comentariu i trei
seturi de reguli.
9 ntr-o foaie de stiluri comentariul debuteaz cu caracterele slash i
asterisc (/*) i se termin cu caracterele asterisc i slash (figura 5.3).
Figura 5.3
Putei de asemenea folosi comentarii n situaia n care dorii s
dezactivai temporar o regul sau o parte a regulii (figura 5.4).
Figura 5.4
9 Fiierul de stiluri stud.css conine trei reguli: una pentru elementele
student, una pentru elementele nume i n sfrit una pentru
elementele facultatea.
9 Fiecare din cele trei reguli conine:
selectorul, care este numele tipului de element cruia i se aplic
modul de formatare i afiare (figura 5.5);
Figura 5.5
blocul de declaraie, delimitat prin dou acolade ({}), care conine
una sau mai multe declaraii separate prin punct i virgul (figura
5.6);
Figura 5.6
91
declaraia, care se compune dintr-o proprietate particular, urmat
de caracterul dou puncte (:), urmat de o valoare (figura 5.7).
{font-style:italic}
Figura 5.7
9 Declaraia display-block insereaz o linie de spaii nainte i dup
textul elementului.
9 Declaraia margin-top: 13 pt adaug o margine de 13 puncte
deasupra textului elementului.
9 Declaraia font-size: 10 pt definete mrimea (10 puncte) caracterelor
pentru afiarea textului elementelor.
9 Declaraia font-style: italic definete stilul italic pentru afiarea textului
elementelor.
9 Declaraia font-weight: bold definete stilul bold pentru afiarea
textului elementelor.
Aplicaii
Afiai cu caractere normale (nu italice!), cu font 14 (nu 10!) elementul
<nume> Adam Ion </nume>, care aparin documentului matricola.xml (figura
5.8). Utilizai atributul style.
Iat care este procedura pe care v invitm s-o aplicai.
n figura 5.8 este prezentat modul de utilizare al atributului style; se asociaz
atributul (style) elementului nume.
Figura 5.8
92
Remarc. n cazul unui document XML valid, va trebui s declarai atributul style n DTD
nainte de a-l putea utiliza.
<!ATTLIST nume style CDATA # IMPLIED>
Figura 5.9
Remarc. Putei de asemenea include un tip de element n mai mult de o regul, n
aceeai foaie de stiluri (figura 5.10).
Figura 5.10
Pentru elementul student, definii proprietatea display, folosind unul din
urmtoarele cuvinte cheie CSS: block, inline (valoare implicit), none
(navigatorul nu afieaz elementul).
Afiai elementul facultatea cu una din proprietile CSS: font-family (figura
5.11); font-size; font-style; font-weight; font-variant.
93
Figura 5.11
Remarc. Pentru mai multe informaii consultai lucrarea: Liviu Dumitracu,
(X)HTML, Editura Universitii din Ploieti, 2003.
Afiai textul elementului nume n culoarea roie. Folosii proprietatea CSS
color (figura 5.12).
Figura 5.12
Afiai textul elementului nume cu culoarea albastr pe un fond galben.
Folosii proprietatea CSS background color (figura 5.13).
Figura 5.13
Plasai imaginea upg.jpg n centrul elementului facultatea. Folosii
proprietile background repeat i background position (figura 5.14).
Figura 5.14
94
Folosii proprietatea text-align cu valoarea center pentru a centra elementul
nume (figura 5.15).
Figura 5.15
Remarc. Pentru mai multe informaii privind afiarea documentelor XML cu
ajutorul foilor de stiluri n cascad, consultai lucrrile:
Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web, Editura
Economic, 2002.
Michael J. Young, XML, Etape par etape, Microsoft Press, Paris, 2001.
XML
XML
unde,
calefiier CSS este un URL care indic amplasarea fiierului foii de stiluri.
Iat cum legm fiierul de stiluri CSS stud.css la documentul XML
matricola.xml.
1. Inserai n prologul documentului XML, instruciunea de
prelucrare xml-stylesheet (figura 5.16).
95
Figura 5.16
xml-stylesheet)
Microsoft
Internet
Explorer
Figura 5.17
Remarci:
9 Atunci cnd o foaie de stiluri CSS este legat direct la un document XML,
putei deschide direct acest document n Internet Explorer (versiunea 5 sau
superioar). Tastai URL-ul (figura 5.18) i acionai tasta Enter.
Figura 5.18
9 ntr-un document XML putei include mai multe foi de stiluri, insernd o
96
Figura 5.19
XML
97
Numele unui element care se regsete ntr-un spaiu de nume se
construiete n felul urmtor: plasai la nceputul numelui elementului
spaiul de nume, introducei n continuare dou puncte (:), iar apoi
numele elementului.
Un element cu numele spaiu nume1: nume1 i elementul cu numele
Figura 5.20
unde,
9 spatiu-nume1
9 xmlns=
9 http://www.domeniu1.com
Remarci:
9 Dac un element XML poart numele unui element HTML (IMG, A, HR etc.) i
98
asociat unui spaiu de nume i conine de asemenea dou atribute; primul
atribut declar spaiul de nume iar al doilea atribut este un atribut standard
HTML (SRC).
Figura 5.21
9 Amintii-v c pentru a insera elemente HTML, documentul XML trebuie s
conin o foaie de stiluri ataat.
XML
Tem
Testai-v cunotinele
1. Prezentai etapele pe care trebuie s le parcurgei pentru a afia un
document XML n Microsoft Internet Explorer (versiunea 5 sau
superioar), cu ajutorul foilor de stiluri CSS.
2. Descriei procedura de creare a unui fiier de stiluri.
3. Descriei procedura de legare (asociere) a foilor de stiluri la un
document XML.
4. Explicai mecanismul de cascad n foile de stiluri CSS.
5. Cum definii proprietatea display?
6. Cum definii proprietatea font-style?
Vizitai site-urile
9 http://www.w3.org/TR/REC-CSS1
9 http://www.w3.org/TR/REC-CSS2
9 http://www.xml.com
9 http://www.w3.org/TR/REC-xml-names/
Conversaia 6
n aceast conversaie:
f
f
f
f
f
f
f
XSLT
Transformation
Vom ncepe conversaia noastr prin a studia XSLT. XSLT este un limbaj
de nalt nivel care cuprinde 35 de elemente definite de World Wide Web
Consortium. XSLT este un limbaj declarativ. Principalul obiectiv al
limbajului l constituie transformarea documentelor (surs) XML n alte
documente XML care pot fi afiate ntr-un navigator Internet, pe un
telefon mobil, pe hrtie de imprimant etc.
Remarci:
100
9 XSLT (eXtensible Stylesheet Language Transformation) i XSL/FO (eXtensible
XSLT
O foaie de stiluri XSLT este un fiier XML care permite integrarea datelor
XML ntr-un template (model), n aceeai manier n care inserai
adresele ntr-o scrisoare tip (cu foile de stiluri CSS nu putei afia dect
informaiile declarate n documentul XML!).
Foile de stiluri XSLT permit formatarea i afiarea atributelor i
elementelor XML (cu foile de stiluri CSS nu putei formata i afia dect
elementele XML!).
n sfrit, foile de stiluri XSLT permit manipularea, reorganizarea i
afiarea datelor de o manier dinamic (cu foile de stiluri CSS nu putei
afia datele dect ntr-o manier static!).
Remarci:
9 O foaie de stiluri XSLT trebuie s fie un document XML bine format! (XSLT nu
admite definirea DTD-urilor!).
document XML.
101
Creai fiierul de stiluri (foaia de stiluri)
XSLT
XSLT
Elementul
template
permite
definirea
modului
de
unui
titlu
(Statistici
Brazilia)
pentru
fereastra
navigatorului;
9 Crearea unui titlu (Statistici Brazilia) pentru pagina Web;
9 Afiarea numelui echipei i a rezultatului (BRAZILIA este pe
locul 1).
n figura 6.1 este prezentat documentul XML (statistica.xml) creat cu
Notepad pentru care dorim s crem fiierul de stiluri (foaia de stiluri)
statistica.xsl.
102
Figura 6.1
Remarci:
Figura 6.2
elementul
rdcin
<xsl:stylesheet>
dup
103
Figura 6.3
Remarci:
9 O foaie de stiluri XSLT trebuie s conin un element rdcin (document)
<xsl:stylesheet>.
9 Elementul rdcin xsl:stylesheet informeaz procesorul c acest document
este o foaie de stiluri XSLT, precizndu-i totodat c toate elementele care
vor ncepe cu xsl: vor fi elemente XSLT i c aceste elemente vor fi conforme
cu recomandarea XSLT 1.0.
9 Elementul rdcin (xsl:stylesheet) conine dou atribute: version i xmlns:xsl
care au valorile menionate.
9 xmlns:xsl=http://www.w3.org/1999/XSL/Transform este spaiul de nume
XSLT.
9 Urmtoarea form este de asemenea valid:
<xsl:transform
xmlns:xsl=http://www.w3c.org/1999/XSL/Transform
version=1.0. Valoarea 1999 reprezint anul de alocare a URI pentru W3C.
2. Introducei
elementul
<xsl:template>,
cu
atributul
Figura 6.4
Remarci:
9 Nu uitai c elementele foilor de stiluri care ncep cu xsl: sunt elemente XSL.
Toate celelalte elemente sunt fragmente ale rezultatului literal i sunt copiate
ca atare n documentul rezultant. Aceste elemente constituie scheletul paginii
HTML generate. Datele sunt ns extrase din documentul XML pentru a umple
scheletul.
9 Pattern-ul unei reguli template este valoarea atributului match al elementului
xsl:template. Template-ul pentru ieire este coninutul elementului
xsl:template. Elementele care nu conin prefixul xsl: se regsesc n arborele
rezultant.
9 Modul cel mai simplu prin care stabilim o coresponden ntre o regul de
prelucrare (template) i elementele de prelucrat const n a utiliza elementul
<xsl:template/>. Un model <xsl:template/> se construiete astfel (figura
6.5):
104
Figura 6.5
3. Introducei
elementul
<xsl:value-of
select=[expresie]/>
Figura 6.6
4. Introducei
elementul
<xsl:value-of
select=[expresie]/>
Figura 6.7
105
Remarc. Elementul <xsl:value-of select=[expresie]/> permite scrierea n documentul
rezultant a valorii unui element al documentului surs. Acest element prezint un
pericol: dac elementul documentului surs posed elemente fiu, atunci textul acestor
elemente este de asemenea inclus.
Figura 6.8
Remarc. Ai observat c elementul <xsl:value-of select=echipa a fost utilizat
de trei ori n acest model pentru:
9 crearea coninutului elementului HTML <title>;
9 titlul paginii;
9 construirea frazei Brazilia este pe locul 1.
6. nchidei
tag-urile
<body>,
<html>,
<xsl:template>
106
Figura 6.9
Figura 6.10
107
Figura 6.11
Remarci:
9 Dac Internet Explorer afieaz un mesaj de eroare, verificai sintaxa foii de
stiluri.
9 Asigurai-v c toate tag-urile deschise au fost bine nchise i c toate
elementele au fost corect imbricate.
Aplicaie
Construii acelai document cu editorul XML Spy.
n figura 6.12 se prezint documentul generat cu XML Spy.
108
Figura 6.12
XSLT
document XML
prologul
documentului,
instruciunea
xml-stylesheet.
Sintaxa general a acestei instruciuni este urmtoarea:
<?xml-stylesheet type=text/css href=calefiier.xsl?>
unde,
de
prelucrare
109
calefiier.xsl este URL-ul care indic amplasarea fiierului foii de stiluri
XSLT.
Iat cum legm fiierul de stiluri XSLT statistica.xsl la documentul XML
statistica.xml.
1. Inserai n prologul documentului XML, instruciunea de
prelucrare xml-stylesheet (figura 6.13).
Figura 6.13
Remarci:
9 Aceast instruciune de prelucrare este recunoscut de Microsoft Internet
Explorer 5.5 i nu de toate procesoarele XML.
9 href=statistica.xsl acioneaz n mod similar tag-ului LINK din HTML 4.0
(XML este mult mai dependent de foile de stiluri dect HTML!).
xml-stylesheet)
Microsoft
Figura 6.14
Internet
Explorer
110
Remarc. Atunci cnd o foaie de stiluri XSLT este legat direct la un document XML,
putei deschide direct acest document n Internet Explorer (versiunea 5 sau
superioar). Tastai URL-ul i acionai tasta Enter (figura 6.15).
Figura 6.15
XSLT
foilor
de
stiluri
sunt
alctuite
din
reguli
template
111
Aplicaii
Creai o foaie de stiluri XSLT care genereaz un document HTML ce conine
un tabel cu o linie pentru fiecare element <echipa>. Capul de tabel cuprinde
urmtoarele cmpuri: Echipa, Victorii, nfrngeri, Clasament.
n figura 6.17 este prezentat documentul XML (statistica.xml) pentru care dorim
s crem fiierul de stiluri (foaia de stiluri).
Figura 6.17
Iat cum construim o foaie de stiluri XSLT, care genereaz un document HTML
ce conine un tabel cu o linie pentru fiecare element <echipa>. Utilizai editorul
de texte Notepad.
1. Introducei elementul <xsl:template match=/> pentru a localiza
elementul rdcin (figura 6.18).
112
Figura 6.18
Remarci:
9 n timpul fazei de execuie vor fi afiate toate nodurile XML, ncepnd cu
nodul rdcin.
9 Tot ceea ce constituie prelucrare trebuie s fie n interiorul elementului
<xsl:template match=/>.
9 Elementul xsl:template definete un template care va putea fi aplicat unui
nod.
9 Atributul match permite definirea nodurilor asupra crora se vor aplica regulile
template-ului.
Figura 6.19
3. Introducei elementul <xsl:value-of /> pentru a crea titlul ferestrei
navigatorului (Statistici pentru Campionatul Mondial de Fotbal 2002) i
titlul paginii (Campionatul Mondial de Fotbal 2002), figura 6.20.
113
Figura 6.20
Remarc. Valoarea atributului (obligatoriu) select este o expresie. Aceast expresie este
evaluat i obiectul rezultat este convertit ntr-un ir de caractere.
Figura 6.21
Remarci:
9 statistici_cm_fotbal/nume selecteaz elementul fiu <nume> al elementului
<statistici_cm_fotbal>.
9 Cu enunul <xsl:for-each select=[expresie]/> se identific un element
(echipa) din documentul XML care este iterat (repetat) i cruia i se aplic
aceeai transformare pentru fiecare instan.
114
9 Prin // se selecteaz toate nodurile descendente ale elementului echipa
indiferent de nivelul ierarhic.
Figura 6.22
Remarci:
9 Elementul <xsl:apply-templates> cu atributul select permite aplicarea
regulilor template unui document.
9 Elementul <xsl:apply-templates> nu poate conine dect dou tipuri de
elemente:
xsl: sorte;
xsl: with-param.
9 La ntlnirea elementului <xsl:apply-templates/>, procesorul XSLT analizeaz
fiecare element fiu i i aplic regula template.
9 Exist numeroase asemnri ntre sistemul de adresare a documentelor XML
(sub form de arbore i noduri) i navigarea n structura directoarelor.
6. Introducei
tag-urile
de
nchidere:
</table>,
Figura 6.23
</body>,
115
Atunci cnd documentul i foaia de stiluri asociat sunt analizate de ctre
procesorul XML, acesta genereaz documentul HTML ilustrat n figura 6.24.
Figura 6.24
Remarci:
9 Tag-urile HTML au nlocuit tag-urile XML originale. Numai coninutul
elementelor documentului XML original, i nu tag-urile este copiat n
documentul rezultant.
9 Tag-urile originale sunt suprimate dar ele au servit la identificarea elementelor
al cror coninut trebuia s fie copiat. Acest coninut este plasat n elementele
HTML definite n foaia de stiluri.
116
Figura 6.25
Afiai echipele n ordinea n care au fost clasate (dup clasament!).
Indicaie. Pentru a sorta elementele unui document surs utilizai elementul
<xsl:sort/>. Acest element trebuie utilizat ca fiu al unuia din elementele
<xsl:apply templates/>, <xsl:for-each/>. Adugai elementului <xsl:sort/>
atributul select care precizeaz elementul utilizat drept criteriu de sortare. n
cazul nostru, vom sorta elementele documentului surs (XML) n funcie de
clasamentul echipelor.
Iat
cum
aplicai
elementul
<xsl:sort/>
pentru
sortarea
elementelor
Figura 6.26
Remarci:
117
9 Putei suprima coninutul unui element al documentului surs definind un
XML
comment>
permite
generarea
acelai nume;
9 <xsl:param> permite declararea parametrilor locali/globali;
9 <xsl:call-template></xsl:call-template>
permite apelarea
context;
9 <xsl:copy> permite efectuarea unei copii a nodului curent, n
arborele rezultant;
118
9 <xsl:copy-of> permite efectuarea unei copii a unui set de
noduri;
9 <xsl:decimal-format> definete modul n care un numr este
convertit n ir de caractere;
9 <xsl:element> permite definirea unui nou element;
9 <xsl:fallback> genereaz codul de nlocuire a unui element
altul;
9 <xsl:number> insereaz n arborele rezultant numrul
albe;
9 <xsl:stylesheet> introduce o foaie de stil;
9 <xsl:variable> declar o variabil global sau local.
XML
Tem
Testai-v cunotinele
1. Comparai foile de stiluri CSS cu foile de stiluri XSLT.
2. Descriei pe scurt etapele pentru afiarea unui document XML cu o
foaie de stiluri XSLT (XSL).
119
3. Ce este XSL?
4. Cum definii o regul template?
5. Care este patern-ul urmtoarei reguli template?
<xsl:template match=statistica>
6. Cum selectai nodul rdcin al arborelui surs?
7. Comentai urmtoarea regul template:
<xsl:template match=/>
<b> <xsl:value-of select=card/> </b>
</xsl:stylesheet>
8. Cum traducei n limba romn cuvntul match (vezi atributul
match=/).
9. Descriei
urmtoarele
exemple
de
pattern-uri
utilizate
pentru
Exemplu
Descriere
Nume
persoana
Elementul persoana
Oricare element
//
//persoana
.
Figura 6.27 ..
.
..
10.Se consider urmtorul exemplu XML (figura 6.28).
Figura 6.28
Efectuai transformarea XML HTML pentru a obine rezultatul afiat n
figura 6.29 (o list cu simboluri).
120
Figura 6.29
11.Comentai urmtorul exemplu (figura 6.30) creat cu XML Spy.
Figura 6.30
Vizitai site-urile
9 www.wapforum.org
9 http://www.w3.org/TR/xslt
Conversaia 7
n aceast conversaie:
f XPath
f XML
f XML
f XSLT, XPath
XPath
122
elementele unui document XML pentru a le copia n documentul
rezultant. Putei sorta, selecta i manipula elementele n funcie de
urmtoarele caracteristici: numele elementului, numele atributului,
valoarea atributului, prezena unui element fiu/printe particular.
Remarc. Aceast list este departe de a fi complet. XPath este un subiect prea vast
pentru a putea fi tratat integral n aceast lucrare. Pentru a explora XPath n detalii,
vizitai site-ul www.w3c.org/TR/xpath.
din
tag-uri
care
ofer
informaii
asupra
coninutului
<nume>
Figura 7.1
<echipa>
<echipa>
<echipa>
<rezultate
<rezultate>
<rezultate>
<victorii>
<victorii>
<echipa>
123
Remarci:
9
9
nod rdcin;
noduri element;
noduri text;
noduri atribut;
noduri spaiu de nume;
noduri instruciune de prelucrare;
noduri comentariu.
Elementul XSLT <xsl:apply-template/> poate fi utilizat n dou moduri:
fr atribut, <xsl:apply-template/>;
cu un atribut match, <xsl:apply-template match=[expresie]/>
unde,
expresie este o expresie XPath alctuit din instruciuni care permit selectarea
unuia sau mai multor elemente ale unui document XML; o expresie XPath
poate fi un simplu nume de element.
XSLT utilizeaz XPath pentru:
selectarea nodului de prelucrare;
specificarea condiiilor de prelucrare a unui nod;
generarea textului care se va insera n arborele rezultant.
Expresiile XPath intervin ca valori ale unor atribute ale elementelor XSLT i ca
template-uri pentru valorile atributelor.
Elementele fundamentale ale expresiilor XPath sunt prezentate n figura 7.2.
Simbol
Figura 7.2
Semnificaie
../
//
@*
Axele XPath
XPath furnizeaz un set de cuvinte cheie, numite axe pentru a specifica
relaiile ntre elemente. Axele XPath selecteaz nodurile n funcie de
relaia lor ierarhic cu nodul curent.
124
Axele XPath permit construirea cilor de acces complexe n vederea
localizrii nodurilor specifice ale unui document.
Calea de acces const din:
9 o ax;
9 un test;
9 unul sau mai multe predicate.
Semnificaie
child
descendent
parent
ancestor
following-sibling
preceding-sibling
following
preceding
Figura 7.3
self
Nodul curent.
125
Remarci:
stmoi
<statistici_cm_fotbal>
printe
<nume>
precedent
curent (self)
urmtorii
<echipa>
<echipa>
<echipa>
<rezultate
<rezultate>
<rezultate>
Figura 7.4
<victorii>
<victorii>
<echipa>
descendeni
9 Sintaxa XPath este structurat n mai multe pri, dup cum urmeaz:
axa, care reprezint relaia arborescent ce posed nodul curent mpreun
cu nodurile pe care dorim s le selectm;
unul sau mai multe predicate (situate ntre paranteze drepte) care permit
rafinarea nodurilor selectate.
9 Sintaxa unui XPath este urmtoarea: numele axei, urmat de nodul de test
separat prin ::, urmat de zero sau mai multe predicate plasate ntre
paranteze drepte.
9 n exemplul:
Child::eva[position()=1],
child este numele axei;
eva este nodul de test;
[position()=1] este predicatul.
9 Alte exemple:
descendent::echipa desemneaz toate elementele numite echipa care
sunt descendeni ai nodului curent.
parent::* desemneaz elementul printe al nodului curent.
126
<statistici_cm_fotbal>
<nume>
<echipa>
<nume>
Figura 7.5
<echipa>
<echipa>
<rezultate>
Aplicaii
Se consider documentul statistici.xml ilustrat n figura 7.6, construit cu
Notepad.
Figura 7.6
127
Afiai rezultatul expresiei: <xsl:value-of select=nume>, considernd c nodul
contextual este al doilea element <echipa> (TURCIA) al documentului.
Utilizai urmtoarea foaie de stiluri (vezi figura 7.7).
Figura 7.7
n figura 7.8 este afiat rezultatul pe care trebuie s-l obinei.
Figura 7.8
Modificai fiierul statistici.xml i nlocuii xpath.xsl cu xpath2.xsl. Foaia de
stiluri
xpath2.xsl
utilizeaz
instruciunea
<xsl:value-of
128
Figura 7.9
Modificai fiierul statistici.xml i nlocuii xpath2.xsl cu xpath3.xsl. Foaia de
stiluri
xpath3.xsl
utilizeaz
instruciunea:
<xsl:value-of
Figura 7.10
Modificai fiierul statistici.xml i nlocuii xpath3.xsl cu xpath4.xsl. Foaia de
stiluri xpath4.xsl utilizeaz instruciunea
<xsl:value-of select=preceding-sibling::echipa/rezultate/ victorii/>.
Salvai documentul i afiai n Internet Explorer rezultatul acestei instruciuni.
n figura 7.11 este afiat rezultatul pe care trebuie s-l obinei.
Figura 7.11
129
Remarci:
9 Specificatorul de axe XPath preceding-sibling are urmtoarea semnificaie:
toate nodurile care preced nodul curent i care au acelai printe.
9 Instruciunea
<xsl:value-of
select=preceding-sibling::echipa/
rezultate/victorii/> selecteaz valoarea elementului fiu <victorii> al
elementului <rezultate> al elementului <echipa> care preced nodul
contextual.
XML
Iat cum modificm pagina HTML afiat n figura 7.12 pentru a servi ca
model n foaia de stiluri. Va trebui mai nti s precizm cmpurile din
pagina HTML care urmeaz s primeasc datele XML (vezi figura 7.13 n
care se prezint modelul HTML care conine statisticile pentru
Campionatul Mondial de Fotbal 2002).
Figura 7.12
130
Figura 7.13
131
Figura 7.14
Remarci:
9 Originea acestui fiier nu are importan. Putei s-l creai manual, el putnd
de asemenea proveni dintr-o baz de date. Pentru moment, ne vom
concentra numai pe structura datelor, pentru a putea scrie foaia de stiluri
XSLT.
9 n documentul statistici.xml (figura 7.14) datele sunt plasate dezordonat (n
mod intenionat!). Ele vor fi sortate n foaia de stiluri.
9 Elementul rdcin <statistici_cm_fotbal> posed un element fiu, <nume>
care conine numele campionatului de fotbal Campionatul Mondial de Fotbal
2002.
9 <statistici_cm_fotbal> posed mai muli fii instaniai de elementul <echipa>.
9 Fiecare element <echipa> posed un fiu <nume>. n acest context, <nume>
conine numele echipei.
132
9 Fiecare element <echipa> posed un fiu numit <rezultate>.
9 Fiecare element <rezultate> posed fiii: <victorii>, <nfrngeri> i <nule>.
Aceste elemente conin respectiv numrul de victorii, numrul de nfrngeri i
numrul de meciuri nule ale echipei.
9 Fiecare element <echipa> posed un element <clasament> care conine
clasamentul echipei la Campionatul Mondial de Fotbal 2002 din Coreea i
Japonia.
<nume>,
fiul
lui
<statistici_cm_fotbal>
(figura 7.15).
...
<xsl:value-of select=statistici_cm_fotbal/nume/>
Figura 7.15
...
2.2 Scriei instruciunea XPath pentru a extrage informaiile
privind cele trei echipe medaliate la Campionatul Mondial
de Fotbal 2002 din Coreea i Japonia (figura 7.16).
...
<xsl:for-each select=statistici_cm_fotbal/echipa>
Figura 7.16 ...
Remarc. Numele echipei aflndu-se n elementul <nume> fiu al elementului
<echipa> poate fi selecionat direct.
<xsl: value-of select=nume/>.
133
...
<xsl:value-of select=rezultate/victorii/>
<xsl:value-of select=rezultate/infrangeri/>
<xsl:value-of select=rezultate/nule/>
Figura 7.17 ...
2.4 Scriei instruciunea XPath pentru a extrage coninutul
elementului <clasament> (figura 7.18).
...
<xsl:value-of select=clasament>
Figura 7.19
134
declaraie urmtoarea linie: <?xml-stylesheet type=text/xsl
href=literal.xsl?>.
5. Deschidei fiierul n Internet Explorer. n figura 7.20 este afiat
rezultatul pe care trebuie s-l obinei.
Figura 7.20
Remarc. Navigatorul Internet Explorer afieaz datele documentului XML (statistici.xml)
ntr-un model HTML.
Aplicaii
Afiai n ordine alfabetic echipele de fotbal clasate pe primele trei locuri la
Campionatul Mondial de Fotbal 2002 ce a avut loc n Coreea i Japonia.
Indicaie. n corpul instruciunii <xsl:for-each> adugai instruciunea <xsl:sort
select=nume/> ca n secvena urmtoare (figura 7.21):
Figura 7.21
135
n figura 7.22 se prezint n ordine alfabetic echipele de fotbal clasate pe
primele trei locuri.
Figura 7.22
Afiai n funcie de clasament echipele de fotbal clasate pe primele trei locuri
la Campionatul Mondial de Fotbal 2002 ce a avut loc n Coreea i Japonia.
Indicaie.
Modificai
linia
<xsl:sort
select=nume/>
nlocuind
valoarea
Figura 7.23
n figura 7.24 se prezint clasamentul (locul 1, locul 2, locul 3) echipelor de
fotbal.
Figura 7.24
136
XML
XML este un limbaj suplu care poate fi utilizat pentru numeroase aplicaii
profesionale. ntreprinderile l utilizeaz ca format pentru schimbul
informaiilor comerciale. Noi domenii de utilizare apar n fiecare zi.
nainte de a v entuziasma de facilitile CSS cu XML este util de a
compara aceast tehnologie cu XSLT, limbajul foilor de stiluri. CSS i
XSLT prezint diferene importante.
Utilizat cu XPath, XSLT permite urmtoarele prelucrri ale datelor XML:
selectarea din document a unui coninut specific; manipularea i
sortarea datelor, combinarea coninutului mai multor documente;
conversia XML HTML, XML WML etc.
XSLT prezint de asemenea cteva limitri, ca de exemplu: XSLT
nu propune nici o sintax pentru formatare (formatarea poate fi indicat
numai efectund o conversie ctre un alt limbaj, ca HTML); XSLT i
XPath sunt limbaje greoaie i dificil de nvat; XSLT cere un program
special, procesor XSLT, sau transformator XSLT cu care puine
browser-e sunt echipate.
CSS-urile permit specificarea ntr-o manier foarte simpl a formatrii
elementelor HTML sau XML. Aceast facilitate reprezint un avantaj!
CSS-urile impun i anumite limitri, ca de exemplu: ele nu pot manipula
elemente XML; CSS-urile nu pot selecta/sorta elemente; documentul
XML este afiat integral sau deloc; suportul CSS variaz n funcie de
navigator; CSS-urile nu permit specificarea unei formatri variind n
funcie de atributele elementelor.
XSLT este un limbaj de programare bogat i puternic, util pentru
convertirea unui document XML al unui vocabular ctre un altul, precum
137
HTML n vederea afirii acestuia. CSS ofer pe de alt parte o sintax
simpl pentru a specifica modul n care elementele trebuie s fie afiate.
Remarc. Cu toate limitrile, CSS-urile sunt foarte puternice dac le utilizai n
combinaie cu XSLT.
Aplicaie [1]
Combinai dou foi de stiluri CSS i XSLT pentru a afia datele XML
prezentate n figura 7.25.
Figura 7.25
Indicaie. Creai o foaie de stiluri CSS simplificat (gen.css) care va conine
dou clase: masculin i feminin. Elementele primei clase vor fi afiate cu bold
(.masculin{font-weight:bold;}), iar elementele celei de-a doua clase vor fi
afiate cu italic (.feminin{font-style:italic;}). Creai dup aceea o foaie de stiluri
XSLT pentru extragerea datelor necesare pornind de la fiierul (gen. xml).
Plasai elementele ntr-o linie a tabelului care va fi de clas masculin sau
feminin n funcie de atributul sex al elementului <nume>. Utilizai instruciunea
<xsl:choose> pentru a testa valoarea atributului i a crea elementul
corespunztor n documentul rezultant.
138
XSLT, XPath
Tem
Testai-v cunotinele
1. Care este rolul limbajului XPath?
2. De ce utilizm XSLT cu XPath?
3. Cum definii axele XPath?
4. Comentai instruciunea:
<xsl: sort select=clasament/>
Vizitai site-urile
9 www.w3.org/TR/xpath
9 www.xml.com
9 http://www.ibiblio.org/pub/sun-info/standards/xml/why/xmlapps.htm
Conversaia 8
n aceast conversaie:
f
f
f
f
f
XML
Scheme XML
140
Remarc. Limitele DTD-ului sunt urmtoarele:
9 Un DTD nu este un document XML;
9 Regulile de instaniere sunt limitate;
9 Controlul tipului de coninut al unui element este limitat.
mai
multor
vocabulare
cadrul
aceluiai
document;
9 sunt ele nsele documente XML.
9 Probabil schemele XML i DTD XML vor continua s coabiteze pentru o bun
perioad de timp!
9 Pentru a lua corect o decizie n privina utilizrii schemelor XML sau DTD XML
trebuie s inei cont i de compatibilitatea celor dou tehnici cu instrumentele
pe care le avei la dispoziie.
9 Cu excepia spaiilor de nume, alegerea ntre scheme XML i DTD XML nu
afecteaz structura documentelor pe care le creai. Putei crea i valida
aceleai documente cu ajutorul unei scheme XML sau a unui DTD. O schem
XML ofer n plus posibilitatea validrii coninutului elementelor.
141
Tipuri de date predefinite utilizate n
XML
schemele XML
142
short (orice numr ntreg situat n intervalul nchis -1 la
12678);
int (orice numr ntreg situat n intervalul nchis -1 la
126789675);
long (orice numr ntreg situat n intervalul nchis -1 la
12678967543233);
unsignedByte (orice numr ntreg situat n intervalul nchis 0
la 126);
unsignedShort (orice numr ntreg situat n intervalul nchis 0
la 12678);
unsignedInt (orice numr ntreg situat n intervalul nchis 0 la
1267896754);
unsignedLong (orice numr ntreg situat n intervalul nchis 0
la 12678967543233);
decimal (orice numr zecimal pozitiv sau negativ);
float (orice numr zecimal situat n intervalul 3.4e+38 la
1.4e-45).
9 tipuri temporale
(Exemple:
P-1347M;
T8H30M13S);
GYearMonth (Exmplu: 2003-09).
9 tipuri DTD
ID;
IDREF;
IDREFS;
NMTOKEN;
NMTOKENS;
P134Y;
P3Y4M10J
143
ENTITY;
NOTATION;
Name.
9 tipuri particulare
XML
144
Figura 8.1
Remarci:
9 DTD-ul XML prezentat nu spune nimic despre valorile autorizate ale
elementului <um> (unitate de msur) i nu precizeaz faptul c elementul
<cantitate> are drept coninut o valoare numeric.
9 Ierarhia listei de produse de excursie este prezentat n figura 8.2.
Produse excursie
Cantitate
Figura 8.2
Figura 8.3
Unitate
msur
Produse excursie
Denumire
produs
Produse excursie
145
Remarc. Evident, putei critica srcia acestei liste! n ceea ce ne privete am
considerat suficiente 3 kg de banane, 2 kg de biscuii i 1 borcan de ness pentru o
simpl ascensiune, n doi pe OMUL!
Metoda 1
Dac vi se va prea complicat aceast metod s nu v ngrijorai, cci
nu suntei singurii n aceast situaie.
1. Definii spaiul de nume cu tag-ul <xs: schema> i atributul
xmlns (figura 8.4).
Figura 8.4
Remarci:
9 Dup declaraia documentului XML (prima linie), <xs: schema> este primul
element pe care l ntlnim ntr-o schem XML. El este deci, elementul
rdcin iar prezena sa este obligatorie.
9 Cu aceast declaraie, toate elementele schemei care conin sufixul xs: (xsd:)
vor fi recunoscute ca aparinnd spaiului de nume corespunztor (vezi
http://www.w3.org/2001/XMLSchema).
9 <xs: schema> poate conine de asemenea i urmtoarele atribute, toate
facultative:
targetNamespace;
version;
elementFormDefault;
attributeFormDefault;
blockDefault;
finalDefault;
id
(vezi
http://www.w3.org/2000/10/XMLSchema).
146
Figura 8.5
Figura 8.6
Remarci:
9 Elementul de tip complex <lista_produse_excursie> este o secven de
<produse_excursie>.
9 Dup cum ai putut constata element permite declararea unui element. El
posed dou atribute: name i ref, care sunt exclusive.
9 name permite declararea unui atribut n mod local.
9 ref, care este diminutivul de la reference face referiri la un element deja
declarat sau care urmeaz a fi declarat ulterior.
9 Atributele name i ref (facultative) sunt cele mai frecvent folosite n
declararea unui element.
9 Celelalte atribute facultative ale tag-ului <xs: element> sunt [2]:
type (definete tipul elementului; primete ca valoare un nume);
equivclass (ia ca valoare un nume);
minOccurs (definete numrul minim de apariii ale unui element
(occurence) ntr-un document; ia ca valoare un ntreg pozitiv sau nul (n
mod implicit primete valoarea 1));
maxOccurs (definete numrul maxim de apariii ale unui element ntr-un
document; ia ca valori un ntreg pozitiv sau nul (n mod implicit primete
valoarea 1));
default (primete ca valoare un ir de caractere; atribuie elementului o
valoare implicit);
fixed (primete ca valoare un ir de caractere; atribuie elementului o
valoare fix i invariabil);
147
nullable (primete ca valoare true sau false; testeaz dac elementul este
sau nu este nul);
id (vezi DTD).
Figura 8.7
Figura 8.8
Remarci:
9 sequence este un grup de elemente. ntr-un document, elementele declarate
n secven trebuie s apar obligatoriu cel puin o dat n ordinea n care ele
au fost definite.
9 Atributele pe care le posed <xs: sequence> sunt: id; maxOccurs;
minOccurs.
148
Figura 8.9
Remarc. maxOccurs=unbounded precizeaz c numrul maxim de elemente
<produse_excursie> care trebuie s fie prezente n document nu este limitat.
Figura 8.10
Remarci:
9 Elementul de tip simplu <cantitate> va fi un numr zecimal (xs: decimal).
9 Elementul de tip simplu <produs> va fi un ir de caractere (xs: string).
9 Elementul <um> poate fi definit ca un simplu string dar dorim s-l limitm la
o serie de valori predefinite.
149
Figura 8.11
Remarci:
9 Schema utilizeaz elementul de constrngere <xs: restriction> cu atributul
base pentru a preciza c elementul <um> este de tip xs: string.
9 restriction conine faete care permit reducerea spaiului de valori.
9 Valoarea este restricionat printr-o faet definit cu elementele
<xs: enumeration>.
9 Faeta enumeration permite limitarea spaiului de valori la o list de valori
(kg; borcan(e) etc.).
9 Fiecare constrngere este un element care posed un atribut numit value i
definete una din valorile posibile.
XML
150
(TIBCOs) XML Authority
XML Authority (http://www.tibco.com) a fost creat de o ntreprindere
numit Extensibility (rscumprat dup aceea de TIBCO). Este unul din
primele medii de dezvoltare a schemelor creat pentru XML.
XML Authority este simplu i uor de utilizat de la nivel de interfa i
permite dezvoltatorilor de aplicaii s creeze rapid scheme pe care apoi
s le verifice n timp real. Este un instrument practic pentru a crea,
modifica i elimina elemente i atribute. XML Authority ofer o
reprezentare vizual a modelului, posibilitatea de a insera uor
comentarii i de a modifica direct sursa pentru aceia care, din timp n
timp au nevoie s intervin n cod. Una din funciunile cele mai
interesante ale XML-ului Authority, n afar de interfaa cu utilizatorul
este i aceea de a lucra cu mai multe dialecte. Putei de exemplu
deschide un DTD XML i s-l salvai (cu comanda Save as) n
echivalentul su XML Schema, SOX (Schema for object Oriented XML),
SGML (Standard Generalized Markup Language), compatibil Microsoft Biz
Talk (http://biztalk.org) sau altele.
XML Authority poate lucra [5] cu urmtoarele dialecte: Biz Talk
(http://www.biztalk.org);
DDML
DCD
(http://www.w3.org/TR/NOTE-dcd);
(http://www.w3.org/TR/NOTE-ddml);
(http://www.onesoft.com);
SGML
(http://www.xml.gr.jp/relax);
One
Soft
(http://www.iso.ch);
RELAX
Schema
(http://www.extensibility.com/resources/saf.htm);
Adjunct
SOX
versiunea
XML
Schema
151
Exportul n diverse dialecte nu este singura funcie important a XML
Authority. El tie de asemenea s importe o serie ntreag de surse de
date diverse i variante i s construiasc o reprezentare XML pornind
de la aceste surse. Sursele de date pe care XML Authority tie s le
importe sunt: COM, Java, LDAP (Lightweight Directory Access Protocol),
ODBC, SGML, XML (document XML bine format).
Cteva funcii ale XML Authority ofer o mare suplee pentru conversiile
unui tip de date n altul. n plus, fa de aceste funcii, XML Authority
permite s se exporte reprezentarea vizual a schemelor n format GIF;
ajut utilizatorul cu o funcie de introducere date semi-automat; ofer
o interfa simpl pentru listele de elemente i de atribute.
Remarci:
9 Dac dorii mai multe informaii despre XML Authority, vizitai site-ul
http://www.tibco.com.
9 XML Authority este disponibil sub Windows, Unix i MacOs.
Aplicaie
Creai cu XML Authority (Metoda 2) schema XML pornind de la documentul
XML ilustrat n figura 8.3, al crui DTD este prezentat n figura 8.1 (vezi Metoda
1). Afiai totodat i codul surs al schemei XML realizate.
XML Spy
XML Spy (http://www.xmlspy.com) este un alt celebru instrument de
creare a schemelor XML. XML Spy este disponibil numai sub Windows!
XML Spy permite editarea fiierelor HTML i ASP, dar ele nu au la baz
XML.
Formatele (extensia fiierului) pe care XML Spy [5] tie s le recunoasc
sunt: .biz (BizTalk); .cml (Chemical Markup Language), .dcd (Document
Content Description); .dtd (Document Type Definition); .ent (Entity
Sets);
.math
.mml
(Mathematical
Markup
Language);
.mtx
152
(Synchronized Multimedia Integration Language); .svg (Scalable Vector
Graphics); .wml (Wireless Markup Language); .xdr (XML Data
Reduced); .xhtml (eXtensible Hypertext Markup Language); .xml
(document XML); .xsd (Schema XML); .xsl (foaia de stiluri XSL); .xslt
(transformare XSL).
Remarci:
Aplicaii
Creai cu XML Spy (Metoda 2) aceeai schem XML pe care ai realizat-o
manual (Metoda 1) i automat (Metoda 2) cu XML Authority.
n figura 8.12 se prezint schema XML generat cu XML Spy.
Figura 8.12
Codul surs al schemei XML generate cu XML Spy este prezentat n figura 8.13.
153
Figura 8.13
154
Figura 8.14
155
Figura 8.15
Realizai schema XML echivalent folosind una din metodele prezentate mai jos:
9 Metoda 1 Codificarea manual;
9 Metoda 2 Codificarea automat cu aplicaii dedicate.
156
Remarc. Elementele <nume>, <prenume> sunt de type=xs.string.
n figura 8.16 se prezint schema XML generat cu XML Spy (Metoda 2).
Figura 8.16
Codul surs al schemei XML generate cu XML Spy este prezentat n figura 8.17.
Figura 8.17
157
Figura 8.17
(continuare)
158
Remarc. Putei realiza o conversie automat DTD XML XML Schema i cu aplicaia
dtd2xsd, care se gsete pe site-ul W3C (www.w3c.org).
XML
Tem
Testai-v cunotinele
1. Cnd folosii schemele XML?
2. Dai exemple de tipuri de date predefinite.
3. Cum se definesc elementele de tip simplu i de tip complex?
4. Ce software XML Schema cunoatei?
5. Comentai urmtorul cod XML (figura 8.18)?
Figura 8.18
Vizitai site-urile
9 http://www.w3.org/2000/10/XMLSchema
9 http://www.w3.org/2001/XMLSchema-instance
9 http://www.thaiopensource.com/trex/
9 http://www.mutu-xml.org/
Conversaia 9
Complemente XML
n aceast conversaie:
f
f
f
f
f
f
XML
160
Remarc. Aceast prezentare este departe de a fi complet. DOM este un subiect prea
vast pentru a putea fi tratat integral n aceast lucrare. Pentru a explora DOM n
detalii, consultai lucrrile [2], [3], [5].
Figura 9.1
Figura 9.2
<exemplu>
<body> Dou mere, dou pere! </body>
<exemplu>
DocumentNode Rdcina documentului
NodeList
ElementNode <exemplu>
NodeList
ElementNode
<body>
NodeList
TextcharacterDataNode Dou mere, dou pere!
Remarci:
XML
interfee
Script-uri XML
161
n cele ce urmeaz vom nva s manipulm documentele XML,
utiliznd facilitile de script ale browser-ului Microsoft Internet Explorer
(versiunea 5 i superioar) pentru a crea, n sfrit pagini Web
interactive.
Remarc. Putei utiliza DOM, Java Script, CSS, DHTML pentru a crea pagini Web
interactive.
Java Script (nu Java!) este unul din limbajele cele mai vechi i cele mai
rspndite pentru prelucrarea paginilor Web. Java Script permite
asamblarea obiectelor DOM n paginile noastre Web.
Java Script este un limbaj uor de nvat i este recunoscut de toate
navigatoarele. Aceste caliti i nu doar att l recomand pentru
manipularea documentelor i a foilor de stiluri cu ajutorul DOM.
Remarc. Pentru mai multe detalii privind limbajul Java Script consultai urmtoarele
resurse:
9 Collection Web Training, Java Script Web Training, Paris, 2002
9 Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web (XML, DOM, ASP),
Editura Economic 2002, Bucureti.
XML
162
Figura 9.3
Remarc. Pentru a putea exemplifica execuia aplicaiei, am schimbat ordinea n
clasament a celor trei echipe.
163
Figura 9.4
Remarci:
9 document.XSLDocument
9
9
9
reprezint
foaia
de
stiluri
XSLT
iar
document.XMLDocument reprezint documentul XML.
Navigatorul ncarc documentul XML i foaia de stiluri XSLT n momentul n
care script-ul este executat.
Codul JavaScript a fost inserat direct n foaia de stiluri XSLT n seciunea
CDATA.
Cu instruciunea <xsl:comment> codul JavaScript va fi comentat n fiierul
rezultant.
Codul din figura 9.5:
<script>
<xsl:comment>
<![CDATA[
Cod JavaScript
Figura 9.5
]]>
va genera urmtorul rezultat (figura 9.6):
Figura 9.6
<script>
<!-Cod JavaScript
-->
</script>
164
Figura 9.7
Remarci:
9 Odat create obiectele care reprezint documentele, ele pot fi utilizate pentru
Figura 9.8
165
Remarci:
poate primi una din valorile: echipa sau clasament pe care le folosim n
operaia de sortare.
Metoda nodeValue permite modificarea valorii lui sortColoana. Vom utiliza
aceast metod pentru a determina criteriul de sortare.
Obiectul
xmlSource.documentElement
posed
o
metod
numit
transformNode care primete ca argument numele obiectului corespunztor
foii de stiluri. Noi apelm aceast metod cu xslStylesheet pentru a reaplica
foaia de stil modificat.
Pentru a afia datele, vom utiliza DOM-ul plasnd rezultatele ntr-un obiect
numit clasament. DOM HTML Microsoft posed o metod innerHTML care
permite modificarea unei poriuni a codului HTML al unei pagini. n acest
mod, obiectul clasament va conine rezultatele.
Figura 9.9
Figura 9.10
166
Figura 9.11
Remarci:
9 Atunci cnd vom aplica unui element clasa active, pointer-ul se va modifica de
fiecare dat cnd el va fi plasat pe acel element.
Figura 9.12
167
Figura 9.12
(continuare)
Figura 9.13
168
9. Testai rezultatul. Executai clic pe Echipa (figura 9.14).
Figura 9.14
Remarc. Browser-ul afieaz documentul dinamic cu datele sortate dup
numele echipei (figura 9.15).
Figura 9.15
169
10. Testai rezultatul. Executai clic pe Clasament (figura 9.16).
Figura 9.16
Remarc. Browser-ul afieaz documentul dinamic cu datele sortate dup clasament
(figura 9.17).
Figura 9.17
170
XML
Codul care permite inserarea imaginilor ntr-un document XML este mult
mai complex dect cel utilizat n (X)HTML. n XML va trebui s modificai
DTD-ul pentru ca tipurile de imagini utilizate s fie acceptate.
Iat cum procedm pentru a aduga un element imagine (img n HTML)
ntr-un DTD (excursie.dtd) [1].
1. Definii un element img ntr-un DTD ncepei cu <!ELEMENT,
adugai numele elementului i terminai cu EMPTY> (figura
9.18).
Figura 9.18
Remarci:
171
Figura 9.19
Remarci:
Figura 9.20
172
2. Definii (n DTD) notaia (NOTATION) dup entitatea care o
utilizeaz (figura 9.21).
Figura 9.21
Remarci:
Figura 9.22
Remarc. n XML toate tag-urile elementelor vide trebuie s se termine cu /, contrar
sintaxei HTML. Nu uitai bara oblic!
Aplicaie
Inserai ntr-un document XML (sigla.xml) sigla societii LUMINA BLND.
n figura 9.23 este prezentat DTD-ul aplicaiei (sigla.dtd).
173
Figura 9.23
n figura 9.24 este prezentat documentul sigla.xml.
Figura 9.24
n figura 9.25 este afiat rezultatul.
Figura 9.25
Remarci:
174
Figura 9.26
n figura 9.27 este afiat rezultatul n browser-ul Internet Explorer.
Figura 9.27
Remarc. SVG (Scalable Vector Graphics) este un vocabular standard XML care permite
crearea imaginilor. Imaginile SVG se integreaz perfect n documentele XML.
Pentru crearea i afiarea imaginilor avei nevoie de un soft dedicat (Adobe SVG
Viewer, Adobe Illustrator 9 etc.).
175
Pentru mai multe detalii
http://www.w3.org/TR/SVG.
XML
privind
standardul
SVG
vizitai
site-ul:
176
Aplicaii
Creai legturi XLink simple.
Exemplu:
<xlink:simple href=sigla.xml> Link ctre sigla.xml
</xlink:simple>.
Creai elemente XLink.
Exemplu:
<!ELEMENT mail (#PCDATA)>
<!ATTLIST mail
xlink: type (simple) #FIXED simple
xlink: href CDATA #REQUIRED
Remarc.
9
9
9
177
Limbajul XML Query
Limbajul XML Query a fost creat de W3C (World Wide Web Consortium).
XQuery folosete elementele limbajelor XPath, XPointer i conine n plus
un set de instruciuni proprii pentru limbajul de interogare, pentru
afectarea
rezultatelor
intermediare
variabilelor,
pentru
utilizarea
XML
Tem
Testai-v cunotinele
1. Ce este DOM-ul?
2. Cum creai o pagin Web interactiv?
3. Cum inserai o imagine ntr-un document XML?
4. Care sunt facilitile oferite de XLink?
5. Care sunt facilitile oferite de limbajele XML XPointer i XML XQuery?
Consultai site-urile
9 http://www.w3.org/TR/SVG
9 http://users.iclway.co.uk/mhkay/Saxon
9 http://www.w3.org
9 http://www.w3.org/1999/xlink
BIBLIOGRAFIE
1. Kay Ether, Alan Houser, XML Web Training, OEM, Collection Web
Training, Paris, 2002
2. Yannick Lejeune, Alexandre Pinnel, XML, e-Poche, MicroApplication,
2001, Paris
3. Floarea Nstase, Pavel Nstase, Tehnologia aplicaiilor Web (XML, DOM,