Derniers tutoriels de développement web
 

XML Éléments vs Attributs


En XML, il n'y a pas de règles sur le moment d'utiliser des attributs, et quand utiliser des éléments enfants.


Utilisation d'éléments par rapport aux attributs

Les données peuvent être stockées dans des sous-éléments ou des attributs.

Jetez un oeil à ces exemples:

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

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

Dans le premier exemple le sexe est un attribut. Dans le dernier, le sexe est un élément enfant. Les deux exemples donnent les mêmes informations.

Il n'y a pas de règles sur le moment d'utiliser des attributs, et quand utiliser des éléments enfants. Mon expérience est que les attributs sont à portée de main en HTML, mais en XML, vous devriez essayer de les éviter. Utilisez des éléments enfants si l'information se sent comme données.


Ma façon préférée

I like to store data in child elements.

Les trois documents XML suivants contiennent exactement les mêmes informations:

Un attribut de date est utilisé dans le premier exemple:

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

Un élément date est utilisé dans le deuxième exemple:

<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 élément de date élargi est utilisé dans le troisième: (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>

Évitez d'utiliser des attributs?

Si vous évitez d'utiliser des attributs?

Certains des problèmes avec les caractéristiques sont les suivantes:

  • attributs ne peuvent pas contenir des valeurs multiples (child elements can)
  • attributs ne sont pas facilement extensible (for future changes) les (for future changes)
  • attributs ne peuvent pas décrire les structures (child elements can) l' (child elements can)
  • les attributs sont plus difficiles à manipuler par un code de programme
  • les valeurs d'attribut sont pas faciles à tester contre une DTD

Si vous utilisez des attributs comme des conteneurs de données, vous vous retrouvez avec des documents qui sont difficiles à lire et à maintenir. Essayez d'utiliser des elements pour décrire les données. Utilisez des attributs seulement pour fournir des informations qui ne sont pas pertinentes pour les données.

Ne pas finir comme ça (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>

Une exception à ma règle Attribut

Des règles ont toujours des exceptions.

Ma règle sur les attributs a une exception:

Parfois, j'attribuer des références d'identification à des éléments. Ces références d'identification peuvent être utilisés pour accéder à des éléments XML de la même manière que le nom ou l'identifiant des attributs en HTML. Cet exemple démontre ceci:

<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>

L'identification dans ces exemples est juste un compteur, ou un identifiant unique, afin d'identifier les différentes notes dans le fichier XML, et non pas une partie des données de note.

Ce que je suis en train de dire ici est que les métadonnées (data about data) les (data about data) doivent être stockés sous forme d' attributs, et que les données lui - même devrait être stocké en tant qu'éléments.