Link Search Menu Expand Document

Introduction à XSLT

Tout au long de ce tutoriel, nous avons découvert de nombreuses technologies régulièrement utilisées en parallèle d’un document XML. Chaque technologie ayant un but très précis : écrire une définition ou encore exploiter les données contenues dans un document XML, par exemple.

Dans cette quatrième partie, nous allons aborder une nouvelle technologie appelée XSLT. Cette technologie va nous permettre de transformer nos documents XML, c’est-à-dire, de créer de nouveaux documents à partir des informations contenues dans un document XML.

Comme d’habitude, nous allons débuter en douceur. Ce premier chapitre a donc pour objectif de faire connaissance avec la technologie qui va nous occuper dans les prochains chapitres.

Qu’est-ce que XSLT ?

La petite histoire du XSLT

XSLT ou eXtensible Stylesheet Language Transformations est une technologie qui permet de transformer les informations d’un document XML vers un autre type de document comme un autre document XML ou encore une page web. C’est d’ailleurs ce dernier cas que nous aborderons au cours de cette partie.

Comme toutes les technologies que nous avons abordé dans ce tutoriel, XSLT est un standard du W3C depuis 1999 pour sa première version et 2007 pour sa seconde version. Comme d’autres technologies que nous avons vu jusqu’ici, les documents XSLT sont écrits à l’aide d’un langage de type XML.

Si XSLT permet de faire les transformations, la technologie s’appuie sur une autre technologie (que nous avons déjà vue ensemble) pour sélectionner des informations à transformer : XPath.

Si vous aviez sauté la partie du tutoriel traitant de XPath ou si vous avez besoin de vous rafraîchir la mémoire, n’hésitez pas à relire la partie 3 du cours ! 😉

Comment ça marche ?

Le principe de fonctionnement est assez simple : un document XSLT est associé à un document XML afin de créer un nouveau document d’une nature différente ou identique.

Principe d'une transformation XSLT

Structure d’un document XSLT

Maintenant que vous en savez un peu plus sur cette nouvelle technologie, je vous propose de débuter en douceur notre apprentissage du XSLT en découvrant ensemble la structure d’un document.

L’extension du fichier

Comme c’était le cas pour les DTD et les schémas XML, nous allons prendre l’habitude d’écrire nos documents XSLT dans un fichier distinct du document XML dont les données seront transformées.

L’extension portée par les documents XSLT est “.xsl”.

Le prologue

Puisque la technologie XSLT utilise un langage de type XML, nous n’allons pas déroger à la règle du prologue.

Ainsi, la première ligne d’un document XSLT est :

<?xml version="1.0" encoding="UTF-8" ?>

Comme vous pouvez le constater, le prologue est identique à ce que nous avons déjà vu pour les documents XML et les schémas XML. Si vous avez besoin de vous rafraîchir la mémoire sur les différents éléments qui composent ce prologue, je vous invite à relire la partie 1 de ce tutoriel traitant du sujet.

Le corps

Le corps d’un fichier XSLT, au même titre qu’un document XML classique est constitué d’un ensemble de balises dont l’élément racine. Comme c’était déjà le cas pour un schéma XML, l’élément racine d’un document XSLT est imposé.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

</xsl:stylesheet>

Comme vous pouvez le constater, l’élément racine est donc <xsl:stylesheet />.

On remarque la présence de deux attributs dans cet élément racine. Le premier est le numéro de version que l’on souhaite utiliser. Dans le cadre de ce tutoriel, c’est la version 1 que nous allons utiliser. Bien qu’une version 2 existe, la première version de XSLT reste encore aujourd’hui majoritairement utilisée.

Le second attribut qui est xmlns:xsl nous permet de déclarer un espace de noms. Une nouvelle fois, si vous n’êtes pas à l’aise avec cette notion, je vous encourage à lire le chapitre dédié aux espaces de noms en annexe de ce tutoriel.

Via la déclaration de cet espace de noms, toutes les balises utilisées dans un document XSLT doivent être préfixées par xsl:.

La balise output

