Format HTML
Afficher du XSL au format HTML
Principe de base du XSLT
Le XSLT est un langage de balises dérivé du langage XML. Il reprend donc toutes les règles de syntaxe du XML. Un fichier XSLT permet de gérer la présentation du contenu XML.
Même si le XSL ressemble au CSS (qui produit l'affichage du contenu HTML), le XSL ne se subsitue pas au CSS car nous verrons que, dans le cas d'un affichage sur le Web, ce dernier garde toute son importance.
Un fichier XML de base est nécéssaire pour pouvoir tester notre futur fichier XSL. Étant donné que ce fichier XML doit être "well-formed", nous n'avons pas besoins de creer le fichier DTD. Note: L'exemple ci-dessous contient déjà l'appel au fichier XSL externe.
Voici donc le fichier xml "macompile.xml" à copier/coller dans le bloc-notes:
<?xml version="1.0"?>
<!DOCTYPE macompile SYSTEM "macompile.dtd">
<?xml-stylesheet type="text/xsl" href="macompile.xsl"?>
<macompile>
<mp3>
<titre>La Berlue</titre>
<artiste>Edgar de l'est</artiste>
</mp3>
<mp3>
<titre>One more day</titre>
<artiste>Tsunami's Band</artiste>
</mp3>
<mp3>
<titre>Quelqu'un m'a dit</titre>
<artiste>Carla Bruni</artiste>
</mp3>
<mp3>
<titre>Andy</titre>
<artiste>Rita Mitsouko</artiste>
</mp3>
</macompile>
<!DOCTYPE macompile SYSTEM "macompile.dtd">
<?xml-stylesheet type="text/xsl" href="macompile.xsl"?>
<macompile>
<mp3>
<titre>La Berlue</titre>
<artiste>Edgar de l'est</artiste>
</mp3>
<mp3>
<titre>One more day</titre>
<artiste>Tsunami's Band</artiste>
</mp3>
<mp3>
<titre>Quelqu'un m'a dit</titre>
<artiste>Carla Bruni</artiste>
</mp3>
<mp3>
<titre>Andy</titre>
<artiste>Rita Mitsouko</artiste>
</mp3>
</macompile>
Vous l'avez compris, il s'agit tous simplement d'une superbe discographie :-)
Après la déclaration <?xml version="1.0"?> apparait l'appel du fichier XSL:
<?xml-stylesheet type="text/xsl" href="macompile.xsl"?>. Toute les autres balises ont été inventées. Seul l'ordre d'ouverture et de fermeture des balises est à bien respecter (dans well-formed il y a well!).
Le XSLT est basé sur des sélections d'objets auquels on applique une transformation (xsl:template) sous une forme que le navigateur pourra afficher. On utilise le mot templates pour "objets typés" soit un modèle. Les éléments du fichier XML sont déterminés par l'attribut match="/" qui fait référence à la racine du document.
Créer un fichier XLST pour le format HTML
Voici donc le fichier XSLT, "macompile.xsl" à recopier
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output
method="html"
encoding="ISO-8859-1"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
indent="yes" />
<xsl:template match="macompile">
<html><body>
<table border="1" cellspacing="0" cellpadding="3">
<tr bgcolor="#ffffcc">
<td>Titre</td>
<td>Artiste</td>
</tr>
<xsl:apply-templates />
</table>
</body></html>
</xsl:template>
<xsl:template match="mp3">
<tr><xsl:apply-templates /></tr>
</xsl:template>
<xsl:template match="titre">
<td><xsl:value-of select="."/></td>
</xsl:template>
<xsl:template match="artiste">
<td><xsl:value-of select="."/></td>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output
method="html"
encoding="ISO-8859-1"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
indent="yes" />
<xsl:template match="macompile">
<html><body>
<table border="1" cellspacing="0" cellpadding="3">
<tr bgcolor="#ffffcc">
<td>Titre</td>
<td>Artiste</td>
</tr>
<xsl:apply-templates />
</table>
</body></html>
</xsl:template>
<xsl:template match="mp3">
<tr><xsl:apply-templates /></tr>
</xsl:template>
<xsl:template match="titre">
<td><xsl:value-of select="."/></td>
</xsl:template>
<xsl:template match="artiste">
<td><xsl:value-of select="."/></td>
</xsl:template>
</xsl:stylesheet>
• La balise "xsl:output" indique le format de sortie (ici HTML).
• La balise "xsl:template" est une fonction XSLT qui va être appelée chaque fois que la balise mp3 est rencontrée. On appelle cela un modèle (template).
• La balise "xsl:apply-templates" est une autre fonction XSLT qui "appelle" les autres modèles enfants. Cela signifie "appliquer le modèle subordonné défini ci-dessous".
• La balise "xsl:value-of" permet de lire le contenu des modèles (. étant le chemin courant = le noeud courant de l'arbre XML). On pourrait lire le contenu d'un attribut de balise (nommé par exemple "prix") comme ceci: <xsl:value-of select="@prix"/>
Comme ceci :
<xsl:template match="artiste">
<td><xsl:value-of select="."/></td>
<td><xsl:value-of select="@pays"/></td>
</xsl:template>
Note : Attention au cache d'IE : il doit être redémmaré après un affichage de fichier XSL tronqué.
Sous Chrome, pour aficher le fichier XML avec son XSL, voir l'option en ligne de commande: clic droit sur le raccourci Chrome du bureaux , Propriétés, Onglet raccourci, Cible. Dans le champ Cilble, rajouter au bout de l'adesse (après un espace), la commande
--allow-file-access-from-files