Cours sur XSLT Exemple et démonstration, tutoriel & guide de travaux pratiques en pdf.
xsl:param / xsl:with-param
xsl:param fonctionne comme xsl:variable et s’utilise de la même manière et pour les mêmes raisons. Il est juste possible de faire des choses en plus. Ce sont ces points là que nous allons présenter ici. xsl:with-param possède également la même syntaxe. xsl:with-param doit simplement être un sous-élément de xsl:apply-templates. Si ensuite un élément xsl:param est sous-élément de l’élément xsl:template correspondant au xsl:apply-templates précédent (attributs select et match égaux et attributs mode égaux), et si l’attribut name de xsl:param est le même que celui du xsl:with-param, alors le xsl:param aura la même valeur que le xsl:withparam. En résumé, cela revient à passer des paramètres lors de l’appel du modèle. Syntaxe <xsl:apply-templates select=‘mon_elt’> !<xsl:with-param name=‘mon_param’>coucou</xsl:with-param> !<xsl:with-param name=‘mon_param2’ select=‘“coucou”’/> </xsl:apply-templates> … <xsl:template match=‘mon_elt’> !<xsl:param name=‘mon_param’/> !<xsl:value-of select=’$mon_param’/> <—- affiche ‘coucou’ <xsl:value-of select=’$mon_param2’/> <—- affiche ‘coucou’ </xsl:template>
Exemple et démonstration
Les fichiers param_with-param.xsl et disques2.xml montrent l’utilisation de paramètres et des éléments xsl:param et xsl:with-param. L’exemple est divisé en deux parties. Dans la première partie, nous montrons comment passer un paramètre de type chaîne de caractères. Cela peut permettre de passer une valeur qui sera directement utilisée ou qui sera testée via un xsl:if ou un xsl:choose. En particulier, deux méthodes sont présentées, celle qui utilise l’attribut select directement dans l’élément xsl:with-param (A et C), et celle qui utilise un sousélément de xsl:with-param de type texte (B et S). Notez que pour récupérer le paramètre dans le modèle appelé, il faut juste que l’attribut name de xsl:param ait la même valeur que l’attribut name du xsl:with-param correspondant. On utilise le symbole $ pour l’utiliser comme pour un xsl:variable. Notez aussi que si vous voulez utiliser la chaîne de caractères elle-même, il faudra aussi utiliser {$mon_param} comme pour xsl:variable (voir la page sur xsl:variable pour un exemple). Dans la deuxième partie, nous montrons comment passer un paramètre de type ensemble de noeuds. En donnant un motif XPath dans l’attribut select de l’élément xsl:with-param, nous passons ici un ensemble de noeuds qui sera ensuite utilisé dans le modèle appelé. Les deux méthodes sont particulièrement intéressantes pour factoriser votre feuille XSLT et éviter d’écrire plusieurs fois les mêmes modèles à quelques valeurs près. N’hésitez donc pas à en user et à en abuser.