2008-12-15 39 views

回答

23

我想你想检索最外面的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

2

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

0

你想local-name()

+1

@annakata:name()和local-name()不同。 OP显然希望名称()。他没有任何地方说他希望这个名字剥离任何名称空间前缀。 – 2008-12-15 17:50:33

16

使用XPath name()功能。

一个XPath表达式,以获得顶部的名称(未根!)元素是:

              name(/*)

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

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

相关问题