3 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
使用 (/bookstore/book[@location='US'])[1]
這將首先獲得具有l(wèi)ocation屬性等于'US'的書籍元素。然后它將從該集合中選擇第一個(gè)節(jié)點(diǎn)。請注意括號的使用,這是某些實(shí)現(xiàn)所必需的。
(請注意,這與/bookstore/book[1][@location='US']除非第一個(gè)元素碰巧具有該location屬性是不同的)

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
/bookstore/book[@location='US'][1] 僅適用于簡單的結(jié)構(gòu)。
添加更多的結(jié)構(gòu),事情就會中斷。
用
<bookstore>
<category>
<book location="US">A1</book>
<book location="FIN">A2</book>
</category>
<category>
<book location="FIN">B1</book>
<book location="US">B2</book>
</category>
</bookstore>
/bookstore/category/book[@location='US'][1] 產(chǎn)量
<book location="US">A1</book>
<book location="US">B2</book>
不是“第一個(gè)匹配更復(fù)雜條件的節(jié)點(diǎn)”。/bookstore/category/book[@location='US'][2]什么也不返回。
使用括號可以得到原始問題的結(jié)果:
(/bookstore/category/book[@location='US'])[1] 給
<book location="US">A1</book>
并按(/bookstore/category/book[@location='US'])[2]預(yù)期工作。

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
作為對喬納森·芬蘭德答案的解釋:
同一謂詞(
[position()=1 and @location='US']
)中的多個(gè)條件必須整體上為真連續(xù)謂詞(
[position()=1][@location='US']
)中的多個(gè)條件必須一個(gè)接一個(gè)地成立這意味著
[position()=1][@location='US']
!=[@location='US'][position()=1]
而[position()=1 and @location='US']
==[@location='US' and position()=1]
提示:一個(gè)人
[position()=1]
可以縮寫為[1]
你可以建立在謂詞復(fù)雜的表達(dá)式與布爾運(yùn)算符“ and
”和“ or
”,并與布爾XPath函數(shù)not()
,true()
和false()
。另外,您可以將子表達(dá)式括在括號中。
- 3 回答
- 0 關(guān)注
- 5457 瀏覽
添加回答
舉報(bào)