我正在尝试从下面的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中获得一个副本?
一个选项可以是:
doc("data.xml")//output/*[not(preceding::*=.)]
输出: