La chronique de Ben


eXplique-Moi Le XML.

Un des gros problèmes de l’informatique est de trouver une façon de stocker les données. Au fur et a mesure de l’évolution des besoins de l’informatique, de nombreux formats de fichiers sont apparus et ont évolué. Chaque format a été étudié pour répondre à un problème précis, par exemple comment stocker du texte de manière optimale sous Windows, comment stocker des tableaux sous Mac, etc…

Désormais, il existe une multitude de types de fichiers différents et généralement incompatibles entre eux. Chaque grande compagnie utilise ses propres technologies, et la conversion d’un fichier d’un type vers un autre relève souvent du cauchemar. En effet, il est loin d’être évident de pouvoir dire sous quelle forme se trouvent ces données : s’agit-il de texte brut, de nombres binaires, dans quel ordre se trouvent-ils, quelle est leur structure ?

Ce problème a souvent oblige les sociétés à faire des choix technologiques très marqués. Afin d’être sur qu’une succursale d’une entreprise puisse utiliser les fichiers d’une autre, il fallait se mettre d’accord non seulement sur le système d’exploitation utilisé mais également sur les logiciels. Mais avec l’apparition de l’Internet, de nouveaux besoins sont apparus. Il est désormais nécessaire de pouvoir échanger des fichiers avec d’autres entreprises, des fournisseurs, des clients, etc. et l’on ne peut pas sérieusement demander à tous ces gens d’utiliser les mêmes logiciels...

C’est ici qu’intervient le langage XML. XML est un langage de définition de données qui utilise des marqueurs, comme le HTML. Voici par exemple une définition possible d’un animal :

<animal>

<race>Chien</race>

<pattes>4</pattes>

<poil taille=’court’ couleur=’noir et blanc’ />

</animal>

Les personnes familières avec le langage HTML ne seront pas dépaysées. Ce format est parfaitement lisible et facilement compréhensible. Les données peuvent se trouver entre un marqueur début () et un marqueur fin () ou bien en tant qu’attribut d’un marqueur (attribut=’valeur’). Un marqueur peut être à la fois début et fin s’il se termine par le caractère ‘/’.

Les fichiers XML peuvent être validés par un fichier DTD ou Schéma, qui permettra de définir le format des données ou certaines règles du style « un animal doit toujours avoir un et un seul champs ‘pattes’ » etc.… Ces règles permettront de s’assurer que le fichier a été correctement sauvegarde et transmis, et permettront d’assurer une cohérence entre différents programmes utilisant les mêmes fichiers XML.

Ce format est purement textuel, il est donc compatible avec tous les systèmes d’exploitation existants. Le texte sera préférentiellement en format unicode afin qu’il n’y ai pas d’incompatibilité de codage caractère (pour qu’un fichier écrit en chinois soit lisible par un logiciel français, et vice versa.)

Un des intérêts majeurs du XML est d’être évolutif, c’est à dire que l’on peut ajouter des données au fichier sans que cela n’interfère avec les programmes qui utilisaient le fichier avant cet ajout. Dans notre exemple nous pourrions rajouter "le champs <nom>Snoopy</nom>" que les programmes existants ignoreraient tout simplement. Voilà qui éliminera bon nombre de problèmes de compatibilité entre les nouvelles versions des softs et les anciennes.

Le XML est entoure d’une multitude d’outils bien pratiques, comme le langage XSL-T qui permet de définir des transformations de fichier XML vers a peu près n’importe quoi. On peut par exemple utiliser XSL-T pour transformer un fichier XML en page web, en fichier TeX, etc. On peut également utiliser des techniques « data binding », c’est à dire lier un fichier XML a un fichier HTML pour y faire apparaître dynamiquement les données. Cette façon de procéder est très pratique, en particulier si elle est utilisée en conjonction avec des bases de données capable de générer du XML. On peut ainsi s’assurer qu’une page contiendra toujours les dernières données mises à jour sans écrire la moindre ligne de code.

Mais les outils les plus en demande sont les analyseurs de fichiers XML, qui permettent d’accéder directement aux données que l’on cherche depuis n’importe quel langage de programmation. Il existe deux grands types d’analyseurs, DOM et SAX. DOM se base sur une arborescence de données, elle présente les données comme un arbre hiérarchisé, par exemple, de la racine vers les feuilles, un zoo qui contiendrait une multitude d’animaux qui eux même on des pattes. SAX, quand a lui, se base sur une architecture événementielle. Il lit le fichier séquentiellement et déclenche des procédures lorsqu’il trouve un élément. Le programmeur n’a plus qu’a écrire un code dans le style ‘si c’est un animal je fait ça, si ce sont ses pattes je fait ça…’ etc. SAX à l’avantage d’utiliser très peu de mémoire peu importe la taille du fichier XML qu’il lit.

XML est déjà très utilisé dans une multitude de domaines. XML est la base du langage WML (équivalent du html, pour les téléphones sans-fil), des protocoles BizTalk et SOAP, ainsi que du format multimédia SMIL, très utilise par RealPlayer et QuickTime. Son développement est très rapide, poussé par la plupart des géants de l’informatique, notamment Netscape et Oracle. Microsoft n’est pas en reste et parie gros sur ce format de conservation de données qui est bien parti pour devenir la base de ses futurs systèmes. Il y a donc fort à parier que comme le disaient certains analyses lors du lancement de ce langage, XML sera l’ASCII du futur !

Pour tout commentaire, Benoit Fries
© Ben (Benoit Fries) 2000.