XML - Transformations avec XSLT (eXtensible StyleSheet Transformation) Sites sur le même sujet Télécharger des documentations

XSLT et XSL/FO

XSL (eXtensible Stylesheet Language) possède deux composantes :

Les template rules (règles de gabarit)

Les template rules sont des balises XSL permettant de définir des opérations à réaliser sur certains éléments du document XML utilisant la page XSL, c'est-à-dire généralement de transformer un tag XML et au moins un tag HTML (généralement plusieurs).

Ainsi le tag XML suivant :

<personne>
<nom>Pillou</nom>
<prenom>Jean-François</prenom>
</personne>

<personne>
<nom>VanHaute</nom>
<prenom>Nico</prenom>
</personne>

<personne>
<nom>Andrieu</nom>
<prenom>Seb</prenom>
</personne>
pourra être transformé en les tags HTML suivants :
<ul>
<li>Pillou - Jean-François</li>
<li>VanHaute - Nico</li>
<li>Andrieu - Seb</li>
</ul>

L'attribut "match" de la balise <xsl:template> permet de définir (grâce à la notation XPath) le ou les éléments du document XML sur lesquels s'applique la transformation.

<xsl:template match="conditions"/>

La notation Xpath permet de définir des patterns, c'est-à-dire des chaînes de caractères permettant de repérer un noeud dans le document XML. Les principaux patterns sont :

Pattern Exemple Signification
Nom toto Sélectionne les éléments par leur nom
Nom[0] toto[0] Sélectionne le premier élément ayant un nom donné (toto[0] sélectionne le premier élément rencontré ayant le nom 'toto')
Nom[end()] toto[end()] Sélectionne le dernier élément ayant un nom donné
| Gauche|Milieu Indique une alternative (un noeud OU bien l'autre (ou les deux))
/ ou Arbre/Feuille /
  • utilisé seul: Définit l'élément de plus haut niveau de l'arborescence (appelé root ou racine en français) ainsi que (de façon implicite) tous ses éléments fils.
  • utilisé entre deux éléments: décrit la localisation d'un élément dans son arborescence (comme pour l'arborescence des répertoires sur un disque - /usr/bin/toto)
* * Motif "joker" désignant n'importe quel élément
// //personne Indique tous les descendants d'un noeud
. . Caract´rise le noeud courant
.. .. Désigne le noeud parent. Permet de remonter d'un niveau dans l'arborescence hiérarchique
@ @nom Indique un attribut caractéristique (@nom décrit l'attribut value). La notation @* désigne tous les attributs d'un élément
text() text() Désigne le contenu d'un élément (le texte contenu entre ses balises)
ID() ID('a2546') Sélectionne l'élément dont l'identifiant (la valeur de l'attribut ID) est celui spécifié en paramètre

La transformation peut être réalisée

Voici un exemple de feuille XSL permettant d'effectuer la transformation XML vers HTML décrite ci-dessus :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">

	<xsl:template match="/">
		<HTML>
        <HEAD>
          <TITLE>Titre de la page</TITLE>
        </HEAD>
        <BODY BGCOLOR="#FFFFFF">
		<xsl:apply-templates/>
		</BODY>
		</HTML>
	</xsl:template >

	<xsl:template match="personne" >
		<ul>
			<li>
			<xsl:value-of select="nom"/>
			-
			<xsl:value-of select="prenom"/>
			</li>
		</ul>
	</xsl:template >

</xsl:stylesheet>
Voici la signification de cette feuille XSL


© Copyright 2001 Jean-François Pillou
Ce document issu de CommentCaMarche.net est soumis à la licence GNU FDL.Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.