8

XPath 1.0 中是否有一个在 SQL 中充当“in”运算符的运算符?

select * from tbl_students where id in (1,2,3)
4

3 回答 3

16

XPath 1.0 的 = 运算符就是这样工作的,尽管 XPath 1.0 不提供用于编写​​序列的语法。因此,如果您有一个 XML 文档的形式

<doc>
  <value>1</value>
  <value>2</value>
  <value>3</value>
</doc>

然后像这样的表达式//doc[value = 2]将返回该doc元素。

在 XPath 2.0 中,语法(1, 2, 3)将创建一个由三个整数组成的序列,您可以编写类似$i = (1, 2, 3). 但是文字序列不是 XPath 1.0 的一个特性——在 XPath 表达式的一侧获取多个值的唯一方法是使用匹配多个节点的路径表达式。

于 2012-12-14T01:21:32.033 回答
7

我也遇到了同样的问题,楼上的回答是对的。为了更清楚,在 Xpath 中这看起来像:

//*:document[*:documentType=("magazine","newspaper")]

这相当于:

select * from documents where documenttype in ('newsletter','magazine')
于 2015-07-23T14:03:40.403 回答
1

找出您搜索的“id”是否在 (1, 2, 3, 4) 的序列中 index-of()可能是一种选择。注意它返回索引列表。

对于像这样的文档部分

<student id='1'/>
<student id='101'/>
<student id='1001'/>

选择将类似于

//*[not(empty(index-of((1, 2, 3, 4), @id)))]
于 2016-04-05T23:53:17.213 回答