Xquery:使用基于多个值的唯一块

问题描述 投票:0回答:1

我正在尝试从下面的XML获取唯一的数据集

<output>
  <category>DB</category>
  <title>Database systems</title>
  <name>Smith</name>
  <name>John</name>
  <name>Adam</name>
</output>
<output>
  <category>DB</category>
  <title>Database systems</title>
  <name>John</name>
  <name>Smith</name>
  <name>Adam</name>
</output>
<output>
  <category>DB</category>
  <title>Database systems</title>
  <name>Adam</name>
  <name>Smith</name>
  <name>John</name>
</output>

由于3个输出块包含相同的信息,所以我只需要选择一个即可。但是,当我使用distinct-values()函数时,我将按其各自的顺序获取所有三个。

我已将上面的表分配为$ final,而下面是我所得到的

for $f in distinct-values($final)
return $f

输出

DBDatabase systemsSmithJohnAdam
DBDatabase systemsJohnSmithAdam
DBDatabase systemsAdamSmithJohn

预期

<output>
  <category>DB</category>
  <title>Database systems</title>
  <name>Smith</name>
  <name>John</name>
  <name>Adam</name>
</output>

无需订购我试图对名称标签进行排序,但由于它增加了太多代码,因此无法正常工作。Xquery中是否有任何逻辑可以从上述XML中获得一个副本?

xpath xquery xquery-3.0
1个回答
0
投票

一个选项可以是:

doc("data.xml")//output/*[not(preceding::*=.)]

输出:

© www.soinside.com 2019 - 2024. All rights reserved.