2012-12-14 45 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)))]