Documente Academic
Documente Profesional
Documente Cultură
Abstract
Domeniile pentru nume XML ofera o metoda simpla de calicare a numelor elementelor si atributelor folosite in documentele XML prin asocierea lor cu domenii pentru nume identicate prin adrese IRI
Table of Contents
1. Introducere ................................................................................................................................ 1 2. Domeniile pentru nume XML ....................................................................................................... 2 2.1. Denirea domeniilor de nume utilizand atributul xmlns ........................................................... 2 2.2. Denirea domeniilor multiple ............................................................................................. 2 2.3. Denirea domeniului implicit ............................................................................................. 3 2.4. Atribute .......................................................................................................................... 3 3. Bibliograe ............................................................................................................................... 4
1. Introducere
Domeniile de nume XML furnizeaza o metoda de reutilizare a marcajelor in documente, eliminad conicte intre numele elementelor si atributelor folosite in oricare din marcaje. Prin conict intelelegem ca un element (sau combinatie element/atribut) denit intr-un DTD are acelasi nume cu un element denit intr-un alt DTD. Exemplu: Sa consideram urmatorul document XML ce reprezinta datele despre un curs.
<?xml version="1.0" ?> <CURS> <NUME>Programare in XML</NUME> <SECTIA>Informatica</SECTIA> <AN>3</AN> <PROFESOR> <PERSOANA> <NUME>Mihai</NUME> <PRENUME>Gabroveanu</PRENUME> <AN>1976</AN> </PERSOANA> </PROFESOR> </CURS>
Se observa ca desi documentul este bine format (well-formed) sunt unele probleme cu acesta. Astfel, elemenul NUME este utilizat cu doua semnicatii diferite: o data reprezinta numele unui curs iar cea de-a doua oara reprezinta numele unei persoane. De asemenea, elementul AN in prima aparitie indica anul de studii iar in cea dea doua reprezinta anul nasterii. Practic, este posibil ca la o prelucrare automata sa se faca confuzie intre aceste elemente ele apartinand la doua concepte diferite. Spunem ca avem un conict de nume. Pentru a rezolva astfel de probleme au fost introduse domeniile de nume (namespaces). Domeniile de nume identica care elemente din document apartin aceluiasi vocabular XML.
Note
Un URI (Universal Resource Identier) este o abstractizare a unui URL. In timp ce un URL identica o locatie un URI identica o resursa. De exemplu, un URI pentru o persona poate codul numeric personal. Asta nu insemana ca putem sa vizualizam o persoana in browser specicandu-i cnp-ul. Acest URI nu poiteaza intotdeauna la un sier anume. URI-ul deneste un domeniu de nume pur formal.
Exemplu: Sa presupunem pentru exemplul anterior ca multimea cursurilor o in cadram in namespace-ul http://inf.ucv.ro/curs iar multimea persoanelor le incadram in namespace-ul http://inf.ucv.ro/persoana. Atunci sierul XML devine:
<?xml version="1.0" ?> <C:CURS xmlns:C="http://inf.ucv.ro/curs"> <C:NUME>Programare in XML</C:NUME> <C:SECTIA>Informatica</C:SECTIA> <C:AN>3</C:AN> <C:PROFESOR> <P:PERSOANA xmlns:P="http://inf.ucv.ro/persoana"> <P:NUME>Mihai</P:NUME> <P:PRENUME>Gabroveanu</P:PRENUME> <P:AN>1976</P:AN> </P:PERSOANA> </C:PROFESOR> </C:CURS>
Se observa ca ecare element al ecarui concept este precedat de prexul asociat namespace-ului corespunzator. Numele elementelor precedate de prex, adica cele de forma prex:nume-element se numesc nume calicate, iar cele ce urmeaza dupa prex se numesc nume locale.
unde prex este un prex ce identica e un namespace tocmai introdus, e unul denit la unul din parintii elementului, e poate sa lipseasca.
XML Namespaces - Domenii pentru nume in XML Exemplu: In exemplul anterior am denit ambele namespace-uri utilizate la nivelul elementului radacina:
<?xml version="1.0" ?> <C:CURS xmlns:C="http://inf.ucv.ro/curs" xmlns:P="http://inf.ucv.ro/persoana"> <C:NUME>Programare in XML</C:NUME> <C:SECTIA>Informatica</C:SECTIA> <C:AN>3</C:AN> <C:PROFESOR> <P:PERSOANA > <P:NUME>Mihai</P:NUME> <P:PRENUME>Gabroveanu</P:PRENUME> <P:AN>1976</P:AN> </P:PERSOANA> </C:PROFESOR> </C:CURS>
In general se recomanda ca toate namespace-urile utilizate intr-un document XML sa se declare la nivelul elementului radacina.
Exemplu: Sa presupunem pentru exemplul anterior ca http://inf.ucv.ro/curs este namespace-ul default. Atunci avem:
<?xml version="1.0" ?> <CURS xmlns="http://inf.ucv.ro/curs" xmlns:P="http://inf.ucv.ro/persoana"> <NUME>Programare in XML</NUME> <SECTIA>Informatica</SECTIA> <AN>3</AN> <PROFESOR> <P:PERSOANA > <P:NUME>Mihai</P:NUME> <P:PRENUME>Gabroveanu</P:PRENUME> <P:AN>1976</P:AN> </P:PERSOANA> </PROFESOR> </CURS>
2.4. Atribute
Deoarece atributele apartin unui element specicat, pentru ele nu exista pericolul confuziei in cazul elementelor similare din namespace-uri diferite. Astfel pentru atribute nu este obligatoriu sa specicam namespace-ul. Totusi pentru a consecventi sintaxa libajului XML permite specicarea namespace-ului prin prexarea la fel ca la elemente cu numele lui. Exemplu:
<?xml version="1.0" ?> <C:CURS xmlns:C="http://inf.ucv.ro/curs" xmlns:P="http://inf.ucv.ro/persoana"> <C:NUME>Programare in XML</C:NUME> <C:SECTIA>Informatica</C:SECTIA> <C:AN>3</C:AN> <C:PROFESOR> <P:PERSOANA P:cnp="176051116039"> <P:NUME>Mihai</P:NUME> <P:PRENUME>Gabroveanu</P:PRENUME>
3. Bibliografie
Namespaces in XML 1.1 W3C Recommendation 4 February 2004, Tim Bray, Dave Hollander, Andrew Layman, Richard Tobin Elliotte Rusty Harold, XML Bible. IDG Books Worldwide, Inc, 919 E. Hillsdale Blvd., Suite 400, Foster City, CA 94404 http://www.w3schools.com/xml/