<xsl:with-param> |
Diese Anweisung definiert einen Parameter, der an die Vorlage (Template) weitergeleitet wird. Sobald die Vorlage aufgerufen ist, können Werte für den Parameter übergeben werden.
Kategorie
Untergeordnete Anweisung (<xsl:with-param> erscheint im Element <xsl:apply-templates> oder im Element <xsl:call-template>)
Beschreibung
Die Anweisung <xsl:with-param> definiert einen Parameter, der an die Vorlage weitergeleitet wird. Wenn die Vorlage aufgerufen ist, können Werte für den Parameter übergeben werden. Es gibt drei Methoden, um den Wert des Parameters zu definieren: Ist das Element <xsl:with-param> leer und enthält auch kein select-Attribut, wird kein Wert an die Vorlage weitergeleitet. Ist das Element <xsl:with-param> leer, besitzt aber ein select-Attribut, so entspricht der Wert des Parameters dem Wert des Attributs select. Enthält das Element <xsl:with-param> eine XSLT-Vorlage, so ist der Wert des Parameters das Ergebnis der Vorlagenverarbeitung. Wird an die Vorlage (<xsl:with-param name="x"/>) kein Wert übergeben, wird, falls vorhanden, der Vorgabewert des Parameters verwendet. Der Vorgabewert des Parameters wird über das Element <xsl:param> innerhalb von <xsl:template> definiert. Weitere Erläuterungen hierzu erhalten Sie in der Beschreibung des Elements <xsl:param>.
Obligatorische Attribute
name Der Name für diesen Parameter.
Optionale Attribute
select Ein XPath-Ausdruck, der den Wert dieses Parameters definiert.
Inhalt
Das Element <xsl:with-param> kann leer sein oder eine XSLT-Vorlage enthalten. Enthält es eine XSLT-Vorlage, wird der Wert des Attributs select ignoriert.
Übergeordnete Elemente
<xsl:apply-templates> und <xsl:call-template>
Definition
XSLT-Abschnitt 11.6, Parameterübergabe an Templates
Beispiel
Es folgt ein Stylesheet mit einer Reihe von Parametern. Beachten Sie, dass einige Parameter global sind und außerhalb des Stylesheets definiert wurden:
    <?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>
Zur Umwandlung dieses Dokuments wird das folgende Stylesheet verwendet:
    <?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>
Dieses Stylesheet enthält zwei globale Parameter, favoriteNumber und favoriteColor, und definiert einen Vorgabewert für favoriteNumber. Das Stylesheet leitet auch einen Parameter von der Vorlage match="/" an die Vorlage name="processListitems" weiter, der eine Knotenmenge enthält. Hier die Ergebnisse der Transformation:
    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.
Um mit Xalan diese Ergebnisse zu erzielen, verwenden Sie den folgenden Befehl:
    java org.apache.xalan.xslt.Process -in test4.xml -xsl with-param.xsl
      -param favoriteColor orange
Der Befehl sollte in einer Zeile erscheinen. Im Abschnitt 4.4.3 in Kapitel 4 finden Sie eine vollständige Erläuterung globaler Parameter und wie Sie diese für verschiedene XSLT-Prozessoren definieren.