2016-04-28 78 views
1

使用XPath的一個節點,是有辦法選擇,其位置相當於另一個節點從不同的父姿勢的節點?XPath來選擇的位置,並根據其他節點的位置

具體,讓我們說我有這個簡單的HTML表(在此jsFiddle也可用):

<table> 
    <thead> 
    <tr> 
     <th>Col A</th> 
     <th>Col B</th> 
     <th>Col C</th> 
     <th>Col D</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>Field A</td> 
     <td>Field B</td> 
     <td>Field C</td> 
     <td>Field D</td> 
    </tr> 
    </tbody> 
</table> 

比方說,我要選擇的第2列的td,即<td>Field B</td>,但我想表達出來尋找標題爲"Col B"的列。換句話說,我想選擇<td>Field B</tb>,其中有position()=2,但不是硬編碼2,我想通過查找其文本爲"Col B"th來派生它。

我當然可以選擇th,使用

$x("//th[text()='Col B']") 

但現在我想提取thposition()(等於2),並用它來選擇td其位置。

概念,我想這樣做以下,但實際上這並不是有效的XPath:

$x("//td[position()=//th[text()='Col B'][position()]") 

這可能不知?

回答

1

你可以指望它之前,其字符串值th爲任何給定值,比如說,"Col B"th元件的數量,並使用該計數來選擇對應的td元素:

//td[count(//th[.='Col B']/preceding-sibling::th)+1] 
+0

正是我需要的。謝謝! – meetamit

+1

不客氣。感謝這樣一個精心制定的有趣問題。 – kjhughes