如何在模板中获取模板名称

时间:2013-01-15 14:41:29

标签: xslt

是否可以在模板内获取模板名称? 例如:

<xsl:template name="list">
<!-- Get name value (in this case "list") -->
</xsl:template>

4 个答案:

答案 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"/>