2009-10-10 55 views
1

我想要做的是使用XSL输出所有独特的元素和属性名称。不是他们的价值,而是他们的名字。有没有办法从XML文档输出元素和属性的名称?

所以给出的XML:

<item id="12"> 
    <price>12.00</price> 
    <author>Name</author> 
    <desc>Description</desc> 
</item> 

我想表明,有项目,价格,作者,递减的元素。除此之外,我想知道'id'的属性。

有关如何做到这一点的任何想法?或者我可以阅读的文章?它甚至有可能吗?

感谢,
列维

+0

顺便说一句,你的XML示例是不能很好地形成 – 2009-10-10 20:33:28

回答

2

我没有使用过他们很多自己,但这些功能应该让你有:XPath functions on nodes。更具体地说,看看name()local-name()。由于它们在节点上工作,因此在元素和属性上使用它们应该没有问题。

1

尝试这种情况:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:key name="names" match="//* | //@*" use="name()"/> 
    <xsl:template match="/"> 
    <xsl:for-each select="(//* | //@*)[count(key('names', name())) = 1]"> 
     <xsl:value-of select="name()" /><br /> 
    </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 
+1

更多类似'<的xsl:for-每个选择=“(// * | // @ *)[计数( 。| key('names',name())[1])= 1]“>',还是我误解了”独特“要求? – Tomalak 2009-10-12 11:32:24

+0

我不这么认为;我在创建“名称”键时使用了name(),所以它可能不会匹配。 – 2009-10-12 12:05:24

相关问题