3. Un peu d'explications

3.1. Comprendre le XSLT...

Une feuille de style XSLT est donc un fichier XML comme vous le voyez à sa forme, et à sa première ligne. Ligne 2 à 10, peu d'explications à donner: nous indiquons que nous avons une feuille de style XSLT, et que la sortie sera du html, avec quelques options que vous pouvez lire. Par ailleurs, comme vous allez le voir, je vais beaucoup parler de XPath sans trop dire le pourquoi du comment. XPath est un langage d'identification des données particulières (comprendre: des éléments, des attributs...) du langage XML. Un peu ce que le SQL est aux bases utilisant ce langage pour leurs requêtes. Je vous présente cela dans l'article sur XPath (cela tombe bien!) dans le présent magazine.

Et c'est maintenant que tout commence. Le processeur xslt lit le fichier xml à la recherche du noeud racine, qui est body dans notre cas, afin d'y appliquer le modèle qui lui correspond, et s'il ne le trouve pas, il lui applique le modèle par défaut:

1 <xsl:template match="*">
2   <xsl:value-of select=".">
3   <xsl:apply-templates select="*"/>
4 </xsl:template>

Dans notre cas, il trouve le dernier modèle qui revient à peu près au même, mais qui est plus généraliste car il tient aussi compte des attributs. Le résultat est qu'il va ensuite chercher à appliquer les modèles aux noeuds fils. Un modèle se définit ainsi: <xsl: template match='chemin XPATH ici'>. Le processeur repère grâce au chemin XPATH si le noeud correspond, et si oui, il applique ce qui suit. Sinon, il passe au modèle suivant. La fin d'un modèle est évidemment la balise XML fermante, donc </xsl:template> dans notre cas.

Appliquer ce qui suit, dans un modèle, consiste à interpréter les directives XSLT (les éléments appartenant à l'espace de nom xsl) et à recopier le reste, à savoir ce qui ne fait pas partie de l'espace de nom de XSLT.

3.2. Qu'a fait le processeur XSLT au juste ?

Reprenons ce que fait le processeur XSLT pas à pas. Jusqu'à la ligne 10, il s'initialise, créant le format de sortie. Puis il lit le fichier xml, noeud par noeud. Le premier est <body>. Cet élément correspond au chemin /body Donc ce modèle est appliqué:

On commence par écrire la balise <html> sinon personne ne le fera à notre place. Puis vient un commentaire, lignes 14 à 24.

Lignes 25 à 28, nous recopions tout ce qui concerne l'en-tête du code html qui sera produit. Vous repérez que ligne 27, le titre est non pas codé en dur, mais est en fait le contenu du premier élément h1 fils de body. Ici encore, je reviendrai sur cette syntaxe dans l'article sur XPATH.

Ligne 29 à 31, c'est le tour de la partie body du document html résultant: ligne 30, nous demandons au processeur XSLT de traiter les noeuds fils.

Ici, les noeuds fils sont <h1>, puis <p> qui contient lui-même <b>. Ces noeuds n'ont pas de modèle particulier et c'est notre modèle générique lignes 35 à 39 qui s'applique.

Ce modèle générique, lignes 35 à 39, est un peu l'étoile des expression rationnelles. En effet, il correspond à tous les éléments et attributs, et traite tous les noeux fils après être passé en "mode copie" ligne 36.

Nous avions un cas simple. Nous allons maintenant le compliquer pour le rendre plus attrayant!

création est mise à disposition sous un contrat Creative Commons