Une architecture Web-XML

Baptiste Autin, le 10 février 2009

Un système de production documentaire basé sur XMLLa page CV de ce site est générée à l’aide de documents XML, XSL et CSS.

Le principe est le suivant : les données (compétences, formation professionnelle, expérience, etc.) sont enregistrées dans des fichiers XML, que des processus XSLT transforment en pages web, ou en documents PDF.
Si des modifications doivent être apportées à mon CV, je modifie uniquement les fichiers XML, et toutes les sorties, web comme papier, reflètent instantanément ces modifications.

L’idée semble naturelle, et pourtant il a fallu des années d’évolution des standards et des API de développement XML pour que ce modèle devienne techniquement possible.

Le dynamisme des technologies XML

Contrastant avec la lourdeur de son ancêtre (le SGML), XML constitue une technologie très intéressante, et de plus en plus incontournable :

  • D’abord, XML permet de définir, avec une syntaxe simple, des structures de données arborescentes, riches et complexes (c’est tout l’intérêt d’un document XML par rapport à des lignes d’enregistrements de BD)
  • Modèle de données et présentation peuvent être facilement séparés, ce qui facilite la maintenance d’un site Internet, et la réutilisation des données sous d’autres formes (mobile, PDF, etc.)
  • Que ce soit via les microformats, ou via RDF, le nombre de vocabulaires XML disponibles va s’accroissant
  • La modularité est totale : un document XSL peut faire appel à d’autres documents XSL, et il est ainsi possible de créer des librairies de templates XSL
  • L’environnement technique requis est léger : il suffit d’une bonne implémentation XSLT, comme LibXML ou Saxon

XSL n’est pas le seul moyen pour exploiter un document XML.
On peut le remplacer par un script (écrit dans un langage web traditionnel) qui extrait du document XML les éléments nécessaires à la construction de la page web, à l’aide de l’API DOM, dont les classes permettent d’explorer un document XML, en balayant sa structure grâce au langage de requêtage XPath (d’ailleurs également utilisé avec XSLT).

Par rapport à XSL, cette façon de procéder s’avère utile surtout si des opérations spéciales (connexion avec une base SQL, exécution de programmes externes, etc.) ou des calculs complexes, doivent être menés avec les données, et que seuls un langage de programmation classique, dans son framework, sera à même de réaliser.
Cependant, avec le développement des web services, qui reposent sur une syntaxe XML, et l’introduction de fonctionnalités d’import/export XML dans un nombre toujours plus grand d’applications, on peut penser que le recours à un langage de script traditionnel sera de moins en moins nécessaire sur le web.

et CSS dans tout ça ?

Le site Internet que vous consultez actuellement repose aussi sur CSS2,
un système astucieux qui permet de définir et redéfinir ses styles de présentation à volonté, auxquels le code HTML des pages fait référence.
Aujourd’hui, pour monter une page web, il n’est donc plus nécessaire d’avoir recours à l’imbrication invraisemblable de tableaux HTML et de pixels invisibles (qui servaient à faire “tenir” les tableaux) comme cela se pratiquait encore dans les agences web il y a quelques années (et comme j’ai eu à le faire à l’époque !).
La généralisation de CSS comme technique globale de montage des pages n’est possible que depuis la disparition des “vieux navigateurs” (tel Netscape 4), l’amélioration d’IE, et l’émergence de Mozilla/Firefox, un browser qui colle de très près aux standards du web.

CSS n’est d’ailleurs pas sans lien avec XML : d’abord parce que c’est le consortium W3C qui en assure la direction, comme pour XML et XSL.
Ensuite parce que ce système tend à séparer le contenu de la forme : en gros, vous placez vos données dans des balises DIV (des conteneurs), et vous précisez dans votre fichier CSS où dans l’écran, et de quelle manière, vos données vont s’afficher.

Corollaire : pourquoi ne pas afficher alors un document XML avec une simple feuille CSS ? Cela se pratique, mais ce n’est envisageable que si la structure XML des données reste simple et linéaire, autrement, si le gabarit de la page est un peu complexe, il faut avoir recours à XSL, ou au DOM.

XHTML et le web sémantique

Vu que leurs effets visuels peuvent se redéfinir entièrement avec une feuille de style, les balises HTML deviennent presque interchangeables, au point que l’on peut se demander si l’on a encore besoin de HTML… D’ailleurs, avec le standard XHTML, la tendance est à la restriction du vocabulaire utilisable.
En fait, derrière cet appauvrissement apparent, fort éloigné de ce qui se passait à la fin des années 90 (époque marquée par une guerre sauvage entre browsers, qui rivalisaient d’innovations techniques et de balises originales), l’idée est d’inciter les webmasters et les gestionnaires de contenu à utiliser les balises davantage pour leur sens, et non plus pour leur effet visuel.
Ainsi, en XHTML Strict, l’usage de la traditionnelle balise <u>, qui en HTML standard sert à souligner un mot, est-il déprécié, car le nom même de cette balise (u comme underline) renvoie à une caractéristique purement graphique, et non sémantique, ou logique.

A contrario, recourir à la balise <blockquote>, dans un document XHTML, plutôt qu’à un classique <div>, permet de signifier que ce qui va suivre est une citation. On facilite ainsi le travail des moteurs de recherche, robots d’indexation et autres agrégateurs de contenu, en leur donnant une information sur la nature du texte qui suit.
Le web tend en effet à être exploité par des machines, de façon automatique, et plus seulement par des êtres humains avec un navigateur. Or, pour que ces machines interprètent correctement ce qu’elles lisent, il faut leur parler avec un vocabulaire précis, faisant référence à des concepts connus.

Sur le web aujourd’hui, la tendance est donc à structurer le contenu des pages en fonction du sens, et non plus en fonction du rendu visuel souhaité à un moment donné. C’est une évolution importante vers ce que les spécialistes appellent le web sémantique.

   Newer Entries »