在XQuery 1.0中是否存在一个函数,用于检查列表中的值是否存在于另一个列表中?

时间:2016-01-25 08:25:24

标签: xml xquery

在XQuery中有两个不同的列表

$list1:
A
B
C
D

$list2
A
D

是否有一个函数可以:创建$ list3,$ list2中的所有元素都不存在于$ list1中?

1 个答案:

答案 0 :(得分:4)

如果你的值是原子的,你可以利用=的存在语义:

let $list1 := ('A', 'B', 'C', 'D')
let $list2 := ('A', 'D', 'E', 'F')
let $list3 := $list2[not(. = $list1)]
return $list3

结果:'E', 'F'

如果要通过节点标识比较XML节点,可以改为使用except关键字:

let $nodes := (<A/>, <B/>, <C/>, <D/>, <E/>, <F/>)
let $list1 := ($nodes[1], $nodes[2], $nodes[3], $nodes[4])
let $list2 := ($nodes[1], $nodes[4], $nodes[5], $nodes[6])
let $list3 := $list2 except $list1
return $list3

结果:<E/>, <F/>