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], что явно неверно. Он выбирает 2 на странице 1, но не 3 на странице 2, как ожидалось. Я бы попытался использовать [text()[contains(.,'[')]] для выбора текущей страницы, но скобки находятся вне привязки, а не внутри. Эй!?

Было бы очень признательно, если бы вы могли объяснить мыслительный процесс вместе с вашим решением, а не просто вставлять ответ. С нетерпением жду вашей помощи.


person user272492    schedule 13.02.2010    source источник


Ответы (1)


Следующую страницу после 2 найдет:

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

Сначала мы выбираем текущую страницу на основе ее строкового содержимого //tr/td/a[.='2'], а оттуда выбираем первого следующего брата.

Чтобы сделать это, не зная текущую страницу, мы вместо этого выберем элемент a после «]».

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

И в случае, если текущей страницы нет, мы по умолчанию будем использовать первый элемент a.

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