Passes a parameter to a template.
<xsl:with-param name = QName select = Expression> </xsl:with-param>
| Number of occurrences | Unlimited |
| Parent elements | xsl:apply-templates, xsl:call-template |
| 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 |
The name attribute is required. It specifies the name of the parameter. The parameter is 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.
If you pass a parameter x to a template that does not have an <xsl:param> element for x, this is not an error; the parameter is simply ignored.
A style sheet can use the following approach to call localized message strings.
The messages for a language somelanguage are stored in an XML file, resources/languageabbreviation.xml, in the form shown in the sample XML file below.
Note To test this example in Internet Explorer, you need to use a script. For more information, see Initiate XSLT in a Script.
XML File (app.xml)
<?xml version='1.0'?> <?xml-stylesheet type="text/xsl" href="showlocmsg.xsl" ?> <showmsg> <msg23/> </showmsg>
XML Resource File (resources/en.xml)
<?xml version='1.0'?> <messages> <message name="msg23">Error 23: The drive is full.</message> <message name="msg42">Error 42: The file is not found.</message> </messages>
XSLT File (showlocmsg.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- These 2 elements effectively assign
$messages = resources/en.xml/<messages>,
then $messages is used in the "localized-message" template. -->
<xsl:param name="lang">en</xsl:param>
<xsl:variable name="messages"
select="document(concat('resources/', $lang, '.xml'))/messages"/>
<xsl:template name="msg23" match="msg23">
<xsl:call-template name="localized-message">
<xsl:with-param name="msgcode">msg23</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="localized-message">
<xsl:param name="msgcode"/>
<!-- Show message string. -->
<xsl:message terminate="yes">
<xsl:value-of select="$messages/message[@name=$msgcode]"/>
</xsl:message>
</xsl:template>
</xsl:stylesheet>
Output
This is the formatted output:

This is the processor output:
<?xml version="1.0" encoding="UTF-16"?>
<xsl:call-template> Element | <xsl:variable> Element | <xsl:param> Element | <xsl:template> Element
