Élément <xsl:with-param>
Transmet un paramètre à un modèle.
<xsl:with-param
name = QName
select = Expression
</xsl:with-param>
Attributs
name
Requis. Le Noms qualifiés (XSLT) du paramètre.select
Une Expressions (XSLT) à comparer au contexte actuel. Il n'y a pas de valeur par défaut. En l'absence de contenu, une chaîne vide est générée.
Informations sur les éléments
Nombre d'occurrences |
Illimité |
Éléments parents |
|
Éléments enfants |
xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:for-each, xsl:if, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable |
Notes
L'attribut name est obligatoire. Il spécifie le nom du paramètre. Le paramètre est la variable dont la valeur de la liaison doit être remplacée.
L'élément <xsl:with-param> est autorisé à la fois dans <xsl:call-template> et <xsl:apply-templates>.
La valeur du paramètre est spécifiée de la même manière que pour <xsl:variable> et <xsl:param>.
Le nœud actuel ou la liste de nœuds actuelle utilisée pour calculer la valeur spécifiée par l'élément <xsl:with-param> est identique à celui ou celle utilisée pour l'élément <xsl:apply-templates> ou <xsl:call-template> dans lequel il ou elle figure.
Si vous transmettez un paramètre x à un modèle qui n'a pas d'élément <xsl:param> pour x, cela ne constitue pas une erreur ; le paramètre est simplement ignoré.
Exemple
Une feuille de style peut utiliser l'approche suivante pour appeler des chaînes de message localisées.
Les messages d'une langue langue sont stockés dans un fichier XML, resources/abréviation_langue.xml, sous la forme illustrée dans l'exemple de fichier XML ci-dessous.
Fichier XML (app.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="showlocmsg.xsl" ?>
<showmsg>
<msg23/>
</showmsg>
Fichier de ressources XML (resources/en.xml)
<?xml version='1.0'?>
<messages>
<message name="msg23">Error 23: The drive is full.</message>
<message name="msg42">Error 42: The file is not found.</message>
</messages>
Fichier XSLT (showlocmsg.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- These 2 elements effectively assign
$messages = resources/en.xml/<messages>,
then $messages is used in the "localized-message" template. -->
<xsl:param name="lang">en</xsl:param>
<xsl:variable name="messages"
select="document(concat('resources/', $lang, '.xml'))/messages"/>
<xsl:template name="msg23" match="msg23">
<xsl:call-template name="localized-message">
<xsl:with-param name="msgcode">msg23</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="localized-message">
<xsl:param name="msgcode"/>
<!-- Show message string. -->
<xsl:message terminate="yes">
<xsl:value-of select="$messages/message[@name=$msgcode]"/>
</xsl:message>
</xsl:template>
</xsl:stylesheet>
Sortie
Voici les données en sortie formatées :
Voici les données en sortie du processeur :
<?xml version="1.0" encoding="UTF-16"?>