2011-06-20 7 views
0

前のクエリから、私には2つの変数があります。最初:XQueryでMINUS SQL演算子の機能を取得する

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

二:私は、ノードがWICHたい

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

は、最初のリストではなく、第二のリストである:

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

(SQLのMINUSのようにオペレータ) どうすればいいですか?

EDIT:Fortunetaly、WikiBooksにはすでにanswerが含まれています。

+0

は、ユーザーが自己回答の質問をしているため、クローズしています。 – John

答えて

0

XPath2.0の基本に基づいて、=演算子が一種の結合として機能し、暗黙の反復が可能です(この場合は、forとnotを組み合わせて使用​​してください)。

変数$ onlyin1は、2番目のリストに存在しないノードを1つのリストから出力するために直接使用できますが、以下のコードでは同じ内容のノードも重複排除できます。

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> 
関連する問題