如果已经存在,则xquery跳过元素

时间:2014-10-12 19:47:24

标签: xml xslt xquery exist-db

$ a是

(<pet name="a1">
<age num="1"/>
</pet>,
<pet name="a2">
<age num="2"/>
</pet>)

$ b是

(<pet name="a2">
<age num="9"/>
</pet>,
<pet name="a3">
<age num="11"/>
</pet>
<pet name="a3">
<age num="14"/>
</pet>

我正在尝试将以下内容作为输出($ a中的所有内容以及$ b中的所有内容除了已打印出来的内容),即

(<pet name="a1">
<age num="1"/>
</pet>,
<pet name="a2">
<age num="2"/>
</pet>,
<pet name="a3">
<age num="11"/>
<age num="14"/>
</pet>)

由于已从$ a打印<pet name="a2">,因此必须跳过$ b中具有相同属性的相同元素, 我在xquery中尝试了以下代码,但我无法获得所需的结果。

for $l in $a
    for $m in $b
      return if ($m/@name!=$l/@name)

1 个答案:

答案 0 :(得分:1)

通过连接序列并使用谓词表达式过滤第二个序列,可以更简单地解决这个问题而无需循环:

($a | $b[not(@name = $a/@name)])