У меня есть следующий HTML
<html>
[snip]
<table>
[snip]
<tr><td>One</td><td>1-1</td></tr>
[snip]
</table>
[snip]
<table>
[snip]
<tr><td>One</td><td>1-1-1</td></tr>
[snip]
</table>
</html>
.. и я пытаюсь получить значение "1-1-1", используя следующий xpath
//tr[td[1] = 'One'][2]/td[2]
Я бы описал это как получение значения 2-го элемента td из 2-го элемента tr, который содержит хотя бы один элемент td, где значением 1-го элемента td является 'One'. Я пробовал различные изменения, такие как position()=last()
, но безрезультатно.
Я только знаю, что второе вхождение текста «Один» в первой ячейке родительской строки идентифицирует строку, из которой я могу извлечь текст из 2-й ячейки ... поэтому что-то жестко закодированное не будет работать (например, //table[2]/tr[1]/td[2]
).
Может кто-нибудь сказать мне, почему вышеупомянутый xpath не будет работать? Я посмотрел на сайте w3c и нашел xpaths вроде:
child::*[self::chapter or self::appendix][position()=last()]
Описывается как:
выбирает последнюю главу или приложение дочернего элемента контекстного узла
.. что похоже на то, что я пытаюсь сделать, но, возможно, вложение запрещено ..