在XQuery中获取减号SQL运算符的功能

在XQuery中获取减号SQL运算符的功能,xquery,Xquery,根据前面的查询,我有两个变量。第一: <list> <item>a</item> <item>b</item> <item>a</item> <item>c</item> </list> A. B A. C 第二点: <list> <item>b</item> </list> B

根据前面的查询,我有两个变量。第一:

<list>
    <item>a</item>
    <item>b</item>
    <item>a</item>
    <item>c</item>
</list>

A.
B
A.
C
第二点:

<list>
    <item>b</item>
</list>

B
我想要第一个列表中的节点,但不在第二个列表中:

<list>
    <item>a</item>
    <item>c</item>
</list>

A.
C
(与SQL减号运算符类似) 我该怎么做


编辑:幸运的是,WikiBooks已经有了。

试试下面的方法,它基于XPath2.0的一个基本原理,=运算符充当一种连接,并允许隐式迭代(在本例中,与!结合使用表示不)

请注意,变量$onlyin1可以直接用于输出第二个列表中不存在的一个列表中的节点,但下面的代码允许您消除具有相同内容的节点的重复

let 
$list1 := 
<list>
    <item>a</item>
    <item>b</item>
    <item>a</item>
    <item>c</item>
</list>,
$list2 := 
<list>
    <item>b</item>
</list>,
$onlyin1 := $list1//item[text()!=$list2//item/text()]
return 
<list>
   {for $item in distinct-values($onlyin1/text()) return 
   <item>{$item}</item>
   }
</list>
let
$list1:=
A.
B
A.
C
,
$list2:=
B
,
$onlyin1:=$list1//item[text()!=$list2//item/text()]
回来
{对于具有不同值的$item($onlyin1/text())返回
{$item}
}

标记为关闭,因为用户已自行回答问题。