<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 |
|
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/>   
<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>