Les règles de base d'XML : XML bien formé, XML valide

Éléments imbriqués

Les spécifications d’XML exigent que tous les éléments d’un document XML soient imbriqués au sein d’un élément racine. Si l’on prend l’exemple très simple d’un carnet d’adresses, l’élément racine pourrait être <addressBook>. Imbriqués en son sein, nous pourrions avoir plusieurs éléments <entry> contenant chacun une adresse. Une structure basique pourrait ressembler à ceci :

1
2
3
4
5
6
7
8
<addressBook>
    <entry>
        Voici la première entrée !
    </entry>
    <entry>
        Voici la seconde entrée !
    </entry>
</addressBook>

Pour expliquer le principe de l’imbrication des éléments en XML, on peut faire une analogie avec les poupées russes. L’élément racine est la plus grande boîte, et tous les autres éléments doivent être entièrement contenus dans celui-ci, ou dans un autre élément. De la même façon, les plus petites poupées russes doivent venir se ranger à l’intérieur des plus grandes.


Dans l’exemple du carnet d’adresses, tous les éléments <entry> sont placés entre le début et la fin de l’élément racine. Par ailleurs, chaque entrée d’adresse peut elle-même contenir des éléments. Par exemple, une entrée peut contenir un nom (<name>), comme ceci :









1
2
3
4
5
<addressBook>
    <entry>
        <name></name>
    </entry>
</addressBook>

Chaque entrée pourrait contenir des éléments additionnels, comme le nom de la rue et le numéro, la ville, le numéro de téléphone, etc. Imbriquer et organiser les éléments permet d’ajouter une structure supplémentaire qui facilite la recherche. Par exemple, si l’on considère l’adresse suivante :

Clark Kent 344 Clinton Street Metropolis 55 50145

Parce que nous sommes des humains, nous pouvons lire chaque partie de l’entrée et comprendre laquelle correspond au nom, à l’adresse et au numéro de téléphone. Un ordinateur, lui, ne comprend pas le texte de la même façon que les humains, c’est pourquoi la structuration lui permet de s’y retrouver :

1
2
3
4
5
<entry>
    <name>Clark Kent</name>
    <address>344 Clinton Street Metropolis</address>
    <phoneNr>55 50145</phoneNr>
</entry>

   
 Avec d’autres éléments, on peut préciser encore plus les données : 

1
2
3
4
5
6
7
8
9
10
11
12
<entry>
    <name>
        <forename>Clark</forename> 
	<surname>Kent</surname>
    </name>
    <address>
       <houseNr>344</houseNr> 
       <street>Clinton Street</street> 
       <town>Metropolis</town>
    </address>
    <phoneNr>55 50145</phoneNr>
</entry>

 

L’imbrication et l’organisation de ces données est en elle-même une information importante pour l’ordinateur. Par exemple, puisque l’élément <address> contient les éléments <houseNr>, <street> et <town>, on peut en déduire qu’ils appartiennent à la même adresse.