Structuration
1. Elément
Un document XML se compose d'éléments :
<latitude>39° 17′ N</latitude>
Un élément peut contenir du texte (comme dans l’exemple ci-dessus).
Dans ce cas, il est délimité par des balises, de la forme
<balise> (balise de début) et </balise> (balise de fin).
Un élément peut contenir des sous-élements :
<position>
<latitude>39° 17′ N</latitude>
<longitude>76° 36′ O</longitude>
</position>
Un élément peut être vide :
<position>
<latitude>39° 17′ N</latitude>
<longitude>76° 36′ O</longitude>
<hémisphère_nord/> (1)
</position>
| 1 | élément vide |
auquel cas il est de la forme <balise/>
2. Entité
Certains caractères sont interdits dans le contenu d’un élément,
comme par exemple < qui symbolise le début d’une balise.
Une entité est une représentation alternative de ces caractères.
| Caractère | Entité |
|---|---|
< |
< |
> |
> |
& |
& |
’ |
&pos; |
" |
" |
<intervals>
<interval> x<=-1 </interval> (1)
<interval> x>-1 && x<=1 </interval> (2)
<interval> x>1 </interval> (3)
</intervals>
| 1 | x<=1 |
| 2 | x>-1 && x<=1 |
| 3 | x>1 |
3. Attribut
Un élément peut être caractérisé par des attributs,
c’est-à-dire des couples (nom,valeur)
spécifiés comme nom='valeur' ou nom="valeur" à l’intérieur de la balise ouvrante de l’élément.
<latitude hémisphère="sud">39° 17′ N</latitude>
Etant donné un élément :
-
chacun de ses attributs doit être unique,
-
l’ordre de ses attributs n’est pas significatif
|
Il n’existe donc pas une façon unique d’exprimer la structure d’un ensemble de données. Par exemple, voici 2 représentations d’un même ensemble de données :
|
4. Arbre XML
Un document XML est un arbre dont les noeuds sont les éléments XML. Cet arbre est exprimé par un jeu de balises ouvrantes et fermantes, correctement parenthésées. Il n’y a donc qu’un seul élément racine.
<personne>
<nom>
<prenom>Jules</prenom>
<patronyme>Durand</patronyme>
</nom>
<adresse>
<numero>15</numero>
<voie>rue du chat noir</voie>
<commune>Félixville</commune>
</adresse>
</personne>
<para>
Du col du Crand Crêt suivre la ligne de crête qui mène
à la pointe du Loup Noir <note>les crampons sont
utiles au printemps</note>, puis redescendre dans la vallée.
</para>
<adresses>
<personne id ="p01">
<type rang="maître de conférences" />
<nom>Perrin</nom>
<prenom>Olivier<prenom>
<adresse>IUT Nancy-Charlemagne, Université de Nancy 2</adresse>
</personne>
</adresses>
4.1. Elément vs attribut
Soit par exemple les données d’une bibliothèque :
<biblio nbtitre="2">
<livre cote="681.321 A9-CHA" annee="2000">
<titre>Programmation HTML et JavaScript</titre>
<auteur><nom>Chaléat</nom><prenom>Philippe</prenom></auteur>
<auteur><nom>Charnay</nom><prenom>Daniel</prenom></auteur>
<editeur>Eyrolles</editeur>
<pages>450</pages>
</livre>
<livre cote="681.321 XML-MIC" annee="2001">
<titre>XML langage et applications</titre>
<auteur><nom>Michard</nom><prenom>Alain</prenom></auteur>
<editeur>Eyrolles</editeur>
<pages>499</pages>
</livre>
</biblio>
Cette information aurait pu être représentée à l’extrême sans attribut :
<biblio>
<nbtitre>2 </nbtitre>
<livre>
<cote>681.321 A9-CHA</cote>
<titre>Programmation HTML et JavaScript</titre>
<auteur><nom>Chaléat</nom><prenom>Philippe</prenom></auteur>
<auteur><nom>Charnay</nom><prenom>Daniel</prenom></auteur>
<editeur>Eyrolles</editeur>
<annee>2000</annee>
<pages>450</pages>
</livre>
<livre>
<cote>681.321 XML-MIC</cote>
<titre>XML langage et applications</titre>
<auteur><nom>Michard</nom><prenom>Alain</prenom></auteur>
<editeur>Eyrolles</editeur>
<annee>2001</annee>
<pages>499</pages>
</livre>
</biblio>
ou au contraire avec un minimum d’éléments :
<biblio nbtitre="2">
<livre
cote="681.321 A9-CHA"
titre="Programmation HTML et JavaScript"
auteur_1="Chaléat Philippe"
auteur_2="Charnay Daniel"
editeur="Eyrolles"
annee="2000"
pages="450"/>
<livre
cote="681.321 XML-MIC"
titre="XML langage et applications"
auteur="Michard Alain"
editeur="Eyrolles"
annee="2001"
pages="499"/>
</biblio>
4.2. Utiliser un élément ou un attribut ?
Conceptuellement, un sous-élément caractérise une relation de composition (un sous-élement est un composant de l’élément parent), alors qu’un attribut qualifie l’élément auquel il se rattache (un attribut est une propriété). Choisir entre élément et attribut revient donc à choisir entre relation de composition et relation de qualification.
Dans la pratique, sous-élément et attribut sont des noeuds de l’arbre XML, et on y accède de la même façon. Seulement, l’attribut est un noeud terminal, ce qui n’est pas forcément le cas d’un sous-élément.
|
5. Document XML
Un document XML contient un arbre XML. Mais divers documents peuvent aussi y être liés : une feuille de style (pour définir une présentation du document), une feuille XSL (pour la transformer), une DTD ou un schéma, etc.
5.1. Prologue
Le prologue, ou déclaration XML, est facultatif mais sa présence est recommandée. S’il est présent il doit apparaitre en première ligne et ne doit être précédé d’aucun blanc.
Le prologue minimum informe sur la version du langage :
<?xml version="1.0" ?>
On peut y ajouter l’encodage (en l’absence de cette indication, UTF-8 est pris par défaut) :
<?xml version="1.0" encoding="ISO-8859-1" ?>
5.2. Commentaires
La syntaxe est :
<!-- texte du commentaire -->
Les commentaires peuvent apparaître n’importe où dans un contenu d’élément, mais pas à l’intérieur d’une balise. Ils ne peuvent pas être imbriqués.
5.3. Exemple
<?xml version="1.0" encoding="utf-8"?>
<!-- itinéraire fictif -->
<itineraire>
<etape distance="0km">départ</etape>
<etape distance="13km">tourner à droite</etape>
<etape distance="22km">arrivée</etape>
</itineraire>
5.4. Document bien formé
Un document XML est dit bien formé (well-formed) s’il est syntaxiquement correct, c’est-à-dire s’il respecte les règles d’XML comme :
-
à toute balise ouvrante correspond une balise fermante,
-
les zones balisées sont correctement imbriquées,
-
il existe une racine unique,
-
aucun élément ne possède 2 attributs de même nom,
-
les valeurs d’attributs sont entre apostrophes ou guillemets, etc.
On vérifie qu’un document est bien formé à l’aide d’un valideur XML, comme par exemple :
-
la commande
xmllint -
un navigateur tel que
FirefoxouChrome -
des sites web spécialisés (comme http://www.xmlvalidation.com)