XQuery不同且独特的节点

时间:2016-11-01 13:22:32

标签: xml xpath xquery

我有以下XML文档(此示例来自W3schools.com并进行了修改):

<bookstore>
    <book>
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <section>Children</section>
      <section>Recent</section>
      <year>2005</year>
      <price>30.00</price>
    </book>

    <book>
      <title lang="en">Harry Potter</title>
      <author>J K. Rowling</author>
      <section>Children</section>
      <section>Recent</section>
      <year>2005</year>
      <price>29.99</price>
    </book>

    <book>
      <title lang="en">Learning XML 2: The Reckoning</title>
      <author>Erik T. Simpson</author>
      <section>Terror</section>
      <year>2003</year>
      <price>9.95</price>
    </book>

</bookstore>

如何在整个文档中检索SECTION是唯一的书籍并且没有重复?我尝试了以下XQuery(我需要一个XQuery):

for $x in doc("books.xml")/bookstore/book/
where distinct-values($x/section)
return $x

但它似乎返回所有这些没有重复,我想要检索最后一个节点,因为是唯一一个有该节的。

有什么想法吗?非常感谢您的支持和帮助!

1 个答案:

答案 0 :(得分:2)

如果您选择/bookstore/book[not(section = (preceding-sibling::book/section | following-sibling::book/section))],则会选择所有book个元素,这些元素没有section等于其他section元素的book个。