xsl:with-param Element
A version of this page is also available for
4/8/2010
Passes a parameter to a template.
Syntax
<xsl:with-param
name = QName
select = expression>
</xsl:with-param>
Attributes
- name
[required] Specifies the name of the parameter.
- select
An expression to be matched against the current context. There is no default value. An empty string is generated if there is no content.
Element Information
Number of occurrences |
Unlimited |
Parent elements |
|
Child elements |
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 |
Remarks
The required name attribute specifies the name of the parameter (the variable, the value of whose binding is to be replaced). The <xsl:with-param> element is allowed within both <xsl:call-template> and <xsl:apply-templates>. The value of the parameter is specified in the same way as for <xsl:variable> and <xsl:param>. The current node and current node-list used for computing the value specified by the <xsl:with-param> element is the same as that used for the <xsl:apply-templates> or <xsl:call-template> element within which it occurs. It is not an error to pass a parameter x to a template that does not have an <xsl:param> element for x; the parameter is simply ignored.
Example
Suppose messages for a language L are stored in an XML file resources/L.xml in the following form.
<messages>
<message name="problem">A problem was detected.</message>
<message name="error">An error was detected.</message>
</messages>
A style sheet can use the following approach to localize messages.
<xsl:param name="lang" select="en"/>
<xsl:variable name="messages"
select="document(concat('resources/', $lang, '.xml'))/messages"/>
<xsl:template name="localized-message">
<xsl:param name="name"/>
<xsl:message>
<xsl:value-of select="$messages/message[@name=$name]"/>
</xsl:message>
</xsl:template>
<xsl:template name="problem">
<xsl:call-template name="localized-message"/>
<xsl:with-param name="name">problem</xsl:with-param>
</xsl:call-template>
</xsl:template>
See Also
Reference
XSLT Elements
xsl:call-template Element
xsl:template Element
xsl:param Element
xsl:variable Element