如何使用XQuery查找唯一元素?

如何使用XQuery查找唯一元素?,xquery,Xquery,在下一个XML中,如何获取国家位置唯一的标题书列表 <BooksLib> <Book Title="Murder in NY" Year="1980"> <BookLocations> <Location City="New York" Country="USA"/> <Location City="Virginia" Country="USA"/> </BookLocations&g

在下一个XML中,如何获取国家位置唯一的标题书列表

<BooksLib>
  <Book Title="Murder in NY" Year="1980">
    <BookLocations>
      <Location City="New York" Country="USA"/>
       <Location City="Virginia" Country="USA"/>
    </BookLocations>
  </Book >
  <Book  Title="Dracula" Year="2000">
    <BookLocations>
      <Location City="Sydney" Country="Australia"/>
      <Location City="Moab" Country="USA"/>
      <Location City="Calvados" Country="France"/>
    </BookLocations>
  </Book>
  <Book  Title="Romance in calvados" Year="2012">
    <BookLocations>
      <Location City="Calvados" Country="France"/>
    </BookLocations>
  </Book >
</BooksLib>

但这给了我县相同的名称。

我会稍微改变一下。首先,我觉得一个人的实际思维方式更自然,其次,在大型场景中会更快。因此,首先,我将尝试确定哪些国家只出席一次。然后在此基础上过滤出结果。以下方面应起作用:

let $single-loc :=
  for $loc in doc("books.xml")//Location/@Country/string()
  where count(//Location/@Country[. = $loc]) = 1
  return $loc
for $book in doc("books.xml")//Book
where $book/BookLocations/Location/@Country = $single-loc
return $book/data(@Title)

请注意,您的输入XML格式不正确,我编辑了您的帖子。另外,您的XQuery是错误的,因为$book和$book是两个不同的变量。

谢谢!!谢谢你批改帖子!我抄错了。