Tutoriel XML

ACCUEIL XML Introduction XML XML Comment utiliser Arbre XML Syntaxe XML Éléments XML Attributs XML Espaces de noms XML Affichage XML Requête HTTP XML Analyseur XML DOM XML XPath XML XML XSLT XQuery XML XMLXLink Validateur XML DTD XML Schéma XML Serveur XML Exemples XML XML Quiz Certificat XML

XMLAJAX

Présentation d'AJAX AJAX XMLHttp Requête AJAX Réponse AJAX Fichier XML AJAX PHP AJAX ASP AJAX Base de données AJAX Applications AJAX Exemples AJAX

DOM XML

Présentation du DOM Nœuds DOM Accès au DOM Informations sur le nœud DOM Liste des nœuds DOM Traversée du DOM Navigation DOM DOM Obtenir des valeurs Nœuds de changement DOM DOM Supprimer les nœuds DOM Remplacer les nœuds DOM Créer des nœuds DOM Ajouter des nœuds Nœuds de clonage DOM Exemples DOM

Tutoriel XPath

Présentation de XPath Nœuds XPath Syntaxe XPath Axes XPath Opérateurs XPath Exemples XPath

Tutoriel XSLT

Présentation de XSLT Langages XSL Transformation XSLT XSLT <modèle> XSLT <valeur-de> XSLT <pour-chaque> XSLT <sort> XSLT <si> XSLT <choisir> Appliquer XSLT XSLT sur le client XSLT sur le serveur XSLT Éditer XML Exemples XSLT

Tutoriel XQuery

Présentation de XQuery Exemple XQuery XQuery FLWOR XQuery HTML Termes XQuery Syntaxe XQuery Ajouter XQuery Sélection XQuery Fonctions XQuery

DTD XML

Présentation de la DTD Blocs de construction DTD Éléments DTD Attributs DTD Éléments DTD vs Attr Entités DTD Exemples de DTD

Schéma XSD

Présentation XSD Comment XSD XSD <schéma> Éléments XSD Attributs XSD Restrictions XSD

Complexe XSD

Éléments XSD XSD vide Éléments XSD uniquement Texte XSD uniquement XSD Mixte Indicateurs XSD XSD <tout> XSD <anyAttribute> Remplacement XSD Exemple XSD

Données XSD

Chaîne XSD Date XSD Numérique XSD Divers XSD Référence XSD

Services Web

Services XML XMLWSDL SAVON XML XML RDF XML RSS

Les références

Types de nœuds DOM Nœud DOM Liste de nœuds DOM DOM NamedNodeMap Documents DOM Élément DOM Attribut DOM Texte DOM DOM CDATA DOM Comment DOM XMLHttpRequest Analyseur DOM Éléments XSLT Fonctions XSLT/XPath

Éléments XML vs attributs


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


Utilisation des éléments par rapport aux attributs

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

Jetez un œil à 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 fournissent les mêmes informations.

Il n'y a pas de règles concernant le moment d'utilisation des attributs et le moment d'utilisation des éléments enfants. Mon expérience est que les attributs sont pratiques en HTML, mais en XML, vous devriez essayer de les éviter. Utilisez des éléments enfants si les informations ressemblent à des données.


Ma façon préférée

J'aime stocker des données dans des éléments enfants.

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 de 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 : (CECI EST MON PRÉFÉRÉ) :

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


Éviter d'utiliser des attributs ?

Faut-il éviter d'utiliser des attributs ?

Certains des problèmes avec les attributs sont :

  • les attributs ne peuvent pas contenir plusieurs valeurs (les éléments enfants le peuvent)
  • les attributs ne sont pas facilement extensibles (pour les modifications futures)
  • les attributs ne peuvent pas décrire les structures (les éléments enfants le peuvent)
  • les attributs sont plus difficiles à manipuler par le code du programme
  • les valeurs d'attribut ne sont pas faciles à tester par rapport à une DTD

Si vous utilisez des attributs comme conteneurs de données, vous vous retrouvez avec des documents difficiles à lire et à gérer. Essayez d'utiliser des éléments pour décrire les données. N'utilisez les attributs que pour fournir des informations qui ne sont pas pertinentes pour les données.

Ne finissez pas comme ça (ce n'est pas ainsi que XML doit être utilisé) :

<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 d'attribut

Les règles ont toujours des exceptions.

Ma règle sur les attributs a une exception :

Parfois, j'attribue des références d'ID aux éléments. Ces références d'ID peuvent être utilisées pour accéder aux éléments XML de la même manière que les attributs NAME ou ID en HTML. Cet exemple le démontre :

<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'ID dans ces exemples est juste un compteur, ou un identifiant unique, pour identifier les différentes notes dans le fichier XML, et non une partie des données de note.

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.