Structure d'un document XML

Maintenant que nous connaissons la syntaxe de base d'XML, nous pouvons nous intéresser à la structure d'un fichier XML.

Exemple de fichier XML

Nous allons définir dans un fichier, une structure de données représentant un message.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<message>
  <expediteur>
  <identite>
  <prenom>Guillaume</prenom>
  <nom>Charpentier</nom>
  <email>gcharpen@etudiant.univ-mlv.fr</email>
  </identite>
  </expediteur>
  <destinataire>
  <identite>
  <prenom>Gérard</prenom>
  <nom>Dupont</nom>
  <email>gerarddupont@provider.com</email>
  </identite>
  </destinataire>
  <message>mon message</message>
</message>

L'élément message est l'élément racine du document. Il existe un et un seul élément de ce type dans un document; c'est un élément père qui contient tous les autres.

En revanche, d'autres éléments peuvent être également éléments pères. C'est le cas, dans notre exemple, de l'élément expediteur. Il est en effet père de l'élément identite (qui est donc l' élément fils de l'élément expediteur). L'élément identite est également élément père de l'élément prenom, de l'élément nom et de l'élément email...

Pour les éléments sans fils (comme l'élément prenom) on placera, comme dans l'exemple, la balise ouvrante, le contenu et la balise fermante sur la même ligne.

Par convention on formate les documents XML pour qu'ils reflètent l'imbrication des éléments : une tabulation ou une série d'espace représente le fait que l'on passe dans un éléments fils. C'est ce que nous avons fait pour l'exemple.

Si on ouvre le fichier que nous venons d'écrire dans un navigateur web (ici Mozilla Firefox) on obtient un rendu sous forme d'une structure arborescente.
Remarque : vous pouvez cliquer sur le lien "fichier" placé sous l'exemple précédent pour le visualiser directement dans votre navigateur sans avoir le créer vous-même.

Remarque : on voit ici l'importance de l'attribut encoding dans le prologue du fichier. En effet, si nous n'avions pas spécifié un encodage Western European (ISO-8859-1), les accents n'auraient pas été gérés; la valeur "Gérard" aurait été mal affichée.

On constate que les données sont représentées sous forme d'un arbre dont il est possible de replier ou de déplier chaque branche. Nous allons maintenant détailler cette structure de données.

 

La structure arborescente des données XML

Vous l'aurez compris, la structure de données représentée dans un fichier XML est hierarchisée dans une arborescence (un élément racine unique; chaque élément peut contenir d’autres éléments qui peuvent à leur tour contenir du texte ou d’autres éléments).

On peut donc représenter les données d'un fichier XML sous forme d'arbre. Si on utilise cette représentation pour l'exemple précédent on obtient l'arbre suivant :

Cette structure hiérarchique en arbre est très avantageuse puisqu'elle permet de représenter des données structurées quelle que soit leur complexité et car on sait facilement manipuler les structures de ce type.

 

Comment bien structurer un fichier XML ?

Il n'est pas forcément aisé de savoir choisir les noms de balises à utiliser lors de la création d'un fichier XML. En effet, il nous est laissé une liberté quasi totale à ce sujet :il n'existe pas de règle précise pour le choix de noms de balises; il est simplement conseillé de donner les noms les plus significatifs possibles aux éléments définis.

L'autre problèmatique est qu'il est souvent possible de définir la même information au sein de différentes structures :

<expediteur>
  <identite>Guillaume Charpentier</identite>
</expediteur>

mais cette solution ne dissocie pas clairement le nom et le prénom de l'éxpéditeur ce qui peut être pénalisant si l'on désire par la suite récupérer juste une de ces deux informations; nous n'y aurons pas accès directement.

<expediteur prenom="Guillaume" nom="Charpentier">

On rejoint là la même problèmatique que pour une modélisation de base de données. L'objectif est ici identique : structurer des données... et il n'existe de manière unique de le faire... cela dépend surtout des besoins de récupération d'information .

<< Page Précédente
Syntaxe du XML

Plan complet du site

Page Suivante >>
Les espaces de noms

-- ©
Guillaume Charpentier - Dernière mise à jour de cette page le 27/02/04 0:15 --