2010-02-13 53 views
3

对不起,如果我不明确解释这一点。我会尽我所能来澄清我正在尝试做什么。毫不费力...假设您在页面上有一系列数字(仅用空格分隔),其中的括号表示您当前的页面。Xpath选择以下(数字)在锚帮助内的兄弟

它看起来像这样在页面上:

[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/following-sibling :: a [1],这显然是不正确的。它按照预期在页面1上选择2,但在页面2上不选择3。我会尝试使用[text()[contains(。,'[']]]来选择当前页面,但括号不在锚点之内,而不是在内部。伊克!?

如果你能解释思维过程和解决方案,而不只是粘贴答案,那将是非常值得赞赏的。期待您的帮助。

回答

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] 
+0

奇妙的作品,非常有意义。非常感谢。 – user272492 2010-02-13 18:57:59