Cours principe du langage XSLT, tutoriel & guide de travaux pratiques en pdf.
Principe de XSLT
La version 2.0 de XSLT a introduit un certain nombre d’évolutions par rapport à la version 1.0. La première évolution est l’utilisation de XPath 2.0 à la place de XPath 1.0. La seconde évolution importante est la possibilité de traiter un document validé au préalable par un schéma XML.
L’intérêt de cette validation est d’associer un type à chaque contenu d’élément et 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 pas nécessaire pour utiliser XSLT 2.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é par schematron pour réaliser une validation en plusieurs phases.
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
Élément racine xsl:stylesheet de la feuille de style.
Fragment de document XHTML retourné par la règle.
Cette feuille de style 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.L’entête XML du résultat à été automatiquement mise par le processeur XSLT. Comme le codage du document résultat n’est pas spécifié par la feuille de style, c’est le codage par défaut de XML qui a été choisi. Le processeur a inséré la déclaration de l’espace de noms XHTML dans l’élément racine html du document. Le processeur a également ajouté l’élément meta propre à HTML pour préciser le codage des caractères.
Modèle de traitement
Le document XML source est transformé en un document XML résultat obtenu en appliquant les règles de la feuille de style à des nœuds du document source. Chaque application de règle à un nœud produit un fragment de document XML. Tous ces fragments sont assemblés pour former le document résultat.
Chaque fragment produit par l’application d’une règle est une suite de nœuds représentant des éléments, des attributs, des instructions de traitement et des commentaires. Il s’agit le plus souvent d’une suite d’éléments ou d’attributs. Lors de l’assemblage des fragments, ces nœuds viennent s’insérer à l’intérieur d’un autre fragment.
Chaque règle est déclarée par un élément xsl:template. Le contenu de cet élément est le fragment de document qui est produit par l’application de cette règle. Ce contenu contient des éléments de l’espace de noms XSLT et des éléments d’autres espaces de noms. Ces derniers éléments sont recopiés à l’identique pour former le fragment. Les éléments de XSLT sont des instructions qui sont exécutées par le processeur XSLT. Ces éléments sont remplacés dans le fragment par le résultat de leur exécution. L’élément essentiel est l’élément xsl:apply-templates qui permet d’invoquer l’application d’autres règles. Les fragments de document produits par ces applications de règles remplacent l’élément xsl:apply-templates. L’endroit où se trouve l’élément xsl:apply-templates constitue donc le point d’ancrage pour l’insertion du ou des fragments produits par son exécution.