亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

XPath:選擇具有特定屬性的第一個元素

XPath:選擇具有特定屬性的第一個元素

XPath bookstore/book[1]選擇下的第一本書節點bookstore。如何選擇匹配更復雜條件的第一個節點,例如匹配第一個節點 /bookstore/book[@location='US']
查看完整描述

3 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

使用 (/bookstore/book[@location='US'])[1]


這將首先獲得具有location屬性等于'US'的書籍元素。然后它將從該集合中選擇第一個節點。請注意括號的使用,這是某些實現所必需的。


(請注意,這與/bookstore/book[1][@location='US']除非第一個元素碰巧具有該location屬性是不同的)


查看完整回答
反對 回復 2019-12-09
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

/bookstore/book[@location='US'][1] 僅適用于簡單的結構。


添加更多的結構,事情就會中斷。



<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] 產量


<book location="US">A1</book>

<book location="US">B2</book>

不是“第一個匹配更復雜條件的節點”。/bookstore/category/book[@location='US'][2]什么也不返回。


使用括號可以得到原始問題的結果:


(/bookstore/category/book[@location='US'])[1] 給


<book location="US">A1</book>

并按(/bookstore/category/book[@location='US'])[2]預期工作。


查看完整回答
反對 回復 2019-12-09
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

作為對喬納森·芬蘭德答案的解釋:

  • 同一謂詞([position()=1 and @location='US'])中的多個條件必須整體上為真

  • 連續謂詞([position()=1][@location='US'])中的多個條件必須一個接一個地成立

  • 這意味著[position()=1][@location='US']!= [@location='US'][position()=1]
    [position()=1 and @location='US']==[@location='US' and position()=1]

  • 提示:一個人[position()=1]可以縮寫為[1]

你可以建立在謂詞復雜的表達式與布爾運算符“ and”和“ or”,并與布爾XPath函數not()true()false()。另外,您可以將子表達式括在括號中。


查看完整回答
反對 回復 2019-12-09
  • 3 回答
  • 0 關注
  • 5475 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號