Accueil M'écrire
XML

 

 

eXtensible Style Language

Introduction

Dans ce chapitre je vais essayer de vous présenter brièvement les concepts de base des feuilles de style XSL en m'appuyant sur le document de travail du W3C de Juillet 1998 car, c'est sur celui-ci que s'appuie en partie Internet Explorer 5.0.

Les informations que vous trouverez dans cette partie différeront peut-être un peu de la norme étant donné que pour faire fonctionner nos exemples avec IE 5.0 il m'a fallu les adapter "à la sauce" Microsoft. A partir de là, il est possible qu'en fonction de l'évolution de la norme et des prochaines versions d'Internet Explorer que nos exemples ne fonctionnent plus. Cependant l'essentiel est de comprendre le principe de fonctionnement de cette nouvelle norme.

Ce que nous essayerons de comprendre :

  • Les concepts généraux de XSL
  • La construction d'un arbre de résultat à partir d'un document XML
  • Le formatage et la stylisation d'un arbre de résultat

XSL est particulièrement puissant dans le sens ou l'on peut à partir du document source obtenir un document résultat qui peut être très différent. Par exemple, on pourrait créer des graphiques à partir des valeurs contenues dans le document XML, de même que l'on pourrait bâtir automatiquement un sommaire et un index et tout ça sans modifier le document original.

Généralités

Ce qu'il faut retenir, c'est que pour définir une règle de style il faut :

1. décrire le squelette ou arbre du document (cf. XSLT: XSL Tree)

 

2. décrire le style que l'on veut appliquer à chaque articulation du squelette ou à chaque de noeud de l'arbre

En effet comme nous l'avons vu précédemment un document XML est vu auprès d'un interprèteur XML (ou parser) comme une structure arborescente, un peu à l'image d'une arborescence d'un disque dur.

La règle du patron

A ne pas confondre avec votre "boss", la règle que j'appellerai du "patron" ou template rule si vous préférez décrit la structure de chaque noeud de l'arbre ainsi que le style à appliquer à ce noeud.
Une feuille de style XSL est tout simplement un document XML qui contient tout un ensemble de règles. Ainsi, comme tout bon document XML elle doit suivre les règles de construction afin d'être bien formée.

Cette règle se décompose en deux parties :

  1. on associe un motif (pattern) au patron (template) afin d'identifier chaque noeud de l'arbre
  2. on associe une action, une mise en forme, un formatage ou une transformation au noeud résultant

Un motif sélectionne un noeud (en fait une balise ou élément) en utilisant un ou plusieurs des critères suivants :

  • un nom
  • l'ancêtre de l'élément
  • un identifiant unique (ID)
  • des jokers
  • un attribut de l'élément source
  • sa position relative par rapport à ses éléments voisins ou frères

Le formatage de l'arbre

Dans l'ancienne spécification, la mise en forme des noeuds de l'arbre se fait en utilisant les balises du jeu d'instruction de HTML; c'est actuellement ce qui fonctionne avec Internet Explorer 5.0.
Dans la nouvelle spécification, la mise en forme ressemble plus à la syntaxe de CSS à laquelle quelques éléments on été scindés pour d'augmenter la précision du formatage des documents.

Voici à quoi ressemble XSL dans sa nouvelle mouture:

<xsl: template match="accueil">

   <fo:block
     font-family="times new roman, serif"
     font-size="12pt"
     text-color="red"
   </fo:block>

</xsl:template>


Exemple

Afin d'être un peu plus concrets voyons un exemple très simple.

Voici le document XML :

<accueil>Bonjour monde !</accueil>

Et voici notre fichier XSL (légèrement simplifié afin de comprendre sa structure) :

<xsl:stylesheet>

  <xsl:template match="/">

    <b><i><xsl:value-of select="accueil"/></i></b>

  </xsl:template>

</xsl:stylesheet>

Voilà le résultat :

Bonjour monde !

Dans cet exemple basique, nous avons sélectionné l'élément racine du document (root) qui est en réalité notre document tout entier en utilisant élément template avec l'attribut match.
Ensuite nous recherchons l'élément ou balise accueil en utilisant le mot clé value-of select que nous encadrons par les balises de mise en forme HTML.

Vous pouvez remarquer que tous les éléments XSL sont préfixés par xsl:, ceci est obligatoire et constitue ce que l'on appelle l'espace de nom ou name-space. Les espaces de nom sont utilisés afin de bien dissocier les différentes syntaxes que l'on peut trouver dans un document XML.

Conclusion

Je ne m'attarderais donc pas plus pour l'instant sur la norme XSL car les spécifications n'étant pas encore achevées tout ce que je pourrai vous décrire aujourd'hui ne sera plus valable demain. En effet, Microsoft Internet Explorer 5.0 étant le seul à implémenter une partie de cette norme s'appuie sur des spécifications ultérieures à celle que l'on connaît actuellement. De plus, XSL est une norme relativement complexe à mettre en oeuvre et assez controversées par les différents acteurs du marché.

Par conséquent, je pense qu'il est encore trop tôt pour utiliser XSL mais qu'il vaut mieux à l'heure actuelle utiliser plutôt XML + CSS qui fonctionnent très bien ensemble et qui sont à peu près conformes aux standards.
De cette manière,  vos documents XML auront toutes les chances de perdurer.

 

© kangoo's 1996 - 2006 - Crédits