2014-04-09 42 views
1

我有一個頁面上幾個H2元素開始的所有H 2節點,所述的xpath結果應該是H2元件的陣列,exluding第一n H2元素。Xpath的返回從第n個

<div> 
    <h2>1</h2> 
    <h2>2</h2> 
    <h2>3</h2> 
</div> 
.... 
<div> 
    <h2>4</h2> 
    <h2>5</h2> 
    ... 
    <h2>n<h2> 
</div> 
+0

顯示實際的XML,請 – dirkk

回答

2

正確的方法簡明做到這一點是:

(//h2)[position() > n] 

(//h2)[position() > n and position() < last() - m] 

開往他們兩邊。圍繞//h2的括號在這裏有很大的不同。

1

的問題是不準確的答案不夠具體,但這個想法是,你可以使用position()過濾器來獲得,除了那些所有<h2>元素position小於n

例如,假設n1,你可以根據以下步驟做:

//h2[position()>1] 

鑑於這種簡單的結構化的XML輸入:

<root> 
    <h2>1</h2> 
    <h2>2</h2> 
    <h2>3</h2> 
</root> 

以上的XPath會返回這些元素:

<h2>2</h2> 
<h2>3</h2> 
+0

這是特定的XPath 2.0嗎?因爲當我在Google Chrome控制檯中對此進行測試時,我一無所獲。 '$ X( 「// H2 [位置()> 3]」)' – casper

+1

這不是XPath 2.0中特定的,但它是不正確。如果所有的'h2'元素都在同一個父元素下面,這隻會按照描述的方式工作。 – JLRishe

+0

@JLRishe你說得對,那是因爲沒有在這個答案貼在任何時間範圍內,直到問題添加標記的樣品大約18分鐘前 – har07

0
//h2[position() > n] 

當然你想要的任何實際值代替n ...

0

找到正確的答案,這爲我的作品:

//descendant::h2[position()>n 

如果我想獲得第n個元素後m個元素,然後

//descendant::h2[position()>n and position()<last()-m] 
+1

請參閱我的示例以獲取更簡短的方法。關於你在這裏的做法,在兩種情況下都不需要在開始時使用斜線。 – JLRishe