我想知道是否有更短的方法来选择节点列表,而忽略那些在列表中指定属性值的节点
工作示例:
/item[not(@uid='id1') and not(@uid='id2')]
所需的替代方案:
/item[not(@uid in('id1','id2'))]
我想知道是否有更短的方法来选择节点列表,而忽略那些在列表中指定属性值的节点
工作示例:
/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))]
至少在 Xpath 2 中,对序列的一般比较是成对和存在的,所以你可以写:
/item[not(@uid = ('id1','id2'))]