5.XSLT

5.3.La feuille XSL

Une feuille XSL est un document XML avec des balises et attributs qui lui sont propres.
Voici un squelette de feuille XSL
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <!-- ici nous pourrons indiquer ce qu'il faut faire lorsque
       l'on va rencontrer la racine du document 
       (en fait avant même de rencontrer la balise racine) -->
    </xsl:template>
</xsl:stylesheet>
La balise racine d'une feuille XSL est nécessairement stylesheet (ou son alias <xsl:transform>). Afin qu'il n'y ait pas de confusion possible avec d'autres balises (balises qui, elles, ne font pas partie du traitement XSL mais que l'on souhaiterait voir dans le document résultat) nous précisons l'espace de nom[C'est quoi?]. L'espace de nom pour XSL étant defini à l'URL suivante "http://www.w3.org/1999/XSL/Transform". Généralement le préfixe choisi est "xsl:" (mais comme vous le savez vous pouvez choisir ce que bon vous semble). Et, enfin, dans un premier temps, nous ne nous intéresserons qu'à la première version "1.0" de XSL. Vous savez donc tout sur la balise racine de la feuille XSL qui vous est proposée ici.
Il convient ensuite d'indiquer quel type de document vous souhaitez générer. Ceci se fait par l'intermédiaire de la balise output et notamment son attribut method.
L'attribut method peut prendre les valeurs suivantes:
  • xml pour générer un autre document XML
  • html pour générer un document HTML
  • text pour générer un simple document texte
  • voire encore une valeur librement choisie mais pour laquelle il n'y a pas de norme (dépendant donc de votre outil de transformation XSL)
Le résultat attendu pour la transformation peut être précisé par l'attribut version. Tout particulièrement utile lors de la génération de document HTML.
De même, le choix de l'encodage[C'est quoi?] du document résultat est important et peut être précisé par l'attribut encoding.
Plus anecdotique mais pas inintéressant il est possible de demander la génération d'un document indenté via l'attribut indent que l'on positionnera à "yes" si l'on veut que l'outil s'occupe de l'indentation du document (XML ou HTML).
La balise output dispose de nombreux autres attributs que (souhaitons le) nous verrons par la suite.
En enfin! Le coeur du sujet. Il y a bien des manières différentes de construire une feuille XSL mais votre document contiendra au moins une balise template (et plus probablement un ensemble de balises de ce type). Cette balise contient un attribut match qui contient un chemin XPath[C'est quoi?]. Le contenu de la balise servira a décrire quelle opération doit être réalisée lorsque le parcours du document XML conduira à rencontrer un noeud correspondant au chemin XPath précisé.

5.4.La transformation XSL

Afin de prendre contact avec ce qu'est véritablement la transformation XSL, nous commencerons par un exemple très basique. Nous allons simplement construire la structure du document HTML.
Pour cela, nous utiliserons la feuille XSL suivante:
Qui retournera le document HTML suivant
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>XML Facile!</title>
</head>
<body>
	    Ma transformation XSL
            </body>
</html>
autrement dit, une page avec un titre et un simple texte "Ma transformation XSL" (bon... pour l'indentation... on repassera).
Ici, le traitement est simple. Nous nous contentons d'écrire du code HTML (là aussi des balises... mais que l'on distingue aisément des balises de traitement XSL grâce à l'emploi des espaces de nom) dès le début de la transformation (et finalement sans tenir compte du contenu du document XML).
Mais je sens que vous ne me croyez pas trop... Vous voulez tester par vous même? Vous avez bien raison. Pour cela différentes options s'offrent à vous:
  • Ecrire un petit bout de code dans votre langage préféré pour faire votre transformation XSL. Peut-être la solution la plus pertinente à moyen terme (celle pour laquelle vous opterez finalement mais ce n'est pas la plus facile donc pas la plus rapide)
  • Utiliser un petit programme en ligne de commande (on optera pour un programme facile à installer)
  • Utiliser votre navigateur préféré (sauf... si ce dernier ne le permet pas) à condition de ne pas oublier d'ajouter la ligne qui va bien à votre document XML. Avant la balise racine du document XML ajoutez l'instruction <?xml-stylesheet type="text/xsl" href="xslt_01.xsl"?>, assurez vous d'avoir le fichier xsl au même endroit que le fichier XML et ouvrez votre document XML avec Firefox ou Internet explorer (Chrome semble plus réfractaire pour d'apparentes sombres raisons de sécurité). Pensez à modifier, dans le document XML, le nom du fichier xsl si vous souhaitez faire différents tests.