我有兴趣将 xml 文档中根元素的标记名称分配给 xslt 变量。例如,如果文档看起来像(减去 DTD):
<foo xmlns="http://.....">
<bar>1</bar>
</foo>
我想将字符串 'foo' 分配给一个 xslt 变量。有没有办法参考?
谢谢,马特
我认为您想检索最外层 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)。这就是“/”所指的。它不是一个元素:它是最外层元素的父元素(以及在最外层元素之前或之后的任何注释和处理指令)。根节点没有名称。
使用 XPathname()
函数。
获取顶部(不是根!)元素名称的一个 XPath 表达式是:
name(/*)
name() 函数返回节点的完全限定名称,因此对于元素<bar:foo/>
,将返回字符串“bar:foo”。
如果只需要名称的本地部分(无前缀和“:”),local-name()
则应使用 XPath 函数。
弄清楚了。给定参数 * 的函数 name() 将返回 foo。
你想要本地名称()