Найдите верхнюю часть столбца с помощью xpath - PullRequest
2 голосов
/ 14 апреля 2011

Скажем, HTML-таблица выглядит следующим образом:

<tr> <td>     </td> <th> black </th> <th> white </th> </tr>
<tr> <th> 1st </th> <td> stuff </td> <td> stuff </td> </tr>
<tr> <th> 2nd </th> <td> earth </td> <td> stuff </td> </tr>
<tr> <th> 3rd </th> <td> stuff </td> <td> bingo </td> </tr>

Скажите также, что я нашел ячейку таблицы, помеченную как "bingo", используя XPath, возможно, с:

@cell = @table.xpath('.//td[contains(text(), "bingo")]')

(Вот как вы это сделаете с Nokogiri.)

Тогда каков канонический способ взять @cell и использовать его, чтобы найти заголовок, который возглавляет столбец, содержащий эту ячейку?

То естьКаков канонический способ превращения «бинго» в «белое» и «земля» в «черное»?

1 Ответ

4 голосов
/ 14 апреля 2011

Для нормализованной таблицы это относительное выражение XPath из любой td или th "ячейки":

preceding::*[
   self::td|self::th
][
   position() mod count(../*) = 0
][
   last()
]
...