XQuery计算所有直接父节点中一个元素的外观

时间:2018-02-02 18:13:29

标签: xquery

XML档案中:

<article>
   <title>This is book AAAA</title>
   <author>A</author>
   <author>B</author>
</article>
<article>
   <title>This is book BBB</title>
   <author>A</author>
   <author>C</author>
</article>

如果他/她出现在多个<article>中,我需要使用XQuery输出作者姓名。在这种情况下,应输出作者A.请注意,一篇文章可以有多位作者。

我应该如何编写XQuery?

1 个答案:

答案 0 :(得分:1)

执行此操作的典型方法是迭代要查找的实体的不同值,然后使用where将查询过滤到约束中:

let $authors := $data//article/author
for $author in distinct-values($authors)
where (count($authors[. = $author]) gt 1)
return $author

但是,对于大量数据distinct-values()可能效果不佳,可能需要获取唯一值的特定于实现的方法(例如:使用索引)。