到目前爲止,已經提出了兩種解決方案,但他們都沒有從您在問題中顯示的HTML代碼段中選擇任何內容。當簡單的包裝它在一個根元素:
<root>
<div>
<div class="content">test1</div>
</div>
<div>
<div class="content">test2</div>
</div>
<div>
<div class="content">test3</div>
</div>
</root>
兩個//div[@class='content'][2]
,並從該文件//div[2][@class='content']
選擇什麼。他們都假設第二個謂詞(在[
和]
之間)應用於中間結果序列,但第二個謂詞也應用於初始文檔樹的節點。要選擇的 「中間」 的結果的子集,使用括號圍繞第一部分:
(//div[@class='content'])[2]
和單個結果將是
<div class="content">test2</div>
更多細節
//div[@class='content'][2]
表示:
從文檔中的任意位置選擇名爲div
的所有元素,但只有那些具有值爲「content」的class
屬性的元素。在那些選定的節點中,只保留父節點的第二個div[@class = 'content']
元素。
所以,這個表達式將只能選擇從以下文檔的結果:
<root>
<div>
<div class="content">test1</div>
</div>
<div>
<div class="content">test2</div>
<div class="other">other</div>
<div class="content">MATCH</div>
</div>
<div>
<div class="content">test3</div>
</div>
</root>
//div[2][@class='content']
表示:
選擇從文檔中任何地方叫div
的所有元素,但只有那些是他們父母的第二個孩子。在那些選定的節點中,只保留那些具有值爲「content」的class
屬性的節點。
只有生產[@類= '內容']給定像
<root>
<div>
<div class="content">test1</div>
</div>
<div>
<div class="other">other</div>
<div class="content">MATCH</div>
</div>
<div>
<div class="content">test3</div>
</div>
</root>
//格文檔的匹配[2] – splash58