我有一个像这样的xml:
<bookstores>
<bookstore>
<book id="1">
<author>ABC</author>
</book>
<book id="2">
<title>YYY</title>
</book>
</bookstore>
<bookstore>
<book id="3">
<author>ABC</author>
</book>
<book id="4">
<author>DEF</author>
</book>
</bookstore>
<bookstore>
<book id="5">
<price>50</price>
</book>
<book id="6">
<title>ZZZ</title>
</book>
</bookstore>
</bookstores>
我想选择“书”节点的子节点的第一次出现,或者换句话说,“书”节点的所有唯一子节点。
所以输出应该是这样的:
author
title
price
我写了一个xslt:
<xsl:for-each select="bookstores/bookstore/book">
<xsl:if test="count(preceding-sibling::*[1]) = 0">
<xsl:value-of select="local-name(*[1])"/>
</xsl:if>
</xsl:for-each>
它没有给我任何回报......有人可以帮我解决这个问题吗?谢谢!!
更新:
如果我的 xml 中有几个“书店”元素,我只想限制每个“书店”上下文中的唯一性,以便即使“作者”出现在一个“书店”中,如果它仍然可以显示出现在另一个“书店”?