2

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

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

4 回答 4

1

据我所知,XSLT 1.0 和 XSLT 2.0 都没有提供这样的特性。

于 2013-01-15T14:53:34.263 回答
1

正如马丁所说,可能没有办法做到这一点。

即使存在这样的容量,使用它肯定不会比仅使用您想要的值定义一个变量更简单:

<xsl:template name="list">
   <xsl:variable name="class" select="'list'" />

然后在需要的地方使用该变量。这还有一个好处是您可以在不重写所有 CSS 的情况下更改模板名称,或者在不重写 XSLT 的情况下更改类名称。

于 2013-01-15T15:30:03.113 回答
1

XSLT 使用 XML 语法这一事实的好处之一是很容易转换样式表。修改每个命名模板以包含一个保存模板名称的变量非常容易。

于 2013-01-15T17:16:19.233 回答
1

@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"/>
于 2018-07-16T19:28:17.237 回答