Книга: Технология XSLT
Пути выборки
Пути выборки
Путь выборки является самым главным видом выражений, которые применяются в XSLT. Путь выборки в соответствии с некоторыми критериями выбирает множество узлов входящего документа.
Путь выборки может быть абсолютным (отсчитываться от корневого узла дерева) или относительным (отсчитываться от контекстного узла). Он может состоять из нескольких шагов выборки, каждый из которых относительно предыдущего шага (или начального узла) выбирает некоторое множество узлов. Результатом вычисления пути выборки является множество узлов, выбранное его последним шагом.
Пример
Предположим, что нам нужно получить узел элемента title
, находящийся в элементе head
, который находится в элементе html
, находящемся в корне документа. Соответствующий путь выборки будет выглядеть как:
/html/head/title
Означает он примерно следующее:
? "/
" — ведущая косая черта обозначает абсолютный путь выборки, то есть путь, который отсчитывается от корневого узла;
? "html
" — шаг выборки элементов html
;
? "/
" — разделитель шагов выборки;
? "head
" — шаг выборки элементов head
;
? "/
" — разделитель шагов выборки;
? "title
" — шаг выборки элементов title
.
Поскольку каждый из шагов отсчитывается от результатов предыдущего, шаг "html
" будет выбирать элементы html
, являющиеся дочерними элементами корневого узла и так далее. Пошаговое вычисление этого пути можно описать следующим образом:
? "/
" — путь, который выбирает корневой узел;
? "/html
" — путь, который выбирает дочерние элементы html
корневого узла;
? "/html/head
" — путь, который выбирает дочерние элементы head
элементов html
, находящихся в корне документа;
? "/html/head/title
" — путь, выбирающий дочерние элементы title
субэлементов head
элементов html
, которые находятся в корне документа.
Можно заметить очевидную аналогию с файловыми системами: пути выборки очень похожи на пути в структуре каталогов. Между тем, пути выборки гораздо мощнее:
? для каждого из шагов выборки можно указать направление, в котором он будет выбирать узлы в документе — например, дочерние узлы, узлы- потомки или, наоборот, узлы-предки или братские узлы;
? выбор узлов может проводиться не только по имени, но также и по типу или принадлежности определенному пространству имен;
? выбранное на каждом шаге множество может фильтроваться одним или более предикатом (в отфильтрованном множестве останутся только те из выбранных узлов, которые поочередно удовлетворяют каждому из логических условий-предикатов).
Пути выборки являются средством получения информации, содержащейся в обрабатываемых документах. Неважно, что они возвращают множества узлов, неявное преобразование типов позволяет спокойно записывать выражения вида:
data/a + data/b
Несмотря на то, что data/a
и data/b
являются множествами узлов, в арифметическом выражении они будут неявно преобразованы к численному типу. То же самое касается строкового и булевого типа.
- Использование в выражениях путей выборки
- Выбор пути развития компании
- Ограничение результатов выборки FIRST
- 10.5. Транзакции и пути доступа меню
- 1. Унарная операция выборки
- 1. Операция выборки.
- Барьеры на пути подражателей
- Пути к отступлению
- 9.5.2. Поиск пути в графе
- Конверсионные пути на мини-сайтах
- Построение пути сертификации
- 11.4. Пути автоматизации процессов управления производством MRP – системы