相当简单的问题,但似乎很难通过搜索,这里或谷歌找到我想要的东西。
大多数人都会问你如何选择具有多种条件的节点/元素。
赞URL/books[title="Harry Potter" and author="JKRowling"]
我想知道,如果您有多个可能的属性,是否有缩短语法的方法。
换句话说
URL/books[price=1 or price=2 or price=3 or price=8 or price=15]
有没有办法缩短语法?
与URL/books[price=1,2,3]
或[price in (1,2,3)]
一样----显然这些都是错误的,但会让事情变得更容易。
答案 0 :(得分:3)
XPath 2.0允许
URL/books[price=(1,2,3)]
XPath中的=
运算符(以及!=
,<
,>
,<=
和>=
)具有隐式存在量词当其中一个或两个操作数都是序列时 - 如果序列X = Y
的任何成员等于序列的任何成员,则X
为真Y
。请注意,这意味着X != Y
不一定与not(X = Y)
相同 - 前者意味着某些对的X和Y值不相等(并且可能还有是其他相同的对),后者意味着没有相等的对。
然而,XPath 1.0不支持像这样的原子值序列,它唯一的多值数据类型是节点集。如果你能以某种方式注入一个带有值列表的变量作为XML,例如
<prices>
<price>1</price>
<price>2</price>
<price>3</price>
</prices>
然后你可以说
URL/books[price = $var/prices/price]
但是(a)取决于你的XPath引擎是否以及如何支持变量绑定,(b)可能不仅仅是枚举price = 1 or price = 2 ...
。