TUTORIELS 
Introduction à XML
Découvrir le langage essentiel aux développements d'applications web BtoB.  (17 mars 2001)
 

XML (eXtensible Markup Language) est en langage élaboré par le W3C (World Wide Web Consortium), "cousin" du HTML dans le sens où, comme ce dernier, il dérive du SGML (Standard Generalized Markup Langage), "père" des deux langages et beaucoup moins facile d'accès. XML est donc un langage de balisage, mais il étend la structure logique des balises bien au delà de la présentation du document (la fonction du HTML). Le développeur XML peut ainsi créer et utiliser dans les documents ses propres balises, lui permettant de décrire le contenu avec une précision extrême (aussi précisément, en fait, que dans une base de données). Un document XML typique se présente, par exemple, ainsi:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalogue>
<voiture>
<marque>Renault</marque>
<modele>Clio</modele>
</voiture>
<voiture>
<marque>Audi</marque>
<modele>A4
     <type>Break
     <moteur>Diesel</moteur>
     </type>
</modele>
</voiture>
</catalogue>

La première instruction (<?xml version="1.0" encoding="ISO-8859-1"?>) est une directive pour le processeur XML spécifiant la version du langage (1.0) et le jeu de caractère utilisé pour le codage du document (ici le jeu de caractère français). Le reste du document présente une structure logique, hiérarchique, semblable à la structure d'un document HTML mais dénuée de toute information de présentation.
Pour transformer un document XML en lui ajoutant des informations relatives à sa présentation, il existe un langage spécifique, XSL (eXtensible Style Language) qui fonctionne en récupérant l'arborescence du document XML (sa hiérarchie, en quelque sorte) et en la modifiant pour obtenir un nouvel arbre, dont la structure est cette fois une structure de présentation. Plus d'informations à ce sujet sont disponibles dans l'article suivant.

La DTD (Document Type Definition)
Le document XML contient un certain nombre de balises qui lui sont propres (<VOITURE>, <MARQUE>, etc...). Ces balises ont été créées par le programmeur et définissent la hiérarchie du document. Mais pour que ces balises aient une signification plus précise, elles peuvent être consignées dans une DTD (définition de type de document), elle-même un fichier texte qui décrit le nombre de balises que le document XML peut utiliser, leurs fils (dans l'arborescence, on parle d'éléments - noeuds - fils et d'éléments - noeuds - pères), leurs attributs et le type de données qu'elles peuvent contenir (numériques, alphanumériques, etc...). La DTD n'est pas une nécessité, mais dans un contexte où XML décrit, notamment, des échanges électroniques entre entreprises et principalement des transactions, disposer d'un vocabulaire commun apparaît essentiel pour que le fichier soit compris en bout de chaîne.
De fait, un document XML dont la hiérarchie est correcte (balises correctement imbriquées et correctement terminées) est dit bien formé, mais un document XML pourvu d'une DTD est dit valide.
Une DTD peut ressemble à cela:

<!ELEMENT catalogue (voiture)*>
<!ELEMENT voiture (marque*, modele*)>
<!ELEMENT modele (type*)>
<!ELEMENT type (moteur*)>
<!ELEMENT marque(#PCDATA)>
<!ELEMENT moteur(#PCDATA)>

L'astérisque signifie qu'il peut y avoir plusieurs fils d'un même élément (plusieurs voitures dans le catalogue, plusieurs marques et plusieurs modèles pour une voiture, etc.). Les éléments "marque et moteur" n'ont pas de fils et peuvent contenir n'importe quel type de données alphanumériques (code #PCDATA"). Remarquons que cette hiérarchie a un caractère arbitraire, mais que quiconque voudra mettre à jour le document XML devra la suivre. Tout le but de la manoeuvre ayant été de construire un référentiel commun d'interprétation et de manipulation des documents XML.
La DTD sera contenue dans un fichier spécifique, que l'on appellera ici "catalogue.dtd". On précisera, dans le document XML, que l'on se réfère à cette DTD en y incluant la ligne:

<!DOCTYPE catalogue SYSTEM "catalogue.dtd">

A noter que la DTD est un outil du SGML, tandis qu'un mécanisme de définition analogue, mais moins utilisé, a été défini spécifiquement pour XML: XML Schema.
Plusieurs DTD "standardisées" existent. Elles définissent, entre autres, les langages MathML ou ebXML, pour ne citer qu'eux.

Récupérer le contenu des balises
Les informations contenues dans les balises sont extraites du document XML au moyen d'analyseurs syntaxiques ("parseurs"), et leur manipulation s'effectue grâce à deux API (Application Programmation Interface): SAX (Simple API for XML) et le DOM (Document Object Model), qui sont détaillées par ailleurs. A noter qu'Internet Explorer 5.0, par exemple, dispose d'un parseur XML qui lui permet d'afficher l'arborescence des documents de ce type.

 
[ Jérôme MorlonJDNet
 
Accueil | Haut de page