Я не знаю, как получить диапазон узлов. Может ли кто-нибудь дать мне пример выражения XPath, которое захватывает узлы бара 100-200?
Ответ 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 элемент (или меньше, если исходная последовательность короче).