リストに属性値が指定されているノードを無視して、ノードのリストを選択するためのより短いアプローチがあるかどうかを知りたいです
実例:
/item[not(@uid='id1') and not(@uid='id2')]
望ましい代替案:
/item[not(@uid in('id1','id2'))]
正規表現を使用するか(xpath実装でサポートされている場合)、次のように記述できます。
/item[not(@uid='id1' or @uid='id2')]
少し短いかもしれません。
属性名のリストが非常に長い場合、以下はこの状況を処理するための良い方法です:
//item[not(contains('|attr1|attr2|attr3|attr4|attr5|attr6|attrN|',
concat('|', @uid, '|')
)
)]
多分このようなもの?
/item[not(contains('id1 id2', @uid))]
少なくともXpath2では、シーケンスの一般的な比較はペアごとに存在的に実行されるため、次のように記述できます。
/item[not(@uid = ('id1','id2'))]