Introduction rapide à XML

De Guide utilisateur des messages comptables UN/XML

XML signifie eXtensible Markup Language ou encore langage de balisage extensible. C’est donc un langage de balisage qui, comme son ancêtre HTML, a été développé par le World Wide Web Consortium (W3C).

Balisage

En pratique la syntaxe XML est très proche de HTML à une différence près (mais elle est d’importance) : la liste des balises n’est pas figée. C’est pour cela qu’on parle d’un langage de balisage extensible. Cette différence entraîne un certain nombre d’autres ajustements syntaxiques que nous allons étudier maintenant.

Le principe d’un langage de balise, comme XML ou HTML, est de baliser l’information brute avec des éléments de structure. Prenons ce message pour exemple :

Contactez Jean Dupont, expert-comptable à Paris, au 01 50 50 50 50.

Cette phrase n’est pas balisée mais il est facile, pour nous, d’en reconnaître la structure : Jean Dupont est un nom, expert-comptable est une profession, Paris est un lieu et 01 50 50 50 50 est un numéro de téléphone.

Le même message balisé en XML s’écrira :

<message>
Contactez <nom><prénom>Jean</prénom> <famille>Dupont</famille></nom>,
  <profession>expert-comptable</profession> à <lieu>Paris</lieu>, au <téléphone>01 50 50 50 50</téléphone>.
</message>

Nous pouvons faire un certain nombre d’observations à partir de cet exemple. D’abord le message balisé en XML ne contient pas d’information supplémentaire par rapport à la version originale. Seule la structure du message a été rendue explicite.

C’est pourquoi on fait la différence entre les données et les métadonnées. Les données c’est le contenu du message, XML le véhicule sans modification. Les métadonnées c’est de l’information supplémentaire qui décrit les données et, en pratique, décrit la structure de ces données. XML apporte la représentation de ces métadonnées au sein du document.

En XML, toutes les métadonnées (information de structure) s’inscrivent entre des balises reconnaissables aux crochets comme <nom>, <message> ou <téléphone>. Le reste du document représente donc les données. On le voit, la syntaxe XML est donc similaire à la syntaxe HTML. Chaque élément de données est encadré d’une balise ouvrante (<profession>) et d’une balise fermante (</profession>) reconnaissable au symbole /. Le contenu de l’élément, dans cet exemple, est expert-comptable.

Dans ces exemples, ne prêtez aucune attention au nom des balises. Puisque les balises sont définies librement (X pour eXtensible), j'ai privilégier des exemples simples à comprendre. Un vocabulaire développé dans un but professionnel, comme les messages comptables, utilisera des noms de balises plus sophistiqués. Les principes restent valables.

Hiérarchie

Notez que les éléments de données s’imbriquent pour former une relation hiérarchie : l’élément <nom> a deux fils <prénom> et <famille> et est lui-même un fil de l’élément <message>.

Sur tous ces points, XML est donc fort proche de HTML avec deux différences importantes :

  • la liste des balises n’est pas fixée par le W3C, elle est établie librement par les utilisateurs, ce qui entraine un corolaire
  • la syntaxe XML est beaucoup plus stricte et, en particulier, elle impose que chaque balise ouverte soit fermée explicitement : à chaque <nom> doit correspondre
 un </nom>.

Donc, alors que les balises HTML sont des instructions de présentation (par exemple, <font>, <center> et <pre>), les balises XML tendent à être relatives à la structure d’information. Par exemple, des balises telles que <nom>, <profession> ou <téléphone>.

En d’autres termes, les balises XML ne précisent pas comment présenter l’information à l’écran (gras, italique ou centré) mais plutôt de quelle information il s’agit. Ce sera au logiciel d’en déterminer la présentation en fonction du contexte. Par exemple, la balise

<profession>expert-comptable</profession>

Dans un carnet d’adresse, elle sera représentée par un simple champs à l’écran. Alors que dans une application de gestion de ressources humaines, elle peut devenir un critère de tri. C’est précisément parce que le W3C a laissé libre la définition des balises qu’il a été possible de créer des messages comptables en XML.

Attributs

Il nous reste trois éléments de syntaxe importants à étudier : les attributs, les éléments vides et les entités prédéfines. Initialement les attributs ont été introduit en XML pour supporter des métadonnées plus riches, par exemple en précisant la nature d’un numéro de téléphone :

<téléphone nature="fixe">01 50 50 50 50</téléphone>

La syntaxe des attributs est identique à l’HTML mais plus stricte :

  • les attributs apparaissent exclusivement dans la balise ouvrante
  • le nom de l’attribut est séparé de la valeur par le symbole =
  • la valeur de l’attribut est obligatoirement reprise en guillemets simples ou doubles

En pratique les attributs sont parfois utilisés pour représenter des données, la différence entre données et métadonnées pouvant dépendre du contexte d’utilisation.

Bien entendu certains éléments ont plusieurs attributs :

<téléphone nature="fixe" notation="nationale">01 50 50 50 50</téléphone>
Dans cet exemple le noms des attributs ont, une nouvelle fois, été choisi pour des raisons pédagogiques. En pratique le concepteur du vocabulaire est libre.

Eléments vides, entités prédéfinies

Ce qui nous amène à une notation spéciale pour les éléments vides, c’est à dire ceux dont le seul contenu est des attributs. Au lieu d’écrire :

<email href="mailto:jdupont@xaya.com"></email>

ou peut également écrire (les deux formes sont permises et sont considérées comme équivalentes :

<email href="mailto:jdupont@xaya.com"/>

Le / de la balise fermente migre à la fin de la balise, soit un gain de quelques lettres. Enfin les entités prédéfines permettent d’échapper certains caractères, tel que des caractères réservés : <, " ou '. La aussi XML reprends les conventions du HTML et les remplace par &lt; (lt est l’abréviation de lower-than, plus petit que en anglais) &quot; (abréviation de quote, guillemet en anglais) et &apos; (abréviation d’apostrophe). Quand à & on le remplace par &amp; (ampersand, é commercial en anglais). Ainsi on pourra écrire :

<calcul message='j'ai simplifié'>5 &lt; 3 + 10</calcul>

j'ai simplifié

se lit

j'ai simplifie

et

5 &lt; 3 + 10

est interprété comme

5 < 3 + 10

Il reste de nombreux éléments de syntaxe mais cette introduction s’est concentrée sur l’essentiel.

Retour au sommaire