Comprendre XML

Comprendre XML

Par Charles Giguère
(C) 2001 - Tous droits réservés par l'auteur

Qu’est-ce que XML ?

Avant d’entrer dans le détail et dans la série d’acronymes qui est typique de l’informatique, je vais essayer de vulgariser le mieux possible ce que permet cette technologie par une analogie.

Prenons l’industrie de l’édition par exemple, il y a différentes façons de publier des documents et notamment en utilisant l’imprimerie pour créer des documents papiers ou en utilisant des outils informatiques pour créer des documents électroniques. Si on désire publier en format papier, on représentera le contenu d’information à publier dans une forme qui est le plus approprié pour un imprimeur ; et si on désire publier en format électronique, on représentera le contenu d’information qui est le plus approprié pour ce médium. Même si le contenu d’information est identique pour les deux médiums, on le représente différemment. Si on voulait fournir le même contenu d’information pour un autre médium, on l’adapterait probablement en conséquence. Ces représentations de contenu d’information ne sont donc pas interchangeables d’un médium à l’autre, car elles ont été adaptées pour un besoin spécifique.

XML permet de résoudre ce genre de problème, à l’aide de son langage et de sa syntaxe, il offre la possibilité de décrire de l’information structurée indépendamment du médium de diffusion. Dans le jargon XML on appelle ça " write once, publish many ", cela va sans doute rappeler à plusieurs le fameux " write once, run anywhere " du langage Java.

Histoire

Les origines de XML (et du HTML) remontent à 1960 avec les travaux de trois chercheurs d’IBM qui devaient trouver une solution pour traiter des milliers de documents légaux créés sur différents systèmes dont chacun utilisait un format propriétaire.

Les trois chercheurs créèrent GML (Generalized Markup Language), un langage permettant de décrire un format de document. Le GML évolua et en 1968 un groupe de développeurs internationaux adoptèrent le SGML (Standard Generalized Markup Language) qu’ISO approuva en 1986.

Le SGML offrait cependant beaucoup trop de liberté au goût de certains, c’était en quelque sorte un langage permettant de créer d’autres langages. Berners-Lee, l’inventeur du Web, désirait une façon simple de présenter ses documents sur le Web et il créa le HTML (HyperText Markup Language), qui est donc un sous-ensemble très limité et non extensible du SGML.

La force du HTML est la présentation visuelle d’informations, il n’a aucune manière de structurer les données contenu dans l’information. Vers 1996, le World Wide Web Consortium (communément appelé le W3C), initia le développement d’un langage de structuration des données : XML (eXtended Markup Language), qui se veut une version légère du SGML mieux adapté au Web. Le standard XML fût adopté officiellement en 1998.

XML en bref

D’abord XML ne doit pas être confondu avec le HTML et ce n’en est pas une extension. En fait XML et HTML sont des sous-ensembles distincts du SGML, ils ont été définis à partir du SGML. Le HTML est utilisé pour la présentation visuelle d’informations alors que XML est un langage permettant de structurer des données et ne permet pas d’indiquer comment sera présenté l’information. Ce n’est pas un langage de programmation, comme le COBOL ou le C, il ne peut rien faire " seul ", il ne " s’exécute " pas, il doit être utilisé avec des outils ou des applications qui s’en servent. Le XML a été conçu et optimisé pour la transmission de données par le Web.

Le XML est donc un langage permettant d’inclure des données structurées dans un fichier texte. C’est un ensemble de règles, directives, conventions, etc. permettant de produire des textes de données qui sont faciles à générer et à lire par des programmes informatiques. Ces textes ainsi produits sont non ambigus, ils sont extensibles et peuvent être adaptés à différentes langues et cultures (localisation). Tout comme le HTML, il utilise le principe d’étiquette (tag) pour délimiter les données. Par contre, contrairement au HTML, il est extensible car il ne possède pas un jeu fixe de balises (markup), c’est le développeur qui créer ses propres balises en utilisant le langage XML.

