<xsl:with-param> 元素

将参数传递给模板。

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

特性

  • name
    必选。参数的限定名

  • 选择
    要根据当前上下文进行匹配的表达式 (XML)。没有默认值。如果没有内容,则生成空字符串。

元素信息

出现次数

无限制

父元素

xsl:apply-templatesxsl:call-template

子元素

xsl:apply-templatesxsl:attributexsl:call-templatexsl:choosexsl:commentxsl:copyxsl:copy-ofxsl:elementxsl:for-eachxsl:ifxsl:processing-instructionxsl:textxsl:value-ofxsl:variable

注释

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"?>

请参阅

参考

<xsl:call-template> 元素

<xsl:variable> 元素

<xsl:param> 元素

<xsl:template> 元素