Structure d'un document XML
Un article de WikiTuto.
Sommaire |
Généralités
Les personnes ayant élaboré XML avaient en tête la simplicité de déclaration, la validation de la structure. De plus, elles souhaitaient tenir compte des expériences du passé en intégrant la grande souplesse syntaxique du SGML et la simplicité d'écriture du HTML.
Comme cela est notable sur l'exemple précédent, un fichier XML est composé d'un prologueprologue, d'un élément racineélément racine et d'un arbrearbre. Cet arbre est constitué d'éléments imbriqués les uns dans les autres (ayant une relation parent-enfant) et d'éléments adjacents.
- Les premières lignes forment le prologue, constitué dans l'exemple précédent de la déclaration XML, et éventuellement d'une déclaration de type de document (une DTD) ;
- L'élément biblio est notre élément racine (en anglais : document element) ; il est constitué de trois éléments livre. Dans chacun d'entre eux nous retrouvons la même composition, c'est-à-dire : un élément titre, un élement auteur et éventuellement un élément nb_tomes. L'élément livre, de plus, a un attribut lang ;
Même s'il est simple de comprendre ce code, on s'aperçoit mieux d'une éventuelle erreur lorsqu'on visualise ce même fichier dans un navigateur.
Le prologue
Déclaration XML
Cette déclaration fait partie des "instructions de traitement". Exemple de déclaration XML :
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
On distingue trois informations fournies dans cette déclaration :
1.version : version du XML utilisée dans le document, 1.0 en ce qui nous concerne (la dernière version du langage, 1.1, date de février 2004 mais ne change rien quant à ses bases) ;
2.encoding : le jeu de codage de caractères utilisé. Le jeu de caractère standard pour la France est le ISO-8859-1 il a tendance à être remplacé par l'ISO-8859-15 en attendant la généralisation de l'Unicode. Par défaut, l'attribut encoding a la valeur UTF-8. Cela permet à l'ordinateur de "savoir" quel caractère il doit afficher en réponse aux combinaisons de 1 et de 0 que contient le fichier sur le disque dur ;
3.standalone : dépendance du document par rapport à une déclaration de type de document. Si standalone a la valeur yes, le processeur de l'application n'attend aucune déclaration de type de document extérieure au document. Sinon, le processeur attend une référence de déclaration de type de document. La valeur par défaut est no.
Cette déclaration est facultative, mais il est préférable de l'utiliser, auquel cas les attributs version, encoding et standalone doivent être placés dans cet ordre. Si elle est utilisée, elle doit être placée en toute première ligne du document XML.
Instructions de traitement
Une instruction de traitement est une instruction interprétée par l'application servant à traiter le document XML. Elle ne fait pas totalement partie du document. Les instructions de traitement qui servent le plus souvent sont la déclaration XML ainsi que la déclaration de feuille de style. Exemple d'instruction de traitement :
<?xml-stylesheet type="text/xsl" href="biblio.xsl"?>
Dans cet exemple, l'application est xml-stylesheet, le processeur de feuille de style du XML. Deux feuilles de style différentes peuvent être utilisées, les XSL (propres au XML) ainsi que les CSS (feuilles de style apparues avec le HTML). L'attribut type indique de quel type de fichier il s'agit (text/css pour les feuilles de style CSS, par exemple) et l'attribut href indique l'URL du fichier. Cette instruction de traitement est notamment utilisée par les navigateurs Internet pour la mise en forme du document.
Déclaration de type de document (DTD)
Cette déclaration, lorsqu'elle est présente, permet de définir la structure du document. Elle peut être de deux types, externe ou interne. Exemple de déclaration de type de document :
<!DOCTYPE biblio SYSTEM "biblio.dtd">
Ce type de déclaration est celui d'une déclaration de type de document externe (voir le chapitre sur les DTD). Elle définit l'ensemble des éléments utilisables dans le document, y compris l'élément-racine (ici biblio) ainsi que le nom de fichier biblio.dtd dans lequel se trouve définie la structure du document.
Bien que facultative, il est souvent très intéressant de posséder une DTD, en particulier externe, simplement pour vérifier la validité du document XML. Il est recommandé d'en utiliser une dans le cas, par exemple, du développement parallèle de plusieurs fichiers XML destinés à subir un traitement particulier (développement par plusieurs personnes par exemple).
L'autre type de document permettant de définir la structure d'un fichier, le schéma XML, s'utilise autrement, comme nous le verrons plus tard.
Les commentaires
En XML, les commentaires se déclarent de la même façon qu'en HTML. Ils commencent donc par . Ils peuvent être placés à n'importe quel endroit tant qu'ils se trouvent à l'extérieur d'une autre balise.
Exemples de commentaires valides :
<elt> Un peu de texte </elt>
Remarque : En raison de la compatibilité XML/SGML, la chaîne de caractères -- est interdite dans un commentaire.
L'arbre d'éléments
Introduction
Un document XML peut se représenter sous la forme d'une arborescence d'éléments. Cette arborescence comporte une racine (unique), des branches et des feuilles.
<?xml version="1.0" encoding="ISO-8859-1"?>
<biblio>
<livre>
<titre>Les Misérables</titre>
<auteur>Victor Hugo</auteur>
<nb_tomes>3</nb_tomes>
</livre>
<livre>
<titre>L'Assomoir</titre>
<auteur>Émile Zola</auteur>
</livre>
<livre lang="en">
<titre>David Copperfield</titre>
<auteur>Charles Dickens</auteur>
<nb_tomes>3</nb_tomes>
</livre>
</biblio>
Élement racine
L'élément-racine (en anglais : document element) est, comme son nom l'indique, la base du document XML. Il est unique et englobe tous les autres éléments. Il s'ouvre juste après le prologue, et se ferme à la toute fin du document. Dans l'exemple ci-dessus, l'élément racine est biblio.
Les éléments
Les éléments forment la structure même du document : ce sont les branches et les feuilles de l'arborescence. Ils peuvent contenir du texte, ou bien d'autres éléments, qui sont alors appelés "éléments enfants", l'élément contenant étant quant à lui appelé logiquement "élément parent".
Exemple d'élément contenant du texte :
<titre>Les Misérables</titre>
Exemple d'élément contenant d'autres éléments :
<livre> <titre>L'Assomoir</titre> <auteur>Émile Zola</auteur> </livre>
Les attributs
Tous les éléments peuvent contenir un ou plusieurs attributs. Chaque élément ne peut contenir qu'une fois le même attribut. Un attribut est composé d'un nom et d'une valeur. Il ne peut être présent que dans la balise ouvrante de l'élément (par exemple, on n'a pas le droit d'écrire </livre lang="en">).
Exemple d'utilisation d'un élément avec attribut :
<instrument type="vent">trompette</instrument>
Exemple d'utilisation d'un élément vide avec attributs :
<img src="ours.gif" alt="Gros ours" width="56" height="100" />
Les entités
Il existe deux sortes d'entités, définissables et définies. Elles peuvent être analysables ou non, internes ou externes. La déclaration des entités s'effectue au sein de la DTD. Elles peuvent être utilisées aussi bien dans la DTD que dans le document XML. Nous reviendrons plus en détails sur les entités et leur utilisation ultérieurement.
Certains caractères ayant un sens précis en XML, il est nécessaire de leur trouver un remplaçant lorsque l'on a besoin de les insérer dans un document. On a recours dans ce cas à des entités prédéfinies. Ces entités sont :
- Table 1. Liste des entités prédéfinies
| Caractère | Entité |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ' | &aquot; |
Il n'existe pas d'entité prédéfinie pour les lettres accentuées ou pour les alphabets latins. Il faut utiliser à la place les entités numériques du type &#n; (où n est une valeur décimale). La valeur numérique correspond au code ISO 10646 ; par exemple le caractère é est codé par l'entité numérique é. Il est néanmoins possible d'importer des entités en provenance d'une autre DTD, notamment celle du HTML.
Les sections CDATA
Une section CDATA est une section pouvant contenir toute sorte de chaîne de caractères. Une section CDATA permet de définir un bloc de caractères ne devant pas être analysés par le processeur XML. Ceci permet entre autres de garder dans un bloc de texte un exemple de code à afficher tel quel.
Exemple d'utilisation de CDATA :
<![CDATA[Une balise commence par un < et se termine par un >.]]>
Règles de composition
Un certain nombre de règles de base doivent être respectées :
1.Un nom d'élément ne peut commencer par un chiffre. Si le nom n'est composé que d'un seul caractère, ce doit être une lettre comprise entre "a" et "z" pour les minuscules, "A" et "Z" pour les majuscules. S'il est composé d'au moins deux caractères, le premier peut être "_" ou ":". Le nom peut ensuite être composé de lettres, chiffres, tirets, tirets bas et deux points. La syntaxe XML est sensible à la casse (le format distingue majuscules et minuscules).
2.Toutes les balises portant un contenu non vide doivent être fermées. La balise de début, la balise de terminaison et le contenu entre deux sont globalement appelés élément ;
3.Les balises n'ayant pas de contenu doivent se terminer par /> (voir la balise <img .../> ci-dessus) ;
4.Les noms d'attributs sont en minuscules ;
5. Les valeurs d'attributs doivent être entre guillemets ;
Un document respectant ces critères est dit bien formé (well formed).
Il est aussi possible de définir des règles plus strictes indiquant quelles sont les séquences et imbrications de balises autorisées. Cela se fait à l'aide d'une DTD ou d'un Schéma. Il est alors possible d'effectuer une "validation" des documents faisant référence à une DTD pour s'assurer qu'ils respectent bien les règles qui y sont mentionnées. Un document bien formé dont la syntaxe est conforme aux règles stipulées dans une DTD ou un Schema XML est dit valide. Nous reviendrons sur cette notion ultérieurement.
Sources
Voir aussi
- Historique : de SGML à XML
- XML:Mise en oeuvre
- Structure d'un document XML
- Support par les navigateurs