Même si les fichiers XML sont des fichiers textes, ils ne sont pas destinés à être manipulés directement avec un simple éditeur de texte (même si cela est possible). Ils sont destinés à être manipulés avec des outils dédiés, car la syntaxe du XML est très rigide (contrairement à celle du HTML) et une simple étiquette (tag) ou attribut oublié rend le fichier inutilisable.

Que faire avec XML ?

Le XML permet, par exemple, à des organisations de créer leur propre vocabulaire afin d’échanger facilement et sans ambiguïté de l’information dans leur domaine respectif : chimie, finance, assurance, électronique, mathématique, etc. De plus en plus de vocabulaires XML sont développés pour solutionner différents problèmes d’affaires. Le site www.xml.org répertorie plusieurs de ces vocabulaires. Le XML favorise ainsi la réutilisation.

À long terme, il pourrait également permettre de désengorger les communications Internet en éliminant les communications superflues, comment ? En donnant plus de travail à faire du côté du client par rapport au serveur Web. Pour mieux saisir cet aspect, imaginez que vous êtes sur un site permettant de réserver des billets d’avion et que vous demandez tous les vols de Montréal à Toronto pour une semaine en particulier. Vous recevrez probablement une partie d’une longue liste de vols dans laquelle vous devrez naviguer en utilisant des boutons du style " suivant " et " précédent ". Chaque fois que vous appuyez sur un bouton pour voir une autre partie de la longue liste, vous envoyez une requête au serveur Web qui doit la traiter et vous retournez une autre partie de la liste de vols. Si par contre, cette longue liste de vols avait été envoyée au complet en XML, un petit programme Java qui tourne sur l’ordinateur client aurait très bien pu permettre la navigation dans cette liste et même permettre d’effectuer des recherches dans la liste.

Exemple de fichiers XML

<?xml version="1.0" standalone="yes"?>
<conversation>
<salutation>Allo la terre!</salutation>
<réponse>Cessez de la faire tourner, je veux descendre!</réponse>
</conversation>

Microsoft Internet Explorer 5 supporte XML (en partie), créez un fichier texte contenant l’exemple précédent (en utilisant l’accessoire Bloc-Notes de Windows 95, par exemple) et nommez-le test.xml, ensuite ouvrez ce fichier texte avec le navigateur et vous verrez comment Explorer 5 vous présente les données (vous pouvez aussi double cliquer sur le document si vous avez utilisé l’extension .xml dans le nom de votre fichier).

XML est un langage sensible aux majuscule/minuscule, si dans notre exemple précédent nous avions : <greeting>Hello, world!</GREETING>, ce serait une erreur de syntaxe.

Il existe deux types de fichiers XML : Well formed et Valid. Le premier type désigne un fichier XML qui se conforme aux règles de base du langage XML, le second type désigne un fichier XML qui se conforme aux règles de base et qui a été validé avec un DTD ou un XML Schema (dans lesquels on inscrits les contraintes du vocabulaire).

XML : une famille de technologies.

Autour du standard XML gravitent plusieurs autres standards qui répondent à des besoins précis ou des tâches spécifiques :

Il est à noter que certains de ces standards n’ont pas encore atteint le statut de " recommandation " (approbation) du W3C.

XML en évolution

XML est un standard tout nouveau (adopté en 1998 par le W3C) mais s’appuie sur un standard solide (SGML) dont les origines remontent à 1960. Des nouveaux outils permettant d’utiliser et gérer les fichiers XML continuent d’apparaître à un rythme impressionnant et ce momentum est suivi par plusieurs industries qui ont créé et adopté des vocabulaires XML qui sont propres à leur domaine.

Le HTML nous a permis (et nous permettra encore) de présenter élégamment des informations sur le Web, c’est d’ailleurs le langage de publication électronique qui a connu le plus de succès. Il est maintenant temps de s’attarder à ce que signifie un élément de donnée plutôt qu’indiquer seulement comment afficher cet élément de données, et c’est justement ce que XML permet de faire.