1

次のXQueryの結果をフィルタリングしたいと思います。

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

@id値が一致し、@ xref属性が$aまたは$bのいずれかに一致するが、$aと$bの両方には一致しない要素を選択するにはどうすればよいですか。

$aと$bはどちらもトークン化された値を持つノードセットであり、どちらも識別子として機能します。必要な識別子は、$aまたは$bのいずれかに格納できます。

私の意図は、$ aが@xref属性と一致する場合、クエリは$bをチェックしないことです。

4

1 に答える 1

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 
于 2012-12-28T14:20:05.567 に答える