De-a lungul capitolelor anterioare ați învățat conceptele de bază ale XSL și cum trebuie să vă referiți la nodurile dintr-un document XML atunci când efectuați o transformare XSL. Până în acest moment, ați folosit o sintaxă simplă pentru a vă referi la noduri într-un document XML. Deși sintaxa pe care ați folosit-o până acum a fost XPath, există mult mai multe funcții și capabilități pe care le veți învăța în acest capitol. Pe măsură ce începeți să înțelegeți modul în care limbajul căii este folosit pentru a face referire la noduri într-un document XML înțelegerea dvs. despre XML ca structură arborescentă va începe să prindă contur. Acest capitol conține exemple care demonstrează multe dintre utilizările comune ale XPath, dar pentru specificația completă XPath, consultați cea mai recentă versiune a standardului la http://www.w3.org/TR/xpath. XSL folosește în mare măsură XPath.
XPath
Când mergeți să copiați un fișier sau „cd” într-un director la un prompt de comandă, tastați adesea ceva de genul „/home/darnell/” pentru a vă referi la foldere. Acest lucru vă permite să schimbați sau să vă referiți la foldere din sistemul de fișiere al computerului. XML are un mod similar de a se referi la elemente dintr-un document XML. Această sintaxă specială se numește XPath, care este prescurtarea de la XML Path Language.
XPath este un limbaj pentru găsirea de informații într-un document XML. XPath este folosit pentru a naviga prin elemente și atribute dintr-un document XML.
XPath, deși este folosit pentru a se referi la noduri dintr-un arbore XML, nu este în sine scris în XML. Aceasta a fost o alegere înțeleaptă din partea W3C, deoarece încercarea de a specifica informații despre cale în XML ar fi o sarcină foarte greoaie. Orice caractere care formează sintaxa XML ar trebui să fie evitate, astfel încât să nu fie confundate cu XML atunci când sunt procesate. XPath este, de asemenea, foarte succint, permițându-vă să apelați la noduri din arborele XML cu un grad mare de specificitate, fără a fi inutil de verbos.
XML ca structură arborescentă
Marele avantaj al XML este că documentul în sine descrie structura datelor. Dacă vreunul dintre voi a cercetat istoria familiei dvs., probabil că ați dat peste un arbore genealogic. În vârful arborelui se află un strămoș timpuriu, iar în partea de jos a acestuia sunt cei mai noi copii.
Cu o structură arborescentă poți vedea ce copii aparțin căror părinți, ce nepoți aparțin căror bunici și multe alte relații.
Lucrul frumos despre XML este că se încadrează bine și în această structură arborescentă, adesea denumită arbore XML.
Înțelegerea relațiilor dintre noduri
Vom folosi următorul exemplu pentru a demonstra diferitele relații de noduri.
<bookstore>
<book>
<title>Less Than Zero</title>
<author>Bret Easton Ellis</author>
<year>1985</year>
<price>13.95</price>
</book>
</bookstore>
- Părinte
- Fiecare element și atribut are un părinte.
- Elementul carte este părintele titlului, autorului, anului și prețului.
- Copii
- Nodurile elementului pot avea zero, unul sau mai mulți copii.
- Titlul, autorul, anul și elementele de preț sunt toți copii ale elementului carte.
- Frați
- Noduri care au același părinte.
- Titlul, autorul, anul și elementele de preț sunt toate frați.
- Strămoși
- Părintele unui nod, părintele părintelui etc.
- Strămoșii elementului titlu sunt elementul carte și elementul librărie.
- Urmași
- Copiii unui nod, copiii copiilor etc.
- Descendenții elementului librărie sunt elementele carte, titlu, autor, an și preț.
De asemenea, este încă util într-un fel să te gândești la un fișier XML ca fiind simultan un fișier serializat, așa cum l-ai vedea într-un editor XML. Acest lucru este astfel încât să puteți înțelege conceptele nodurilor precedente și următoare. Se spune că un nod precede altul dacă nodul original este înaintea celuilalt în ordinea documentului. La fel, un nod urmează altul dacă este după acel nod în ordinea documentului. Strămoșii și urmașii nu sunt considerați ca precedenți sau următori unui nod. Acest concept va fi util mai târziu când discutăm despre conceptul de axă.
(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)
Lasă un răspuns