如果我不清楚解释这一点,请提前抱歉。我会尽力澄清我想要做的事情。没有进一步的假设...假设您在页面上有一系列数字(仅由空格分隔),其中括号表示您当前所在的页面。
在页面上看起来像这样:
[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(。,'[')]]来选择当前页面但是括号在锚点之外而不是在内部。伊克!?
如果你能解释思考过程和你的解决方案而不仅仅是粘贴答案,那将非常感激。期待您的帮助。
答案 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]