XPath, чтобы найти последние 3 элемента в предыдущем диапазоне - PullRequest
0 голосов
/ 29 марта 2012

Скажем, у меня есть следующий фрагмент XML:

<ul>
  <li>alice</li>
  <li>bob</li>
  <li>carla</li>
  <li>dave</li>
  <li>eric</li>
  <li>fanny</li>
</ul>
<team>Team 1</team>

Я хочу, чтобы последние 3 участника (Дейв, Эрик, Фанни).

Я могу захватить всех членов команды с помощью //team/preceding::li,

Мне не удалось захватить 3 последних участника с диапазоном

//team/preceding::li[last()-3 to last()] или позицией //team/preceding::li[position() > last()-3]

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Пока вы находитесь в контексте разрешения preceding::, порядок наоборот - и впоследствии возвращается к порядку документов.

xml sel -t -c '//team/preceding::li[position() <= 3]' foo.xml 
<li>dave</li><li>eric</li><li>fanny</li>
1 голос
/ 29 марта 2012

для XML

<ul>
  <li>alice</li>
  <li>bob</li>
  <li>carla</li>
  <li>dave</li>
  <li>eric</li>
  <li>fanny</li>
</ul>

использование

//li[position() > last() - 3]

он выбирает ровно 3 последних узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...