• Aucun résultat trouvé

XSL signifie Extensible Style Sheet Language. Dans sa version de base, il exploite les balises de HTML (qui ne sont pas si mauvaises que cela après tout !) mais au bénéfice de XML. Il peut aussi utiliser une mise en forme spécifique basée sur les FO (Formatting Objects ou Objets de formatage). En fait XSL est bien plus qu'un langage de feuille de style car il peut

transformer les documents XML (le plus souvent en XHTML) : cette partie s'appelle XSLT

filtrer et trier les données XML : cette partie s'appelle XPath

formater les données XML pour une restitution à l'écran, sur papier,... : cette partie est basée sur les FO

XSL est un standard défini et recommandé par le W3 Consortium. Pour voir les résultats de XSL, il faut employer un navigateur compatible XSL.

Internet Explorer 5 n'est pas totalement compatible avec XSL ; par contre Internet Explorer 6 l'est ; on supposera donc dans la suite que l'on utilise Internet Explorer 6.

Contrairement à CSS, XSL correspond à un fichier qui doit être "inséré" dans un document XML ; c'est pourquoi, on peut considérer le contenu d'un fichier XSL comme un espace de noms. Pour expliquer l'utilisation de XSL, reprenons l'exemple du début du chapitre :

<?xml version="1.0" encoding="ISO-8859-1" ?>

<document>

<question>Bonjour</question>

<reponse>Salut</reponse>

</document>

et ajoutons en deuxième ligne :

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

Le fichier bonjour.xsl aura la physionomie suivante :

Gérard-Michel Cochard

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

<xsl:template match="/">

<h1>

<xsl:value-of select="document/question"/>

</h1>

<h2>

<xsl:value-of select="document/reponse"/>

</h2>

</xsl:template>

</xsl:stylesheet>

La première ligne correspond à la définition correcte (au sens de la conformité avec la recommandation du W3C) d'une feuille de style XML, donc utilisable avec Internet explorer 6. Si on utilise Internet Explorer 5, il faut mettre la ligne suivante :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

Dans l'exemple ci-dessus, nous voyons que les balises de HTML sont ici réutilisées pour des portions de document. Le résultat sera le suivant :

On peut changer la présentation en utilisant le même fichier xml, mais un fichier xsl différents, par exemple bonjour2.xml :

Gérard-Michel Cochard

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

<xsl:template match="/">

<table border="1">

<tr>

<td><font color="green">

<xsl:value-of select="document/question"/>

</font>

</td>

<td><font color="red">

<xsl:value-of select="document/reponse"/>

</font>

</td>

</tr>

</table>

</xsl:template>

</xsl:stylesheet>

Bien entendu, on placera dans le fichier bonjour.xml la ligne suivante :

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

Le résultat sera alors :

Gérard-Michel Cochard

Contrairement à CSS, XSL utilise des modèles (templates) associés à des éléments d'un fichier XML. L'association d'un modèle à un élément s'opère avec la balise <xsl:template> et avec l'attribut "match". Dans l'exemple ci-dessus, la ligne

<xsl:template match="/">

indique que le modèle défini entre les balises "template" s'applique à l'élément racine "/". Les éléments à présenter sont définis à l'aide de la balise <xsl:value-of>

<xsl:value-of select="document/question"/>

L'attribut "select" indique la position de l'élément dans la structure.

L'utilisation de XSL permet de faire un véritable traitement du texte contenu dans un fichier XML. Pour illustrer ces possibilités, reprenons l'exemple des livres vu au chapitre sur CSS et appelons biblio.htm le fichier suivant qui comprend la description de trois ouvrages :

Gérard-Michel Cochard

<?xml version="1.0"?>

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

<bouquins>

<livre>

<numero>123</numero>

<titre>Les Trois Mousquetaires</titre>

<auteur>A.Dumas</auteur>

<editeur>Gallimard</editeur>

<prix>60 Euros</prix>

</livre>

<livre>

<numero>124</numero>

<titre>Les Diaboliques</titre>

<auteur>Boileau</auteur>

<auteur>Narcejac</auteur>

<editeur>Duchnok</editeur>

<prix>78 Euros</prix>

</livre>

<livre>

<numero>125</numero>

<titre>Cinq semaines en ballon</titre>

<auteur>Jules Verne</auteur>

<editeur>Hetzel</editeur>

<prix>inestimable</prix>

</livre>

</bouquins>

Imaginons que nous souhaitions faire la liste des livres avec mention du numéro, des auteurs, du titre, de l'éditeur.

Le fichier XSL, biblio.xsl pourra s'écrire ainis :

Gérard-Michel Cochard

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

<xsl:template match="/">

<table border="1">

<xsl:for-each select="bouquins/livre">

<tr>

<td><xsl:value-of select="numero"/></td>

<td>

<xsl:for-each select="auteur">

<table border="0">

<tr>

<td><xsl:value-of select="."/></td>

</tr>

</table>

</xsl:for-each>

</td>

<td><xsl:value-of select="titre"/></td>

<td><xsl:value-of select="editeur"/></td>

</tr>

</xsl:for-each>

</table>

</xsl:template>

</xsl:stylesheet>

Le résultat, affiché avec Internet Explorer 6 sera :

Gérard-Michel Cochard

On utilise dans l'exemple ci-dessus des boucles, définies par la balise "for-each" :

<xsl:for-each select="nom_de_noeud">

et on notera en particulier l'imbrication des boucles de ce type (qui permet de faire afficher plusieurs auteurs pour le même livre).

Gérard-Michel Cochard

plan_ch3_m5

Gestion de l'information multimédia