Introduction au langage xml

Ce document n'a pas la prétention d'expliquer en détail le langage xml. Il introduit simplement les notions essentielles afin que tout un chacun puisse éditer les documents xml utilisés pour publier des pages sur le site web de l'ULB.

C'est en effet ce langage xml qui a été choisi pour encoder les pages du site. Pas n'importe quel xml, mais un xml qui utilise un format particulier choisi pour répondre aux besoins en matière de présentation de l'information d'une grande université comme la nôtre, tout en permettant un traitement informatique automatisé adapté au très grand volume que représente cette information.

C'est en effet là une des grandes forces de ce langage: on peut l'adapter, le faire évoluer à sa guise pour répondre à tout type de besoins.

Le langage natif utilisé pour le web n'est pas le xml, mais le langage html. Une phase de conversion, appelée phase de génération, est donc nécessaire pour transformer le xml en html. C'est le rôle de l'application de gestion du site appelée également sitemanager.

A l'ULB, cette génération ne se fait pas en produisant directement des pages sur le site web, mais dans une partie en prévisualisation non accessible au public. On peut ainsi développer son site web à son aise, sans qu'il ne soit visible de l'extérieur. Dès qu'il est prêt, une deuxième phase, appelée phase de publication, permet de copier ces pages en prévisualisation vers leur emplacement définitif sur votre site.

Table des matières

Qu'est-ce que le xml ?

L'objectif du langage xml est de faciliter le traitement automatisé des informations contenues dans un document.

L'idée est de structurer les informations de telle manière qu'elles puissent être à la fois lues et modifiées par des personnes humaines, mais également traitées par des programmes informatiques. Ces programmes informatiques exploiteront de manière automatisée les informations en question.

L'exemple qui suit propose une bibliographie codée en xml:

Exemple
<?xml version="1.0" encoding="ISO-8859-1"?>
<bibliographie> 
   <livre langue="fr"> 
      <titre>Clandestin</titre> 
      <auteur>James Ellroy</auteur> 
      <editeur>Rivages</editeur> 
      <lieu>Paris</lieu> 
      <date>1990</date> 
      <pages>445</pages> 
      <description>Il n'y a pas que...</description>
   </livre> 

   <livre langue="fr"> 
      <titre>Le Dahlia noir</titre> 
      <épuisé/>
      <auteur>James Ellroy</auteur> 
      <editeur>Rivages</editeur> 
      <lieu>Paris</lieu> 
      <date>1990</date> 
      <pages>472</pages> 
      <description>Le 15 janvier 47...</description> 
   </livre> 
</bibliographie>

Une application pourra présenter cette bibliographie sous forme d'une liste ordonnée par nom d'auteur, alors qu'une autre application la fera apparaitre sous forme d'une liste de liens renvoyant à des fiches descriptives détaillées.

Ces opérations se font généralement à l'aide de feuilles de style, écrites dans un langage appelé XSLT (ça, c'est le boulot des informaticiens, vous ne devez pas vous en soucier).

Les balises

On remarque dans cet exemple que l'information est entourée de caractères spéciaux, qui forment ce qu'on appelle dans le jargon xml des balises. Le titre "Clandestin" du premier livre, par exemple, est entouré d'une balise ouvrante <titre> et d'une balise fermante </titre>.

Ces balises vont en effet toujours de pair: un balise ouvrante, par exemple <auteur> (on parlera de la balise ouvrante auteur) et une balise fermante, par exemple </auteur> (on parlera de la balise fermante auteur).

Une balise ouvrante ne possède pas de '/' avant son nom, tandis qu'une balise fermante en possède un. Le nom de la balise ouvrante doit être rigoureusement identique à celui de la balise fermante. En particulier, il faut respecter le même usage des minuscules et des majuscules dans les deux balises.

Les éléments

L'ensemble constitué d'une balise ouvrante, de la balise fermante associée et du contenu situé entre ces deux balises forme ce qu'on appelle un élément (on parlera de l'élément <bibliographie>, de l'élément <livre>, de l'élément <titre>...).

Comme vous le remarquez, ces éléments sont imbriqués les uns dans les autres. L'élément <bibliographie> contient des éléments <livre>, qui à leur tour contiennent un élément <titre>, mais également des éléments <auteur>, <date>...

Un élément doit toujours être fermé. En d'autres termes, dès que vous ouvrez une balise, vous devez mettre une balise fermante un peu plus loin. Pour fermer les balises, vous devez respecter l'ordre de leur ouverture. Le principe est simple: si vous ouvrez une balise et si vous en ouvrez une deuxième, vous devez d'abord fermer la deuxième avant de pouvoir fermer la première.

