是否可以在模板内获取模板名称? 例如:
<xsl:template name="list">
<!-- Get name value (in this case "list") -->
</xsl:template>
答案 0 :(得分:1)
据我所知,XSLT 1.0和XSLT 2.0都没有提供这样的功能。
答案 1 :(得分:1)
正如马丁所说,可能没有办法做到这一点。
即使存在这样的容量,肯定使用它也不能简单地定义一个具有你想要的值的变量:
<xsl:template name="list">
<xsl:variable name="class" select="'list'" />
然后在需要的地方使用该变量。这样做的好处是,您可以更改模板名称而无需重写所有CSS,或更改类名而无需重写XSLT。
答案 2 :(得分:1)
XSLT使用XML语法这一事实的一个好处是可以轻松转换样式表。修改每个命名模板以包含一个包含模板名称的变量非常容易。
答案 3 :(得分:1)
@JLRishe的答案是一个很好的方法。但是,有一个陷阱。必须在任何<xsl:param>
之前将<{>> 声明为任何<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">
例如,如果您希望snafu
<xsl:param>
的默认值是foo
<xsl:variable>
的值,则可能会出现问题。解决方法是将<xsl:param>
与模板名称的默认值一起使用,即:
<xsl:template name="foobarsnafu">
<xsl:param name="template_name" select="foobarsnafu"/>