我如何找到/使用op:除了多个xml文件?

时间:2011-12-08 14:16:17

标签: xquery

如何找到/使用op:除了多个xml文件?

我从文件1和文件2中获取了节点,并在xquery表达式中找到了op:除了这两个节点。当我使用op时:除了,我最终得到一个空集。

XML文件1:

<a>txt</a>
<a>txt2</a>
<a>txt3</a>

XML文件2:

<a>txt2</a>
<a>txt4</a>
<a>txt3</a>

我希望op:($ nodesfromfile1,$ nodesfromfile2)的输出为:

<a>txt</a>

1 个答案:

答案 0 :(得分:2)

它有效地归结为以下代码中返回后面的单行。你可以把它放在一个函数中,如果你喜欢,但它已经非常密集,所以可能不值得..

let $file1 := (
    <a>txt</a>,
    <a>txt2</a>,
    <a>txt3</a>
)
let $file2 := (
    <a>txt2</a>,
    <a>txt4</a>,
    <a>txt3</a>
)
return
    $file1[not(. = $file2)]

注意,您还有'except'关键字($file1 except $file2),但它适用于节点身份,如果节点来自不同的文件,这将无效。

顺便说一下,上面的代码使用字符串相等来进行比较。如果您希望对完整节点结构进行比较,还可以使用deep-equal()函数。

HTH!