Certains éléments peuvent être vides, par exemple <épuisé></épuisé>. Dans ce cas, on peut utiliser le raccourci d'écriture <épuisé/> qui consiste à mettre un '/' après le nom de la balise ouvrante sans mettre de balise fermante, comme le montre le deuxième livre de l'exemple.

Le premier élément d'un document, l'élément <bibliographie> dans notre exemple, est appelé l'élément racine du document.

Les attributs

On peut également trouver dans une balise ouvrante ce qu'on appelle des attributs. C'est le cas de l'élément <livre langue="fr"> qui contient un attribut langue, dont la valeur est égale à fr.

Les attributs servent à ajouter de l'information à un élément (au même titre que les sous-éléments qu'il contient). Dans notre exemple, l'attribut langue sert à indiquer dans quelle langue un livre est écrit.

La valeur des attributs doit toujours être donnée entre guillemets ou entre apostrophes. On peut donc écrire indifféremment <livre langue="fr"> ou <livre langue='fr'>.

Les caractères spéciaux

A l'intérieur de la valeur d'un élément ou d'un attribut, on peut mettre n'importe quelle suite de caractères, à une exception près: les caractères < et & ne peuvent pas être utilisés directement. Ces caractères sont des caractères spéciaux réservés à l'usage du xml (< est notamment utilisé pour marquer le début d'une balise).

Si vous devez introduire ces caractères dans votre texte, il suffit d'écrire &lt; et &amp; à la place.

Il en va de même avec un guillemet placé dans la valeur d'un attribut elle-même codée entre deux guillemets (ou une apostrophe dans une valeur placée entre apostrophes). Dans ce cas, vous pouvez soit utiliser des apostrophes pour marquer la valeur de l'attribut, soit écrire &quot; dans celle-ci (ou encore &apos; pour une apostrophe dans une valeur d'attribut placée entre apostrophes).

Structure d'un document xml

Un document xml est un document au format texte structuré en deux parties:

La première partie, appelée prologue, comprend généralement une seule ligne. Elle permet d'indiquer la version du langage xml utilisé dans le document (cette indication est obligatoire, à l'heure actuelle, elle sera toujours égale à "1.0") ainsi que le jeu de caractères (encoding en anglais) utilisé pour écrire le document.

Dans l'exemple ci-dessous on spécifie qu'il s'agit du jeu de caractères UTF-8, qui permet de prendre en compte tous les caractères spéciaux existant dans le monde (y compris nos caractères accentués). Dans certains cas, on utilisera également ISO-8859-1 (valable sous Windows, notamment). A l'heure actuelle, la préférence va à l'utilisation d'UTF-8.

premier exemple de prologue xml
<?xml version="1.0" encoding="UTF-8"?>

Une deuxième ligne est parfois présente afin de déclarer une DTD (en quelque sorte la grammaire attachée au document). Ce n'est pas obligatoire. Il est donc normal qu'elle ne soit pas toujours présente dans les documents que vous devez éditer.

deuxième exemple de prologue xml
<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE documents SYSTEM "../document-ulb.dtd">

Vous ne devez en principe pas toucher à cette partie.

Dans les documents récents, les DTD sont abandonnées au profit des schémas. Un schéma doit également se déclarer, mais cela se fait à l'aide d'attributs spéciaux placés dans l'élément principal de votre document. C'est un schéma qui est utilisé pour le site de l'ULB.

La deuxième composante d'un fichier XML est l'arbre des éléments (comme celui présenté ci-dessous). Cet arbre est toujours constitué d'un seul élément, qu'on appelle l'élément racine. Dans notre exemple, l'élément racine est <bibliographie>.

Cet élément racine peut, bien sûr, contenir d'autres éléments.

C'est cette partie que vous pouvez modifier.

arbre des éléments
<bibliographie> 
   <livre langue="fr"> 
      <titre>Clandestin</titre> 
      <auteur>James Ellroy</auteur> 
      <editeur>Rivages</editeur> 
      <lieu>Paris</lieu> 
      <date>1990</date> 
      <pages>445</pages> 
      <description>Il n'y a pas que...</description>
   </livre> 

   <livre langue="fr"> 
      <titre>Le Dahlia noir</titre> 
      <poche/>
      <auteur>James Ellroy</auteur> 
      <editeur>Rivages</editeur> 
      <lieu>Paris</lieu> 
      <date>1990</date> 
      <pages>472</pages> 
      <description>Le 15 janvier 47...</description> 
   </livre> 
</bibliographie>

L'édition de vos documents

Pour éditer un document xml, il suffit d'utiliser un simple éditeur de texte (Notepad, Bloc-notes, Wordpad, Simple Text...).

Attention, le logiciel 'Word' n'est probablement pas le meilleur outil pour éditer des documents xml. Il s'agit d'un traitement de texte plus évolué (trop) qu'un simple éditeur de texte. Si vous le faites, vérifiez que celui-ci enregistre bien votre document au format 'texte' en conservant l'extension de fichier '.xml'. Si vous sauvez votre document au format Word avec l'extension '.doc', celui-ci ne sera pas utilisable en xml.

