22

リストに属性値が指定されているノードを無視して、ノードのリストを選択するためのより短いアプローチがあるかどうかを知りたいです

実例:

/item[not(@uid='id1') and not(@uid='id2')]

望ましい代替案:

/item[not(@uid in('id1','id2'))]
4

4 に答える 4

26

正規表現を使用するか(xpath実装がそれをサポートしている場合)、または次のように記述します。

/item[not(@uid='id1' or @uid='id2')]

少し短いかもしれません。

于 2012-07-16T07:48:11.173 に答える
7

属性名のリストが非常に長い場合は、次の方法でこの状況を処理できます

//item[not(contains('|attr1|attr2|attr3|attr4|attr5|attr6|attrN|', 
                    concat('|', @uid, '|')
                    )
           )]
于 2012-07-16T12:42:40.173 に答える
4

多分このようなもの?

/item[not(contains('id1 id2', @uid))]
于 2012-07-16T07:44:26.430 に答える
0

少なくともXpath2では、シーケンスの一般的な比較はペアごとに存在的に実行されるため、次のように記述できます。

/item[not(@uid = ('id1','id2'))]
于 2012-07-16T22:07:57.943 に答える