Introduction à XML
Un article de Mangue.org, l'encyclopéde libre.
| Sommaire |
Qu'est ce que le xml et quels sont ses atouts ?
C'est un métalangage aux possibilités infinies. Il permet de stocker des données et des les échanger facilement, notamment par l'intermédiaire du web. Le xml est, entre autres, utilisé par et pourles services web. Concrètement on définit ses propres balises afin de structurer des données, ainsi un document xml sera un fichier texte contenant des informations avec la structure désirée. Par exemple, on peut stocker un livre sous forme xml comme ceci.
<livre>
<chapitre titre="Premier chapitre">
<texte>eXtensible Markup Language</texte>
</chapitre>
<chapitre titre="Deuxième chapitre">
<texte>Un fabuleux langage aux possibilités infines</texte>
</chapitre>
</livre>
D'après ce premier exemple les balises ont permis de structurer les données afin qu'elles soient facilement exploitables. En réalité, cet exemple n'est pas tout à fait conforme, mais peu importe ; l'important est de comprendre que les fichiers xml sont comme des arbres dans lesquels ont peut récupérer des informations. En effet, il est très facile de connaître le titre du deuxième chapitre ou même son contenu.
Il est donc aisé de récupérer des données dans un document xml, de plus il existe un grand nombre de technologies dérivées et non négligeables, qui permettent d'exploiter toute la puissance du langage xml. Par exemple, XPath permet de se déplacer dans un arbre xml de la même manière que dans un système de fichiers, ce qui procure un réel confort d'utilisation. Il existe encore xslt, qui offre la possibilité d'appliquer des règles de formattage à chaque élément d'un document xml. D'ailleurs, de plus en plus de sites web utilisent le couple xml/xslt pour gérer les données et l'affichage.
Règles de construction d'un document xml
Les documents xml sont analysés par des parseurs afin de les exploiter. Cela implique que chaque document doit respecter certaines règles afin d'être analysé correctement par tous les parseurs. Tout d'abord un document xml est constitué de balises. Celles-ci doivent être nommées correctement, les noms ne doivent pas contenir d'espaces, ne pas commencer par un nombre ou par la chaîne "xml" et ne pas contenir de caractères "@". Voici un exemple de balise correcte :
<balise>Contenu de la balise</balise>
Toute balise ouverte doit-être obligatoirement fermée. Il existe également des balises plus simples, qui sont à la fois ouvertes et fermées.
<balise />
Si cette balise s'ouvre et se ferme en même temps, elle n'encadre pas de données, alors à quoi peut-elle servir ? Elle permet de contenir uniquement des attributs.
<balise attribut="valeur" />
<balise attribut="valeur">Contenu</balise>
Ces deux dernières lignes définissent des balises ayant chacune un attribut. Toutes les valeurs des attributs doivent-être contenues entre des guillemets simples ou doubles. Les éléments doivent s'imbriquer correctement. En effet, il est interdit de croiser des balises.
<balise1><balise2></balise1></balise2>
Comme vous pouvez le constater les balises et s'entremêlent ce qui n'est pas autorisée, car il deviendrait impossible de déterminer laquelle des deux balise est la "balise parent".
Chaque document xml ne doit comporter qu'une seule balise racine. Dans le premier exemple, c'était l'élement livre, qui avait le statut de balise racine. C'est l'entrée du document.
Les instructions XML
Le langage xml définit plusieurs instructions qui sont soit facultatives soit obligatoires dans un document xml. En effet, certaines permettent de donner des informations capitales pour les parseurs xml. Ainsi, chaque document xml doit commencer par une instruction xml comme celle-ci :
<?xml version="1.0"?>
Cette instruction a en plus d'autres attributs facultatifs. L'attribut version indique la version xml nécessaire pour traîter le document, pour indiquer le jeu de caractères utilisé, il faut définir l'attribut encoding. Pour indiquer si un document à besoin d'une DTD, on a recourt à l'attribut standalone qui prend la valeur "yes" ou "no".
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
Si la valeur standalone vaut "no" il faut indiquer au parseur où trouver la DTD.
<!DOCTYPE Racine SYSTEM | PUBLIC ["NOM"] "URI">
Racine doit être remplacé par l'élement racine du document. Dans le cas du premier exemple, c'est donc livre. Ensuite il faut utiliser la valeur SYSTEM ou PUBLIC. On utilise la variante PUBLIC lorsqu'une DTD est largement publiée et si c'est le cas on indique son nom et l'uri. C'est le cas pour les pages XHtml qui contiennent bien souvent une uri vers une DTD du w3c. Sinon, on spécifie la variante SYSTEM et l'uri de la DTD.
| Remarque : URL ou URI? |
| Une URI est différente d'une URL, puisque l'URL contient le protocole utilisé mais pas l'URI. |
Parmi les instructions xml également il y a les commentaires. Ils commencent par . Les commentaires peuvent être placés n'importe où sauf dans les marqueurs d'un élément.
<!-- Ceci est un commentaire -->
Les entités
Les entités sont des substitutions d'un caractère par d'autres. Elles permettent d'écrire des caractères sous une autre forme lorsque ceux-ci pourraient être mal interprétés. En effet, si le document xml doit contenir le caractère <, cela risque de porter à confusion avec les autres éléments. C'est pour cela qu'on utilise les entités. Une entité commence toujours par '&' et se termine par un ';'. La norme xml en prédéfinie 5 par défaut.
| & | < | > | " | &pos; |
| & | < | > | " | ' |
Il est également possible de faire des références caracrères unicode par leur valeur numérique. Pour cela l'entitié doit commencer par "&#" et se terminer par un ';'.
A = A
On peut encore faire en spécifiant une valeur hexadécimale. Pour cela l'entité débute par "" et se termine par un ';'.
Conclusion
XML permet de classer des données de manière structurée à l'aide de balises. De plus, cette structure permet d'accéder à n'importe quel élément de manière simple à l'aide de requêtes XPath. Voici un exemple complet d'un document xml qui met en oeuvre les différentes règles énoncées.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!-- Balise racine -->
<livre>
<titre>Xml, XPath & Xslt</titre>
<!-- Premier chapitre -->
<chapitre titre="Introduction a l'xml">
<texte>
eXtensible Markup Language
5 > 3
</texte>
</chapitre>
<!-- Deuxième chapitre -->
<chapitre titre="Presentation de xslt">
<texte>Pour formatter un fichier xml</texte>
</chapitre>
</livre>