Préférez-lui un éditeur de texte plus simple. Il en existe des dizaines qui sont gratuits et disponibles sur le web (Pour PC: Notetab light, Arachnophilia..., pour MAC: BBEdit Lite, TextWrangler...).

Il existe également des éditeurs spécialisés en xml (souvent payants), qui offrent de nombreuses fonctionnalités qui facilitent l'édition de vos documents et qui présentent l'avantage de détecter automatiquement et directement les erreurs d'encodage que vous commettez.

La Cellule web a acquis une licence de site donnant aux membres de l'ULB le droit d'utiliser l'éditeur oXygen (fonctionnant tant sur PC, sur Mac que sur Linux).

Les erreurs courantes

Lors de l'édition de documents xml, on rencontre inévitablement un certain nombre d'erreurs. Celles-ci peuvent malheureusement déboucher sur l'impossibilité de publier vos informations sur le site web de l'ULB.

Ce n'est pourtant certainement pas à prendre comme une catastrophe, on peut même dire que cela fait partie intégrante du travail d'édition. Il faut cependant apprendre à les détecter et à les corriger afin d'éviter que ces erreurs ne ralentissent votre travail.

Voici les erreurs les plus souvent rencontrées:

  • faute de frappe dans les noms de balises:

     

    erroné:

    <auteur>James Ellroy</autour>

    correct:

    <auteur>James Ellroy</auteur>

  • non-respect des minuscules/majuscules dans les noms de balises:

     

    erroné:

    <titre>Clandestin</Titre>

    correct:

    <titre>Clandestin</titre>

  • fermeture incorrecte des balises:

     

    erroné:

    <pages>445<pages>

    correct:

    <pages>445</pages>

  • oubli des guillemets encadrant les attributs:

     

    erroné:

    <livre langue=fr>

    correct:

    <livre langue="fr">

  • balises incorrectement imbriquées les unes dans les autres:

     

    erroné:

    <lieu>Paris <date></lieu>1990</date>

    correct:

    <lieu>Paris</lieu> <date>1990</date>

  • utilisation des caractères < et &:

     

    erroné:

    <p>budget R&D < à 10m€</p>

    correct:

    <p>budget R&amp;D &lt; à 10m€</p>

D'autres erreurs?

...Hé bien oui! Même si vous n'avez plus d'erreurs de syntaxe xml telles que celles mentionnées ci-dessus, il se peut que vous fassiez des erreurs de logique dans votre document XML.

Par exemple, rien ne vous empêchera en xml d'ajouter un élément <machine-a-lessiver> dans un élément <livre> de votre bibliographie. C'est votre droit, mais les programmes informatiques qui se trouvent derrière risquent de ne pas bien comprendre ce que vous voulez faire.

Pour cette raison, la plupart des documents xml font appel à ce qu'on appelle une DTD ou un schéma. Une DTD ou un schéma est une sorte de grammaire qui spécifie quels sont les éléments et les attributs que vous pouvez utiliser dans votre document et dans quel ordre.

Les schémas sont des versions modernes des DTD. Ils permettent de mieux contrôler encore le contenu d'un document XML. Le nouveau site de l'ULB utilise des schémas (les documents xml qui génèrent la plupart des sites utilisent un schéma unique).

La vérification de votre document se fera lorsque vous le chargerez sur le site de l'ULB. Le système vérifiera si celui-ci est conforme à sa DTD ou à son schéma. Si ce n'est pas le cas, il refusera tout simplement de charger votre document. Tant pis, pour votre élément <machine-a-lessiver>.

Et après, est-ce tout?

Malheureusement non! Même si votre document est tout à fait correct et conforme à sa grammaire, il se peut que certaines erreurs apparaissent lorsqu'il est pris en charge par l'application d'édition. Ces erreurs peuvent même apparaître après quelques jours ou quelques mois.

La plupart du temps, elles se produisent lorsque vous utilisez des liens hypertextes vers des documents qui disparaissent (ou changent de nom) ou lorsque vous faites appel, via l'annuaire téléphonique de l'ULB, aux coordonnées d'une personne qui quitte l'Université.

Ce n'est certainement pas une contrainte. Ces erreurs sont détectées automatiquement toutes les nuits et vous évitent de devoir vérifier régulièrement si vos pages sont encore à jour (pour ce type de données, bien sûr). Elles vous signalent simplement dès qu'une mise à jour est nécessaire.

Dans un proche avenir, vous serez prévenu par courrier électronique lorsqu'une erreur de ce type apparaît dans un de vos documents.

ULB - entreprise écodynamique