1

我想过滤以下 XQuery 的结果:

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

如何选择具有匹配的@id值和匹配$a$b 但不匹配$a 和$b 的@xref属性的元素。

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

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

4

1 回答 1

0

最好是使用异或。可惜没有异或...

但是 != 和 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 
于 2012-12-28T14:20:05.567 回答