使用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>
假设我想选择第二列的td
,即<td>Field B</td>
,但我希望通过查找标题为"Col B"
的列来表达它。换句话说,我想选择<td>Field B</tb>
,position()=2
,而不是硬编码2,我想通过查找文本为{{1}的th
来推导它}。
当然,我可以使用
选择"Col B"
th
但现在我要提取$x("//th[text()='Col B']")
的{{1}}(等于2)并使用它来选择th
的位置。
从概念上讲,我想做类似以下的事情,除了它无效的XPath:
position()
这有可能吗?
答案 0 :(得分:1)
您可以计算其字符串值为任意给定值th
之前的th
个元素的数量,例如"Col B"
,并使用该计数选择相应的td
元素:
//td[count(//th[.='Col B']/preceding-sibling::th)+1]