XML Xpath - 选择element =多个值的位置

时间:2014-10-15 16:14:28

标签: xml xpath multiple-conditions

相当简单的问题,但似乎很难通过搜索,这里或谷歌找到我想要的东西。

大多数人都会问你如何选择具有多种条件的节点/元素。

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)]一样----显然这些都是错误的,但会让事情变得更容易。

1 个答案:

答案 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 ...