Partager via


É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

xsl:apply-templates, xsl:call-template

É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 :

Résultat de l'exemple

Voici les données en sortie du processeur :

<?xml version="1.0" encoding="UTF-16"?>

Voir aussi

Référence

Élément <xsl:call-template>

Élément <xsl:variable>

Élément <xsl:param>

Élément <xsl:template>