Directement après l’élément racine, nous allons prendre l’habitude de placer l’élément <xsl:output />. Cet élément permet de décrire le document produit à l’issue des différentes transformations. Cet élément prend plusieurs attributs.

L’attribut method

Ce premier attribut permet de préciser le type du document produit à l’issue des transformations. trois valeurs existent :

  • xml si le document à produire est un document XML.
  • html si le document à produire est un document HTML.
  • text si le document à produire est un document texte.

L’attribut encoding

Ce second attribut permet de préciser l’encodage du document produit à l’issue des transformations. Un grand nombre de valeurs existent pour renseigner la valeur de l’attribut encoding :

  • UTF-8.
  • ISO-8859-1.
  • etc.

L’attribut indent

Ce troisième attribut permet d’indiquer si l’on souhaite que le document produit à l’issue des transformations soit indenté ou non. Deux valeurs sont possibles :

  • Yes.
  • No.

Les autres attributs

Deux autres attributs peuvent également être utilisés : doctype-public et doctype-system.

Ces deux attributs sont utilisés dans le cas où l’on souhaite associer un document DTD au document produit par la transformation XSLT.

L’attribut doctype-public permet de renseigner le FPI (Formal Public Identifier), c’est-à-dire l’identifiant public de la DTD.

L’attribut doctype-system, quant à lui, permet de renseigner l’URL de la DTD.

Maintenant que nous avons passé en revue tous les éléments permettant de construire la balise <xsl:output />, je vous propose de voir quelques exemples.

Notre premier exemple nous permet de préciser que l’on souhaite produire un document XML :

<xsl:output 
  method="xml"
  encoding="UTF-8"
  indent="yes" 
/>

Voyons maintenant un exemple nous permettant de produire un document HTML 4 :

<xsl:output 
  method="html"
  encoding="UTF-8"
  doctype-public="-//W3C//DTD HTML 4.01//EN"
  doctype-system="http://www.w3.org/TR/html4/strict.dtd"
  indent="yes" 
/>

Pour résumer

Pour résumer, voici à quoi ressembleront nos documents XSLT :

<!-- le prologue -->
<?xml version="1.0" encoding="UTF-8" ?>

<!-- l'élément racine -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- l'élément output -->
  <xsl:output 
    method="html"
    encoding="UTF-8"
    doctype-public="-//W3C//DTD HTML 4.01//EN"
    doctype-system="http://www.w3.org/TR/html4/strict.dtd"
    indent="yes"
  />

  <!-- reste du document XSLT -->

</xsl:stylesheet>

Référencer un document XSLT

Avant de continuer à étudier la création d’un document XSLT, je vous propose de voir comment référencer une transformation XSLT dans un document XML.

Où et comment référencer un document XSLT ?

Le référencement d’un document XSLT se fait au niveau du document XML dont les informations seront utilisées au cours de la transformation.

Ce référencement se fait via une petite ligne à placer sous le prologue et avant l’élément racine du document XML :

<?xml-stylesheet type="text/xsl" href= "mon_document.xsl" ?>

Comme vous pouvez le voir, cette balise un peu spéciale possède 2 attributs sur lesquels il est intéressant de revenir rapidement.

L’attribut type

Il permet de définir le type du document que nous souhaitons référencer. Dans notre cas, puisqu’il s’agit d’un document XSLT, il convient de renseigner la clef text/xsl.

L’attribut href

Cet attribut, très connu de ceux qui manipulent régulièrement le HTML et ses variantes, permet d’indiquer l’URI du document que l’on souhaite référencer.

Dans mon exemple, il s’agit d’un chemin relatif puisque le document XML et le document XSLT sont situés dans le même dossier.

Pour résumer

Voici à quoi nos fichiers XML ressembleront :

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href= "mon_document.xsl" ?>
<racine>
  <!-- contenu du document XML -->
</racine>

En résumé

  • Un document XSLT est associé à un document XML afin de créer un nouveau document.
  • L’extension portée par les documents XSLT est “.xsl”.
  • Un document XSLT doit être référencé dans le document XML qu’il transforme.

Ce cours vous plait ?

Retrouvez ce cours en livre physique sur Amazon !