Visualiser son document
XML grâce à XSLT
Niveau 1
YAO JY Aristide
Objectifs pédagogiques :
• Définir XSLT
• Lister toutes les technologies sous-jacentes à XSLT
• Ecrire un fichier XSLT pour visualiser un document XML
• Réaliser des conditions sur les données à afficher
• Réaliser des itérations pour afficher un ensemble de données
Table des matières
1. INTRODUCTION ............................................................................................................ 3
1.1. Les langages dérivés de XSL ................................................................................... 3
1.2. Qu’est-ce que XSLT ?................................................................................................ 3
1.3. Comment fonctionne la transformation ? ............................................................. 4
2. APPLIQUER LA TRANSFORMATION XSLT ............................................................ 4
2.1. L’élément <xsl:template> ......................................................................................... 5
2.2. L’élément <xsl:value-of> .......................................................................................... 7
2.3. L’élément <xsl:for-each> .......................................................................................... 9
2.4. L’élément <xsl:sort> ................................................................................................ 11
2.5. L’élément <xsl:if> .................................................................................................... 13
1. INTRODUCTION
Un document XML permet de représenter les données, mais ces données ne peuvent
pas être directement visualisées dans un navigateur ou un document PDF. Pour ce
faire, il est nécessaire de transformer le document XML en un format de visualisation
adapté. L'utilité principale de XML réside dans sa capacité à partager des données
entre plusieurs applications en offrant un format standardisé de représentation des
informations.
Pour visualiser un document XML dans un navigateur, il existe des langages de
transformation spécifiques. Dans ce cours, nous étudierons la technologie XSLT
(Extensible Stylesheet Language Transformations), qui nous permettra de convertir
des documents XML en formats visualisables.
1.1. Les langages dérivés de XSL
XSL signifie eXtensible Stylesheet Language, ou langage extensible de feuille de style.
Cette abréviation recouvre en fait trois langages :
• XPath désigne un moyen d'accéder à un nœud quelconque de l'arborescence
d'un document XML.
• XSLT signifie eXtensible Stylesheet Language Transformation et permet de
transformer un document XML en un autre document XML.
• XSL-FO signifie eXtensible Stylesheet Language - Formating Objects, et désigne
un langage permettant le contrôle de la mise en page finale de la transformation.
Ce langage est particulièrement destiné à la production de contenus au format
PDF (abandonné en 2013).
• XQuery permet de faire des requêtes sur un document XML
Dans le cadre d'une chaîne de production de contenu, il s'agit de transformer un
document XML en un autre document XML. Ce cours se limite donc à l'utilisation de
XSLT qui permettra d’afficher les données d’un document XML sous forme de
document HTML.
1.2. Qu’est-ce que XSLT ?
C’est la technologie la plus importante de XSL, elle permet de transformer un
document XML en un autre document XML (HTML ou XHTML par exemple). Elle
utilise XPath pour naviguer (accéder aux données) dans un document XML et c’est
une recommandation du W3C pour la publication de document XML.
Normalement XSLT transforme un document XML en (X)HTML en transformant
chaque élément XML en élément (X)HTML
Avec XSLT, il est possible de :
• Ajouter/supprimer des éléments et attributs vers ou depuis le fichier de sortie
• Réorganiser et trier les éléments
• Effectuer des tests et prendre des décisions sur les éléments à afficher et à
cacher, et bien d’autre choses.
XSLT utilise XPath pour trouver des informations dans un document XML. XPath est
utilisé pour naviguer à travers les éléments et les attributs dans un document XML.
1.3. Comment fonctionne la transformation ?
Dans le processus de transformation, XSLT utilise XPath pour définir les parties du
document source qui doivent correspondre à un ou plusieurs modèles prédéfinis.
Lorsqu'une correspondance est trouvée, XSLT transforme la partie correspondante du
document source dans le document transformé.
2. APPLIQUER LA TRANSFORMATION XSLT
Considérons le document XML « catalog » suivant qui liste un ensemble de CD d’un
catalogue
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
</catalog>
On voudrait visualiser ces données dans un tableau HTML. Comment procède-t-on ?
2.1. L’élément <xsl:template>
L’élément <xsl:template> est utilisé pour créer des templates. Il possède un
attribut « match » qui permet d’associer un template à un element XML. Cet attribut
peut être aussi utilisé pour définir un template pour le document XML tout entier.
La valeur de l'attribut match est une expression XPath (par exemple : match="/"
définit un template pour l'ensemble du document).
Le code suivant présente une esquisse de solution d’affichage HTML pour le
document XML « catalog »
XSLT Rendu HTML
Un document XSL, étant un document XML, commence toujours par la déclaration du
prologue (ligne 1). L'élément à la ligne 2, xsl:stylesheet, est l'élément racine qui
déclare le document comme étant un document XSL. Cet élément racine peut être soit
xsl:stylesheet, soit xsl:transform. Il comporte un argument xmlns qui définit
le namespace (xmlns:xsl="[Link] où seront
retrouvées toutes les commandes XSL (éléments et attributs) utilisées. Si l'on utilise la
valeur du namespace fournie dans le code ci-dessous, il est nécessaire de spécifier un
autre attribut pour l'élément racine, à savoir la version, qui doit être définie à "1.0".
L’attribut « match="/" » associe le template à la racine du document XML source
(catalog, dans notre exemple).
Pour obtenir le rendu HTML, il faut ajouter après le prologue du document XML
« catalog » l’instruction :
<?xml-stylesheet type="text/xsl" href="[Link]"?>
REMARQUE : Le fichier XSL contient du code HTML. C'est parce que le format de
publication choisi est du HTML. Cela permet de transformer les données XML en une
page web visualisable par un navigateur.
2.2. L’élément <xsl:value-of>
Cet élément est utilisé récupérer la valeur d’un élément donné dans un document XML
et l’afficher sur le flux de sortie de la transformation (HTML dans notre cas)
XSLT Rendu HTML
L’attribut select de l’élément xsl:value-of, contient une expression XPath. Une
expression XPath permet de naviguer au sein d’un document XML. L’expression «
catalog / » permet de sélectionner l’élément catalog du document XML,
l’expression « catalog/cd/ » permet de sélectionner le sous-élément cd de l’élément
catalog, et l’expression « catalog/cd/title » permet de sélectionner le sous-
élément title du sous-élément cd de l’élément catalog.
Une expression XPath fonctionne comme le système de navigation d’un système de
fichier ou le symbole slash (/) permet de sélectionner un sous-répertoire. Sur le résultat,
précédent, seulement les informations du premier CD sont récupérées. Pour récupérer
les autres élément CD, il faut utiliser l’élément xsl:for-each
2.3. L’élément <xsl:for-each>
Cet élément est utilisé pour sélectionner chaque élément XML d’un ensemble de nœud
spécifié.
XSLT Rendu HTML
2.4. L’élément <xsl:sort>
Cet élément permet de trier une liste selon l’élément qui est fourni à son attribut select.
Il est un sous-élément de l’élément xsl:for-each. Dans ce cas, il est réalisé un tri
par pays.
XSLT Rendu HTML
2.5. L’élément <xsl:if>
L'élément <xsl:if> dans XSLT permet de réaliser des tests conditionnels, similaires
à ceux que l'on trouve dans des langages de programmation classiques comme Python,
Java, ou C. Pour n'afficher que les CD des artistes provenant des USA, vous devez
écrire une condition XPath qui sera la valeur de l'attribut test de l'élément
<xsl:if>. Le tableau suivant donne les différentes opérations et conditions qu’on
peut réaliser avec XPath.
XSLT Rendu HTML