Se afișează postările cu eticheta xml. Afișați toate postările
Se afișează postările cu eticheta xml. Afișați toate postările

marți, 13 ianuarie 2009

XML: Atribute versus Elemente

Lucrand la cel mai recent produs al nostru, un parser de arhive pentru diverse aplicatii de tip instant messenger, una din sarcinile pe care le-am avut de indeplinit a fost aceea de a construi o serie de fisiere XML, prin intermediul carora sa modelez informatia legata de tot ceea ce insemna o arhiva specifica unei astfel de aplicatii:

<?xml version="1.0" encoding="UTF-8" ?>

<log>

<auth>

<username value="user1">

<password value="pass1"/>

</auth>

Intrebare fireasca in aceasta situatie: user1 este valoare a elementului <username/> sau poate fi valoarea luata de un atribut al acestui element. Intrebare care se pare ca este pe buzele tuturor celor ce opteaza pentru modelarea datelor cu ajutorul XML.

Raspunsuri variate. Sigur este ca nu exista nici o regula, nici un standard in ceea ce priveste aceasta alegere.

 

Un articol interesant, scris de Uche Ogbuji, de la IBM, mi-a atras atentia. Acesta propune un set de 4 reguli pentru rezolvarea acestei dileme:

·         daca informatia poate fi marcata ea insasi cu elemente, atunci devine element.

·         daca este mai bine ca informatia sa devina atribut, dar exista posibilitatea ca elementul in cauza sa primeasca si alte atribute, atunci se recomanda folosirea unui nou etaj, de copii, informatiile devenind valori ale elementelor.

·         daca informatia trebuie sa se incadreze intr-un standard asemanator DTD, acesta cerand atribute specifice (ID, IDREF, ENTITY), se foloseste un atribut.

·         daca informatia nu trebuie normalizata, in vederea caracterelor whitespace, se folosesc elementele.

 

Cum bine remarca autorul articolului referit, lucrurile nu sunt atat de clare cand vine vorba de identificarea cazului in care te afli la un moment dat. Lasam asadar regulile la o parte si incercam cateva „sugestii”.

 

In primul rand, din categoria asa-NU:

·         faceti totul un element”: argumentele folosite pentru a sprijini aceasta idee variaza de la „Atributele complica lucrurile” pana la „Atributele inhiba extensibilitatea”. Totusi, nefolosirea atributelor, anuleaza unul dintre cele mai importante aspecte ale XML-ului.

·         daca este genul de continut ce trebuie afisat in browser, folositi valoarea unui element”. Problema cu aceasta sugestie este faptul ca incurajeaza utilizatorii sa gandeasca design-ul de continut al XML in termeni de prezentare, doua aspecte care este important sa nu fie amestecate.

 

Intr-un articol viitor, vom reveni si cu sugestiile de tip asa-DA.

 

Surse:

http://www.ibm.com/developerworks/xml/library/x-eleatt.html

http://xmleverywhere.com/newsletters/20000525.htm

 

Introducere in tehnologii XML -- Part 1 -- DOM

DOM este un standard World Wide Web Consortium pentru accesarea documentelor XML sau XHTML.

Din punc de vedere structural DOM - ul se imparte in trei niveluri :
  • Core DOM - modelul standard pentru orice fel de document structurat
  • XML DOM - modelul standard pentru fisere XML + obiecte si propietati ale elemetelor documentului
  • HTML DOM - modelul standard pentru fisere HTML + obiecte si propietati ale elemetelor documentului
Practic ,tot ce se afla intr-un fiser XML este un nod ,principiile fiind acestea:
  1. Intregul document este un nod de tip document
  2. Oricare element XML este un nod de tip element
  3. Textul dintr-un fisier XML este un nod de tip text
  4. Oricare atribut XML este un nod de tip atribut

De exemplu pentru urmatorul XML ,DOM-ul asociat ca avea structura:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

















Proprietati DOM

  • x.nodeName - numele lui x
  • x.nodeValue - valoarea lui x
  • x.parentNode -nodul parinte al lui x
  • x.childNodes - nodurile copii ale lui x
  • x.attributes - nodurile atribut ale lui x

Metodele utilizate in DOM

  • x.getElementsByTagName(name) - extrage un element cu numele "name"
  • x.appendChild(node) - se insereaza un nod copil sub nodul x
  • x.removeChild(node) - se sterge un copil din nodul x