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.
|