Cours XSL : Fonctions, variables globales et locales
Chapitre 8. XSLT
Le langage XSL (pour XML Stylesheet Language) a été conçu pour transformer des documents XML en d'autres formats comme PDF ou des pages HTML. Au cours de son développement, le projet s'est avéré plus complexe que prévu et il a été scindé en deux unités distinctes XSLT et XSLFO. Le langage XSLT (pour XML Stylesheet Language Transformation) est un langage de transformation de documents XML. Le langage XSL-FO (pour XML Stylesheet Language - Formatting Objets) est un langage de mise en page de document. Le processus de transformation d'un document XML en un document imprimable, au format PDF par exemple, est donc découpé en deux phases. Dans la première phase, le document XML est transformé en un document XSL-FO à l'aide de feuilles de style XSLT. Dans la seconde phase, le document FO obtenu à la première phase est converti par un processeur FO en un document imprimable.
Même si le langage XSLT puise son origine dans la transformation de documents XML en document XSL-FO, il est adapté à la transformation d'un document de n'importe quel dialecte XML dans un document de n'importe quel autre dialecte XML. Il est souvent utilisé pour produire des documents XSL-FO ou XHTML mais il peut aussi produire des documents SVG. Le langage XSLT est aussi souvent utilisé pour réaliser des transformations simples sur des documents. Il s'agit, par exemple, de supprimer certains éléments, de remplacer un attribut par un élément ou de déplacer un éléments.
Ce chapitre est consacré à la partie XSLT de XSL. Comme l'ensemble de cet ouvrage, il est essentiellement basé sur des exemples disponibles à l'URL
8.1. Principe
Le principe de fonctionnent de XSLT est le suivant. Une feuille de style XSLT contient des règles qui décrivent des transformations. Ces règles sont appliquées à un document source XML pour obtenir un nouveau document XML résultat. Cette transformation est réalisée par un programme appelé processeur XSLT. La feuille de style est aussi appelée programme dans la mesure où il s'agit des instructions à exécuter par le processeur.
Figure 8.1. Principe de XSLT
La version 2.0 de XSLT a introduit un certain nombre d'évolutions par rapport à la version 1.0. Une première évolution importante est l'utilisation deXPath2.0à la place de XPath 1.0. Une seconde évolution importante est la possibilité de traiter un document validé au préalable par unschéma XML.
L'intérêt de cette validation est d'associer un type à chaque contenu d'élément et à chaque valeur d'attribut. Si le type d'un attribut est, par exemple, xsd:integer et que sa valeur 123, celle-ci est interprétée comme un entier et non comme une chaîne de caractères à la manière de XSLT 1.0. La validation par un schéma n'est cependant pas nécessaire pour utiliser XSLT 2.0 et profiter des évolutions par rapport à XSLT 1.0. Il existe donc deux façons de traiter un document avec XSLT 2.0, soit sans schéma soit avec schéma. La première façon correspond au fonctionnement de XSLT 1.0. La seconde façon prend en compte les types associés aux nœuds par la validation.
Pour la version 1.0 de XSLT, il existe plusieurs processeurs libres dont le plus répandu est xsltproc. Il est très souvent déjà installé sur les machines car il fait partie de la librairie standard libxslt. En revanche, il n'implémente que la version 1.0 de la norme avec quelques extensions. Le logiciel saxon implémente la XSLT 2.0 mais la version gratuite n'implémente que le traitement sans schéma. Il n'existe pas actuellement de processeur libre implémentant le traitement avec schéma. Pour cette raison, ce chapitre se concentre sur le traitement sans schéma même si l'essentiel reste encore valable dans le traitement avec schéma.
Le langage XSLT est un dialecte XML. Ceci signifie qu'une feuille de style XSLT est un document XML qui peut lui-même être manipulé ou produit par d'autres feuilles de style. Cette possibilité est d'ailleurs exploité parschematronpour réaliser une validation en plusieurs phases.
8.2. Premier programme :Hello, World!
On commence par la feuille de style XSLT la plus simple. Cette-ci se contente de produire un document XHTML affichant le message Hello World! dans un titre. Cette feuille de style a donc la particularité de produire un document indépendant du document source.
Hello World!
Hello world!
|
Élément racine xsl:stylesheet de la feuille de style.
Déclaration de l'espace de noms XSLT associé au préfixe xsl.
Déclaration de l'espace de noms XHTML comme espace de noms par défaut.
Définition d'une règle s'appliquant à la racine '/' du document source. Fragment de document XHTML retourné par la règle.
La feuille de style est contenue dans l'élément racine xsl:stylesheet. Elle est constituée d'une seule règle introduite par l'élement xsl:template dont l'attribut match précise que cette règle s'applique à la racine du document source. L'élément xsl:template contient le document XHTML produit. En appliquant ce programme à n'importe quel document XML, on obtient le résultat suivant qui est un document XHTML valide.
Hello World!
Hello world!
|