<xsl:with-param> |
Définit un paramètre à transmettre à un modèle. Lorsque le modèle est invoqué, il est possible de transmettre des valeurs à ce paramètre.
Catégorie
Subinstruction (<xsl:with-param> apparaît toujours dans un élément <xsl:apply-templates> ou <xsl:call-template>)
Description
<xsl:with-param> définit un paramètre à transmettre à un modèle. Lorsque le modèle est invoqué, il est possible de transmettre des valeurs à ce paramètre. La valeur de ce paramètre peut être définie de l'une des trois manières suivantes : Si l'élément <xsl:with-param> est vide et ne contient pas d'attribut select, aucune valeur n'est alors transmise au modèle. Si l'élément <xsl:with-param> est vide et contient un attribut select, la valeur du paramètre correspond à la valeur de l'attribut select. Si l'élément <xsl:with-param> contient un modèle XSLT, la valeur du paramètre correspond au résultat du traitement du modèle. Si aucune valeur n'est transmise au modèle (<xsl:with-param name="x"/>), la valeur par défaut du paramètre, le cas échéant, est alors utilisée à la place. La valeur par défaut du paramètre est définie dans l'élément <xsl:param> de l'élément <xsl:template> lui-même ; voir la description de l'élément <xsl:param> pour plus de détails.
Attributs obligatoires
name Affecte un nom à ce paramètre.
Attributs facultatifs
select Une expression XPath qui définit la valeur de ce paramètre.
Contenu
L'élément <xsl:with-param> peut être vide, ou bien contenir un modèle XSLT. S'il contient un modèle XSLT, la valeur de l'attribut select (le cas échéant) est ignorée.
Apparaît dans
<xsl:apply-templates> et <xsl:call-template>.
Défini dans
XSLT section 11.6, Transmission de paramètres à des modèles.
Exemple
La feuille de style suivante utilise plusieurs paramètres. Certains paramètres sont globaux et définis en dehors de la feuille de style :
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="text"/>

      <xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
      </xsl:variable>

      <xsl:param name="favoriteNumber" select="23"/>
      <xsl:param name="favoriteColor"/>

      <xsl:template match="/">
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="list/title"/>
        <xsl:value-of select="$newline"/>
        <xsl:variable name="listitems" select="list/listitem"/>
        <xsl:call-template name="processListitems">
          <xsl:with-param name="items" select="$listitems"/>
          <xsl:with-param name="color" select="'yellow'"/>
          <xsl:with-param name="number" select="$favoriteNumber"/>
        </xsl:call-template>
      </xsl:template>

      <xsl:template name="processListitems">
        <xsl:param name="items"/>
        <xsl:param name="color" select="'blue'"/>

        <xsl:for-each select="$items">
          <xsl:value-of select="position()"/>
          <xsl:text>.  </xsl:text>
          <xsl:value-of select="."/>
          <xsl:value-of select="$newline"/>
        </xsl:for-each>

        <xsl:value-of select="$newline"/>

        <xsl:text>Your favorite color is </xsl:text>
        <xsl:value-of select="$favoriteColor"/>
        <xsl:text>.</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>The color passed to this template is </xsl:text>
        <xsl:value-of select="$color"/>
        <xsl:text>.</xsl:text>
        <xsl:value-of select="$newline"/>
      </xsl:template>

    </xsl:stylesheet>
La feuille de style est appliquée au document suivant pour le transformer :
    <?xml version="1.0"?>
    <list xml:lang="en">
      <title>Albums I've bought recently:</title>
      <listitem>The Sacred Art of Dub</listitem>
      <listitem>Only the Poor Man Feel It</listitem>
      <listitem>Excitable Boy</listitem>
      <listitem xml:lang="sw">Aki Special</listitem>
      <listitem xml:lang="en-gb">Combat Rock</listitem>
      <listitem xml:lang="zu">Talking Timbuktu</listitem>
      <listitem xml:lang="jz">The Birth of the Cool</listitem>
    </list>
Cette feuille de style contient deux paramètres globaux, favoriteNumber et favoriteColor, et définit une valeur par défaut pour favoriteNumber. La feuille de style transmet également un paramètre du modèle match="/" au modèle name="processListitems" ; ce paramètre contient un ensemble de nœuds. Les résultats de la transformation sont les suivants :
    Albums I've bought recently:
    1.  The Sacred Art of Dub
    2.  Only the Poor Man Feel It
    3.  Excitable Boy
    4.  Aki Special
    5.  Combat Rock
    6.  Talking Timbuktu
    7.  The Birth of the Cool

    Your favorite color is orange.
    The color passed to this template is yellow.
Pour générer ces résultats avec Xalan, la commande suivante a été utilisée :
    java org.apache.xalan.xslt.Process -in test4.xml -xsl with-param.xsl
      -param favoriteColor orange
La commande doit tenir sur une seule ligne. VoirSection 4.4.3 duchapitre 4 pour des informations plus détaillées sur les paramètres globaux et leur définition pour de nombreux processeurs XSLT.