36

我正在考虑在定义将在另一个 xsl 文件中调用的 xsl:template name = myTemplate 时使用其中一个。

旧代码在 xsl:template match="legacyTemplate" 中使用时似乎使用 'xsl:variable'

那么在 xsl:template name=myTemplate 中使用 xsl:param 和 xsl:variable 有什么区别?

4

1 回答 1

63

不同之处在于 an 的值xsl:param可以在声明它的上下文之外设置。例如,请参阅:

<xsl:template ...>
   <xsl:param name="p" select="'x'" />
   <xsl:variable name="v" select="'y'" />
...

那么你知道那$v将永远给你字符串'y'。但是对于$p字符串'x'只是一个默认值:如果模板被调用,或者包含如下指令,您将看到不同的 xsl:apply-templatesxsl:call-template
<xsl:with-param name="p" select="'not x'" />

<xsl:param>也可以xsl:template在样式表的顶层外部使用。可以在调用 XSLT 处理器时设置此类参数的值。这是如何完成的取决于处理器以及您是从命令行还是通过程序调用它。

于 2012-08-07T21:06:15.283 回答