我試圖選擇某個類別的<div>
與之後的第一個<hr>
之間的所有內容。在HTML中選擇hr,似乎按相反順序選擇?
與此查詢:
//div[@id='a']/*[preceding::div/@class='b' and following:hr[0]]
而且這個例子HTML:
<div id="a">div a
<div class="b">div b</div>
<p>1</p>
text1
<a>2</a>
text2
<div>3</div>
<hr>
<div>4</div>
<hr>
<div>5</div>
<hr>
</div>
我得到 「B」 類和最後hr
的div
之間的一切。用hr[*n*]
選擇似乎以相反的順序選擇。 ... and following::hr[last()]]
也選擇到最後一小時,這是我所期望的。在這個例子中,... and following::hr[2]
將選擇第一個hr
,但實際上我不能保證會有多少。我怎樣才能選擇第一個hr
?
謝謝,這確實有用。以下:: hr [0]是一個錯字,它應該是(並且在我的代碼中)在:: hr [1]之後。 – dysfunction
後續工作:我編輯了示例HTML,在第一個'
'之前添加一些裸文本節點。我怎樣才能選擇這些?我認爲''// div [@ id ='a']/* [前置:: div/@ class ='b'而不是(之前:: hr]] | // div [@ id ='a']]/text()[之前:: div/@ class ='b'而不是(之前:: hr)]'但是仍然不選擇裸文本;但是,// // div [@ id ='a' ]/text()[前置:: div/@ class ='b'而不是(先前:: hr)]'不選擇**只是**裸文本 – dysfunction
如果您想選擇所有節點,而不僅僅是給定軸的主節點類型的節點,使用'node()'而不是'*' –