在XQuery中使用布尔运算符(和,或,不)选择元素属性

时间:2012-12-28 13:37:20

标签: xquery boolean-logic

我想过滤以下XQuery的结果:

for $units in $data//*[@id = $ids and (@xref = $a or @xref = $b)]/@id 

如何选择匹配 @id 值的元素以及匹配 $ a或$ b的 @xref 属性,但 $ a和$ b。

$ a和$ b都是具有标记化值的节点集,它们都充当标识符。想要的标识符可以存储在$ a或$ b中。

我的意图是,如果$ a与 @xref 属性匹配,则查询不会检查$ b。

1 个答案:

答案 0 :(得分:0)

最好是使用xor。太糟糕了没有xor ......

但是!=和ne也一样:

 for $units in $data//*[@id = $ids and ((@xref = $a) ne (@xref = $b))]/@id 

对于单个值,使用eq而不是=应该更快:

 for $units in $data//*[@id = $ids and ((@xref eq $a) ne (@xref eq $b))]/@id