我有兴趣将xml文档中根元素的标签名称分配给xslt变量。举例来说,如果文件看起来像(减去DTD):如何在带有XSLT的XML文档中获取根元素的标签名称?
<foo xmlns="http://.....">
<bar>1</bar>
</foo>
,我想指定字符串“富”到XSLT变量。有没有办法引用它?
谢谢,马特
我有兴趣将xml文档中根元素的标签名称分配给xslt变量。举例来说,如果文件看起来像(减去DTD):如何在带有XSLT的XML文档中获取根元素的标签名称?
<foo xmlns="http://.....">
<bar>1</bar>
</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)。这就是“/”所指的。 它不是一个元素:它是最外层元素的父元素 (以及位于元素最前面或后面的任何 注释和处理指令 )。根节点没有名称。
想通了。给出参数*的函数name()将返回foo。
使用XPath name()
功能。
一个XPath表达式,以获得顶部的名称(未根!)元素是:
name(/*)
名称()函数返回的完全限定节点的名称,所以对于元素<bar:foo/>
,将返回字符串“bar:foo”。
如果只需要名称的本地部分(无前缀和“:”),则应使用XPath local-name()
函数。
@annakata:name()和local-name()不同。 OP显然希望名称()。他没有任何地方说他希望这个名字剥离任何名称空间前缀。 – 2008-12-15 17:50:33