<xsl:param>-Element

Deklariert einen benannten Parameter, der in einem <xsl:stylesheet>-Element oder in einem <xsl:template>-Element verwendet werden soll. Ermöglicht das Angeben eines Standardwerts.

<xsl:param
  name = QName
  select = Expression
</xsl:param>

Attribute

  • Name
    Erforderlich. Gibt den Qualifizierte Namen (XSLT) des Parameters an.

  • select
    Der Wert des Attributs ist ein Ausdrücke (XSLT), und der Wert der Variablen ist das Objekt, das sich aus der Auswertung des Ausdrucks ergibt. Wenn dieses Attribut angegeben wurde, muss das <xsl:param>-Element leer sein.

Elementinformationen

Anzahl der Vorkommen

Unbegrenzt

Übergeordnete Elemente

xsl:stylesheet, xsl:template, xsl:transform

Untergeordnete Elemente

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, Ausgabeelemente

Hinweise

Der für das <xsl:param>-Element angegebene Wert ist ein Standardwert für die Bindung. Wenn die Vorlage oder das Stylesheet aufgerufen wird, in der bzw. in dem <xsl:param> enthalten ist, werden Parameter übergeben, die anstelle der Standardwerte verwendet werden.

Das <xsl:param>-Element muss als direkt untergeordnetes Element eines <xsl:template>-Elements deklariert werden. Wenn es nicht als direkt untergeordnetes Element deklariert wird, kann auf den Wert des <xsl:param> -Elements nicht zugegriffen werden, und es tritt ein Fehler auf. Beispiel:

<xsl:template name="getcount">
   <xsl:element name="strong">
      <xsl:param name="counted">
         <xsl:value-of select="count(//book)"/>
      </xsl:param>
      Total Book Count: <xsl:value-of select="$counted"/>
   </xsl:element>
</xsl:template>

Im vorigen Beispiel ist das einzige direkt untergeordnete Element des <xsl:template>-Elements das <strong>-Element. Deswegen kann der Wert des <xsl:param>-Elements nicht korrekt vom Parser ausgewertet werden und führt zu folgendem Fehler:

Hinweis

Das Schlüsselwort xsl:param wird hier möglicherweise nicht verwendet.

Damit das Element im Kontext des <xsl:template>-Elements ausgewertet werden kann, muss dieses Element folgendermaßen platziert werden:

<xsl:template name="getcount">
   <xsl:param name="counted">
      <xsl:value-of select="count(//book)"/>
   </xsl:param>
   <xsl:element name="strong">
      Total Book Count: <xsl:value-of select="$counted"/>
   </xsl:element>

Der Wert des Parameters kann ein Objekt beliebigen Typs sein, der durch einen Ausdruck zurückgegeben werden kann. Es gibt drei Möglichkeiten, um mithilfe des <xsl:param>-Elements den Wert der Variablen anzugeben:

  • Wenn das Element über ein select-Attribut verfügt, muss der Wert des Attributs ein Ausdruck sein. Der Wert des Parameters ist das Objekt, das sich aus der Auswertung des Ausdrucks ergibt. In diesem Fall muss der Inhalt des Elements leer sein.

  • Wenn das Element kein select-Attribut aufweist und der Inhalt nicht leer ist, d. h. ein oder mehr untergeordnete Knoten enthält, gibt der Inhalt den Wert an. Der Inhalt ist eine Vorlage, die instanziiert wird, um den Wert des Parameters zu liefern. Der Wert ist ein Äquivalent des Ergebnisstrukturfragments für eine Knotengruppe, die nur einen einzigen Stammknoten enthält und als untergeordnete Elemente die Folge von Knoten aufweist, die beim Instanziieren der Vorlage generiert wurden. Der Basis-URI der Knoten im Ergebnisstrukturfragment ist der Basis-URI des Elements.

    Wenn es sich bei einem Member der beim Instanziieren der Vorlage erstellten Knotenfolge um einen Attributknoten oder einen Namespaceknoten handelt, tritt ein Fehler auf, weil ein Stammknoten keinen Attributknoten oder Namespaceknoten als untergeordnetes Element aufweisen darf.

  • Wenn der Inhalt leer ist und kein select-Attribut aufweist, ist der Wert des Parameters eine leere Zeichenfolge. Demnach ist

    <xsl:param name="x"/>
    

    für die folgende Syntax:

    <xsl:param name="x" select="''"/>
    

    Wenn mithilfe eines Parameters Knoten der Position nach ausgewählt werden, achten Sie darauf, dass Sie nicht Folgendes angeben:

    <xsl:param name="n">2</xsl:param>
    ...
    <xsl:value-of select="item[$n]"/>
    

    Dies gibt den Wert des ersten item-Elements aus, da die Variable "n" an das Ergebnisstrukturfragment gebunden wird; nicht an eine Zahl. Geben Sie stattdessen Folgendes an:

    <xsl:param name="n" select="2"/>
    ...
    <xsl:value-of select="item[$n]"/>
    

    oder

    <xsl:param name="n">2</xsl:param>
    ...
    <xsl:value-of select="item[number($n)]"/>
    

    Mit der folgenden Methode können Sie bequem eine leere Knotengruppe als Standardwert eines Parameters angeben. <xsl:param name="x" select="/.."/>

Beispiel

In diesem Beispiel wird eine benannte Vorlage für einen "numbered-block" mit einem Argument zum Steuern des Zahlenformats definiert.

XML-Datei (catmat.xml)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="paramelem.xsl"?>
<lists>
   <ol>
      <li>the</li>
      <li>cat</li>
      <ol>
         <li>sat</li>
         <li>on</li>
         <li>the</li>
      </ol>
      <li>mat</li>
   </ol>
</lists>

XSLT-Datei (paramelem.xsl)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="paramelem.xsl"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="ol/li">
   <br/>
   <xsl:call-template name="numbered-block"/>
</xsl:template>

<xsl:template match="ol//ol/li">
   <br/>&#xA0;&#xA0;&#xA0;
   <xsl:call-template name="numbered-block">
      <xsl:with-param name="format">a. </xsl:with-param>
   </xsl:call-template>
</xsl:template>

<xsl:template name="numbered-block">
   <xsl:param name="format">1. </xsl:param>
   <fo:block>
      <xsl:number format="{$format}"/>
      <xsl:apply-templates/>
   </fo:block>
</xsl:template>

</xsl:stylesheet>

Ausgabe

Dies ist die formatierte Ausgabe:

1. the 2. cat     a. sat     b. on     c. the 3. mat

Im Folgenden wird die Prozessorausgabe dargestellt, wobei aus Gründen der Übersichtlichkeit Leerräume hinzugefügt wurden.

<?xml version="1.0" encoding="UTF-16"?>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">1. the</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">2. cat</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />   

<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">a. sat</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />   

<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">b. on</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />   

<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">c. the</fo:block>
<br xmlns:fo="http://www.w3.org/1999/XSL/Format" />
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">3. mat</fo:block>

Siehe auch

Referenz

<xsl:with-param>-Element

<xsl:variable>-Element

<xsl:call-template>-Element