我有兴趣将xml文档中根元素的标记名称分配给xslt变量。例如,如果文档看起来像(减去DTD):
<foo xmlns="http://.....">
<bar>1</bar>
</foo>
我希望将字符串'foo'分配给xslt变量。有没有办法引用它?
谢谢,马特
答案 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)。这就是“/”所指的。 它不是一个元素:它是父母 最外层的元素(和任何 评论和处理说明 在最外层之前或之后 元件)。根节点没有名称。
答案 1 :(得分:19)
使用XPath name()
函数。
获取top(而不是root!)元素名称的一个XPath表达式是:
<强> name(/*)
强>
name()函数返回节点的完全限定名称,因此对于元素<bar:foo/>
,将返回字符串“bar:foo”。
如果只需要名称的本地部分(无前缀和“:”),则应使用XPath local-name()
函数。
答案 2 :(得分:2)
想出来。给定参数*的函数name()将返回foo。
答案 3 :(得分:0)
你想要 local-name()