Подтвердить что ты не робот

Что такое XPath для выбора диапазона узлов?

У меня есть XML файл, который структурирован так:

 <foo>
     <bar></bar>
     <bar></bar>
     ...
</foo>

Я не знаю, как получить диапазон узлов. Может ли кто-нибудь дать мне пример выражения XPath, которое захватывает узлы бара 100-200?

4b9b3361

Ответ 1

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

/*/bar[position() >= 100 and not(position() > 200)]

Обратите внимание:

  • Точно выбираются элементы bar в позиции от 100 до 200 (включительно).

  • Оценка этих выражений XPath может быть во много раз быстрее, чем выражение, использующее аббревиатуру //, потому что последнее вызывает полное сканирование дерева, корень которого является контекстом node. Всегда старайтесь избегать использования аббревиатуры // в случаях, когда это возможно.

Ответ 2

//foo/bar[100 <= position() and position() < 200]

Ответ 3

Не лучше fn:subsequence?

subsequence( /foo/bar, 100, 101 )

возвращает все элементы из позиции от 100 до 200, то есть 101 элемент (или меньше, если исходная последовательность короче).