Language XSL

Syntaxe
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output • method=
• encoding=
• indent=
text, html, xml
jeu de caractères
yes ou no





fonctions
<xsl:text [disable-output-escaping="yes"]> </xsl:text > avec l'option génère intégralement le texte produit entre les crochets
<xsl:value-of select="@naissance"/> affiche la valeur de l'attribut
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
Récursivité sur les éléments : applique les template pour les nœuds fils de la racine et de chaque élément.
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>
Affichage du texte des éléments et des valeurs d'attributs
<xsl:template match="processing-instruction() |comment()"/> ignore les commentaires et les processing-instructions
<xsl:strip-space elements="book"/> L'instruction strip-space permet de préciser, pour un type d'élément donné, d'ignorer les éléments text vides.
<xsl:preserve-space elements="truc"/> L'instruction preserve-space permet de préciser, pour un type d'élément donné, les élèments à ne pas ignorer.
<xsl:for-each select="pattern"> une boucle for eatch locale <xsl:for-each select="groupes/groupe">
<tr>
<td><xsl:value-of select="nom"/></td>
<td><xsl:value-of select="guitare"/></td>
</tr>
</xsl:for-each>
<xsl:if test="pattern"> transformations </xsl:if> <xsl:template match="groupe">
<xsl:if test="nom = 'The Police' ">
<xsl:text>Actu : le groupe </xsl:text>
<xsl:value-of select="./nom"/>
<xsl:text> se reforme !!!</xsl:text>
</xsl:if>
</xsl:template>
<xsl:choose> plusieurs transformations xsl:when [transformation xsl:otherwise] </xsl:choose>
<xsl:when test="prédicat"> transformations </xsl:when>
<xsl:otherwise> transformations </xsl:otherwise>
Les transformations xsl:when ou xsl:otherwise s'appliquent au même noeud courant. Dès qu'une transformation xsl:when ou une transformation xsl:otherwise s'applique, la transformation xsl:choose se termine. <xsl:template match="groupe">
<xsl:choose>
<xsl:when test="nom = 'The Police' ">
<xsl:text>Actu : le groupe </xsl:text>
<xsl:value-of select="./nom"/>
<xsl:text> se reforme !!!</xsl:text>

<br> </xsl:when>
<xsl:otherwise>
<xsl:text>Hélas le groupe </xsl:text>
<xsl:value-of select="nom"/>
<xsl:text> n'est plus.</xsl:text>

<br> </xsl:otherwise>
</xsl:choose>
<xsl:number [value='pattern'][level="single|multiple|any"][count="pattern"] [format="chaine"] [from='pattern']/> Insère en "output" un numéro pour le nœud courant
<xsl:sort [select="pattern"] [data-type="text|number"] [order="ascending| descending"]/> xsl:sort doit figurer juste après xsl:apply-templates ou xsl:for-each ou xsl:sort. Le tri s'effectue sur les valeurs du pattern spécifié. Peuvent être précisés : ordre lexicographique (par défaut) ou numérique, ordre ascendant (par défaut) ou descendant. Si l'on souhaite effectuer un ordre numérique, mentionnez data-type=''number'' en attribut.
<xsl:call-template name="hello"/> appel d'un template défini <xsl:template name="hello"> Hello world ! </xsl:template>
<xsl:with-param> La valeur de l'attribut name de doit correspondre à la valeur de l'attribut name d'un élément dans le template appelé ( autrement l'élément en question est tout simplement ignoré) . <xsl:template match="/">
<html>
<body>
<xsl:for-each select="catalog/cd>
<xsl:call-template name="show_title">
<xsl:with-param name="title" select = "title" />
</xsl:call-template>
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template name = "show_title" >
<xsl:param name = "title" />
<p>Title: <xsl:value-of select = "$title" /></p>
</xsl:template>
<xsl:variable name="couleur" select="'rouge'" /> L'utilisation des quotes à l'intérieur des guillemets, pour décrire la valeur de l'attribut est select, est importante. En effet la valeur de l'attribut select est une expression XPath : pour spécifier que la valeur est une chaîne et non un chemin de localisation, on doit donc soit utiliser des quotes à l'intérieur de guillemets ou des guillemets à l'intérieur des quotes. <xsl:variable name="header">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
</xsl:variable>
<xsl:template match="/">
<html>
<body>
<table border="1">
<xsl:copy-of select="$header" />
<xsl:for-each select="catalog/cd">