相当直截了当的问题,但似乎很难通过此处或 Google 搜索找到我想要的内容。
大多数人问如何选择具有多个条件的节点/元素。
喜欢 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)]
---- 显然这些都是错误的,但会让事情变得更容易。
最佳答案
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 注入(inject)一个变量,例如
<prices>
<price>1</price>
<price>2</price>
<price>3</price>
</prices>
那么你可以说
URL/books[price = $var/prices/price]
但是 (a) 取决于您的 XPath 引擎是否以及如何支持变量绑定(bind),并且 (b) 可能不如仅枚举 price = 1 or price = 2 ...
清楚无论如何。
关于XML Xpath - 选择其中元素 = 多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26387254/