Xpath在锚点帮助中选择以下(数字)兄弟

时间:2010-02-13 18:06:16

标签: xpath next siblings

如果我不清楚解释这一点,请提前抱歉。我会尽力澄清我想要做的事情。没有进一步的假设...假设您在页面上有一系列数字(仅由空格分隔),其中括号表示您当前所在的页面。

在页面上看起来像这样:

[1] 2 3

HTML看起来像这样:

<tr>
<td>

[<a href='link1.php'>1</a>] <a href='link2.php'>2</a> <a href='link3.php'>3</a> 

</td>
</tr>

我只是想根据当前选择下一页码。我想我需要使用某种形式的后续兄弟,但我想出的只是// tr / td / a / follow-sibling :: a [1],这显然是不正确的。它在第1页上选择2但在第2页时不按预期选择3。我本来试图使用[text()[contains(。,'[')]]来选择当前页面但是括号在锚点之外而不是在内部。伊克!?

如果你能解释思考过程和你的解决方案而不仅仅是粘贴答案,那将非常感激。期待您的帮助。

1 个答案:

答案 0 :(得分:6)

2之后的下一页将通过以下方式找到:

//tr/td/a[.='2']/following-sibling::a[1]

首先,我们根据字符串内容//tr/td/a[.='2']选择当前页面,然后从中选择第一个后续兄弟。

要在不知道当前页面的情况下执行此操作,我们将选择“]”之后的元素。

//tr/td/text()[']'=normalize-space(.)]/following-sibling::a[1]

如果没有当前页面,我们将默认为第一个元素。

//tr/td/( text()[']'=normalize-space(.)]/following-sibling::a | a )[1]