<xsl:with-param> 元素
将参数传递给模板。
<xsl:with-param
name = QName
select = Expression
</xsl:with-param>
特性
元素信息
注释
name 属性是必选项。该属性指定参数名。该参数是要替换绑定的值的变量。
<xsl:call-template> 和 <xsl:apply-templates> 中均允许使用 <xsl:with-param> 元素。
指定该参数值的方式与 <xsl:variable> 和 <xsl:param> 相同。
用于计算 <xsl:with-param> 元素指定的值的当前节点和当前节点列表与相应的 <xsl:apply-templates> 或 <xsl:call-template> 元素相同。
如果将参数 x 传递给 x 没有 <xsl:param> 元素的模板,不属于错误;将简单地忽略该参数。
示例
样式表可以使用以下方法调用本地化消息字符串。
somelanguage 语言的消息存储于 XML 文件 resources/languageabbreviation.xml 中,格式如下面的示例 XML 文件所示。
XML 文件 (app.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="showlocmsg.xsl" ?>
<showmsg>
<msg23/>
</showmsg>
XML 资源文件 (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 文件 (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>
输出
以下是格式化输出:
以下是处理器输出:
<?xml version="1.0" encoding="UTF-16"?>