Attributs XML
Les éléments XML peuvent avoir des attributs, tout comme HTML.
Les attributs sont conçus pour contenir des données relatives à un élément spécifique.
Les attributs XML doivent être entre guillemets
Les valeurs d'attribut doivent toujours être entre guillemets. Des guillemets simples ou doubles peuvent être utilisés.
Pour le sexe d'une personne, l'élément <person> peut s'écrire comme suit :
<person gender="female">
ou comme ceci :
<person gender='female'>
Si la valeur de l'attribut elle-même contient des guillemets doubles, vous pouvez utiliser des guillemets simples, comme dans cet exemple :
<gangster name='George "Shotgun" Ziegler'>
ou vous pouvez utiliser des entités de caractères :
<gangster name="George "Shotgun" Ziegler">
Éléments XML vs attributs
Jetez un oeil à ces deux exemples:
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
Dans le premier exemple, le sexe est un attribut. Dans le dernier exemple, le genre est un élément. Les deux exemples fournissent les mêmes informations.
Il n'y a pas de règles sur quand utiliser des attributs ou quand utiliser des éléments en XML.
Ma façon préférée
Les trois documents XML suivants contiennent exactement les mêmes informations :
Un attribut de date est utilisé dans le premier exemple :
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
Un élément <date> est utilisé dans le deuxième exemple :
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
Un élément <date> développé est utilisé dans le troisième exemple : (CECI EST MON PRÉFÉRÉ) :
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
Éviter les attributs XML ?
Voici quelques éléments à prendre en compte lors de l'utilisation d'attributs :
- les attributs ne peuvent pas contenir plusieurs valeurs (les éléments peuvent)
- les attributs ne peuvent pas contenir d'arborescences (les éléments peuvent)
- les attributs ne sont pas facilement extensibles (pour les modifications futures)
Ne finissez pas comme ça :
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Attributs XML pour les métadonnées
Parfois, des références d'ID sont attribuées à des éléments. Ces identifiants peuvent être utilisés pour identifier des éléments XML de la même manière que l'attribut id en HTML. Cet exemple le démontre :
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
Les attributs id ci-dessus permettent d'identifier les différentes notes. Ce n'est pas une partie de la note elle-même.
Ce que j'essaie de dire ici, c'est que les métadonnées (données sur les données) doivent être stockées en tant qu'attributs et que les données elles-mêmes doivent être stockées en tant qu'éléments.