Ultimele tutoriale de dezvoltare web
 

XML Elemente vs. Atribute


În XML, nu există reguli cu privire la momentul de a utiliza atributele, și când să utilizeze elemente copil.


Utilizarea elementelor vs. Atribute

Datele pot fi stocate în elemente copil sau atribute.

Aruncati o privire la aceste exemple:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

În primul exemplu, sexul este un atribut. In ultimul, sexul este un element de copil. Ambele exemple furnizează aceleași informații.

Nu există reguli cu privire la momentul de a utiliza atributele, și când să utilizeze elemente copil. Experiența mea este că atributele sunt la îndemână în HTML, dar în XML ar trebui să încercați să le evite. Utilizați elemente copil în cazul în care informația se simte ca date.


My Way preferat

I like to store data in child elements.

Următoarele trei documente XML conțin exact aceleași informații:

Un atribut de date este utilizat în primul exemplu:

<note date="12/11/2002">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Un element de date este folosit în al doilea exemplu:

<note>
  <date>12/11/2002</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Un element dată extins este utilizat în a treia: (THIS IS MY FAVORITE) :

<note>
  <date>
    <day>12</day>
    <month>11</month>
    <year>2002</year>
  </date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Evitați utilizarea atributelor?

Ar trebui să evitați să utilizați atributele?

Unele dintre problemele cu atribute sunt:

  • Atributele nu pot conține mai multe valori (child elements can) de (child elements can)
  • atribute nu sunt ușor extensibile (for future changes)
  • atribute nu pot descrie structuri (child elements can) de (child elements can)
  • atribute sunt mai dificil de manipulat de cod de program
  • atribuie valori nu sunt ușor de a testa împotriva unui DTD

Dacă utilizați atributele ca containere pentru date, va termina cu documente, care sunt dificil de citit și de întreținut. Încercați să utilizați elements pentru a descrie datele. Utilizați atribute numai pentru a furniza informații care nu sunt relevante pentru datele.

Nu ajunge ca acest lucru (this is not how XML should be used) în care (this is not how XML should be used) :

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

O excepție de la regula mea Atribut

Regulile au întotdeauna excepții.

Regula mea despre atribute are o singură excepție:

Uneori am atribui referințe la elemente de identitate. Aceste referințe ID pot fi folosite pentru a accesa elementele XML în același mod ca și numele sau ID-ul atribute în HTML. Acest exemplu demonstrează acest lucru:

<messages>
<note id="p501">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

<note id="p502">
  <to>Jani</to>
  <from>Tove</from>
  <heading>Re: Reminder</heading>
  <body>I will not!</body>
</note>
</messages>

ID-ul în aceste exemple este doar un contor sau un identificator unic, pentru a identifica diferitele note în fișierul XML, și nu o parte a datelor din nota.

Ceea ce am încercat să spun aici este că metadate (data about data) ar trebui să fie stocate ca atribute, și că datele în sine ar trebui să fie stocate ca elemente.