如何在XSLT的XML文档中获取根元素的标记名称?

时间:2008-12-15 15:16:14

标签: xml xslt xpath

我有兴趣将xml文档中根元素的标记名称分配给xslt变量。例如,如果文档看起来像(减去DTD):

<foo xmlns="http://.....">
    <bar>1</bar>
</foo>

我希望将字符串'foo'分配给xslt变量。有没有办法引用它?

谢谢,马特

4 个答案:

答案 0 :(得分:25)

我认为您想要检索最外层XML元素的名称。这可以像下面的XSL示例中那样完成:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:variable name="outermostElementName" select="name(/*)" />

  <xsl:template match="/">
    <xsl:value-of select="$outermostElementName"/>
  </xsl:template>
</xsl:stylesheet>

请注意,XPath术语略有不同:

  

树的顶部是根节点   (1.0术语)或文档节点   (2.0)。这就是“/”所指的。   它不是一个元素:它是父母   最外层的元素(和任何   评论和处理说明   在最外层之前或之后   元件)。根节点没有名称。

请参阅http://www.dpawson.co.uk/xsl/sect2/root.html#d9799e301

答案 1 :(得分:19)

使用XPath name()函数。

获取top(而不是root!)元素名称的一个XPath表达式是:

<强> name(/*)

name()函数返回节点的完全限定名称,因此对于元素<bar:foo/>,将返回字符串“bar:foo”。

如果只需要名称的本地部分(无前缀和“:”),则应使用XPath local-name()函数。

答案 2 :(得分:2)

想出来。给定参数*的函数name()将返回foo。

答案 3 :(得分:0)

你想要 local-name()