XPath“in”运算符

时间:2012-12-14 01:09:20

标签: xml xpath xpath-1.0

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

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

3 个答案:

答案 0 :(得分:15)

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表达式的一侧获取多个值的唯一方法是使用匹配多个节点的路径表达式。

答案 1 :(得分:6)

我有同样的问题,上面的答案是对的。为了更清楚,在Xpath中,这将看起来像:

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

将是等效的:

select * from documents where documenttype in ('newsletter','magazine')

答案 2 :(得分:2)

要了解&#39; id&#39;你搜索的顺序为(1,2,3,4) index-of()可能是一个选择。 注意它返回索引列表。

对于像

这样的文档部分
<student id='1'/>
<student id='101'/>
<student id='1001'/>

选择

之类的东西
//*[not(empty(index-of((1, 2, 3, 4), @id)))]