2012-12-14 158 views

回答

13

XPath 1.0的=运算符以这种方式工作,尽管XPath 1.0不提供写序列的语法。所以,如果你有如下形式

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

的XML文档,然后像//doc[value = 2]表达式将返回doc元素。

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

+0

+1一个确切的答案。 –

4

我有同样的问题,上面的答案是正确的。为了更清楚,在XPath这看起来像:

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

至极会的equivalant:

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

要了解的“身份证”你搜索的序列中(1,2,3,4) index-of()可能是一个选择。 注意它返回索引列表。

对于文档的组成部分一样

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

选择会像

//*[not(empty(index-of((1, 2, 3, 4), @id)))]