28

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

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

我想将字符串 'foo' 分配给一个 xslt 变量。有没有办法参考?

谢谢,马特

4

4 回答 4

27

我认为您想检索最外层 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

于 2008-12-15T15:36:49.487 回答
22

使用 XPathname()函数。

获取顶部(不是根!)元素名称的一个 XPath 表达式是:

       name(/*)

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

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

于 2008-12-15T17:58:51.897 回答
2

弄清楚了。给定参数 * 的函数 name() 将返回 foo。

于 2008-12-15T15:35:53.497 回答
0

你想要本地名称()

于 2008-12-15T15:38:40.027 回答