是否可以在模板内获取模板名称?例子:
<xsl:template name="list">
<!-- Get name value (in this case "list") -->
</xsl:template>
是否可以在模板内获取模板名称?例子:
<xsl:template name="list">
<!-- Get name value (in this case "list") -->
</xsl:template>
据我所知,XSLT 1.0 和 XSLT 2.0 都没有提供这样的特性。
正如马丁所说,可能没有办法做到这一点。
即使存在这样的容量,使用它肯定不会比仅使用您想要的值定义一个变量更简单:
<xsl:template name="list">
<xsl:variable name="class" select="'list'" />
然后在需要的地方使用该变量。这还有一个好处是您可以在不重写所有 CSS 的情况下更改模板名称,或者在不重写 XSLT 的情况下更改类名称。
XSLT 使用 XML 语法这一事实的好处之一是很容易转换样式表。修改每个命名模板以包含一个保存模板名称的变量非常容易。
@JLRishe 的回答是一个好方法。但是,有一个陷阱。Any<xsl:param>
必须在any之前<xsl:variable>
声明。
这将不起作用:
<xsl:template name="foobarsnafu">
<xsl:variable name="foo" value="bar">
<xsl:param name="snafu"/>
但这将:
<xsl:template name="foobarsnafu">
<xsl:param name="snafu"/>
<xsl:variable name="foo" value="bar">
例如,如果您希望 your 的默认值是 yoursnafu
<xsl:param>
的值,这可能是一个问题foo
<xsl:variable>
。解决方法是使用<xsl:param>
模板名称的默认值,即:
<xsl:template name="foobarsnafu">
<xsl:param name="template_name" select="foobarsnafu"/>