
- •Лекция 4-05
- •Раздел 5. Обработка документов xml
- •Тема 5.1. Вспомогательные языки xml
- •Раздел 5. Обработка документовXml Тема 5.1. Вспомогательные языки xml
- •5.1.1. Язык xPath
- •5.1.1.1. Назначение и спецификации языка xPath
- •5.1.1.2. Типы данных в языках xPath и xQuery
- •5.1.1.3. ВыраженияXPath
- •5.1.1.3.1. Переменные и литералы
- •5.1.1.3.2. Числовые выражения
- •5.1.1.3.3. Выражения отношения
- •5.1.1.3.4. Булевские выражения
- •5.1.1.3.5. Выражения для типов последовательности
- •5.1.1.3.6. Условные выражения
- •5.1.1.3.7. Последовательности
- •5.1.1.3.8. Циклы
- •5.1.1.3.9. Квантификаторы
- •5.1.1.3.10. Выражения для последовательностей узлов
- •5.1.1.3.11. Приоритет операций
- •5.1.1.4. ФункцииXPathи xQuery
- •5.1.1.4.1. Функции-конструкторы
- •5.1.1.4.2. Числовые операторы и функции
- •5.1.1.4.3. Строковые функции
- •5.1.1.4.3.1. Функции сборки-разборки строк
- •5.1.1.4.3.2. Функции сравнения строк
- •5.1.1.4.3.3. Функции строковых значений
- •5.1.1.4.3.4. Функции поиска соответствия в строках
- •5.1.1.4.3.5. Функции с использованием регулярных выражений
- •5.1.1.4.4. Булевские функции и операторы
- •5.1.1.4.5. Функции и операторы для продолжительности, дат и времени
- •5.1.1.4.5.1. Операторы сравнения
- •5.1.1.4.5.2. Функции извлечения компонент
- •5.1.1.4.5.3. Арифметические операторы для продолжительности, дат и времени
- •5.1.1.4.6. Функции для узлов
- •5.1.1.4.7. Функции и операторы для последовательностей
- •5.1.1.4.7.1. Общие функции и операторы
- •5.1.1.4.7.2. Функции проверки количества элементов в последовательности
- •5.1.1.4.7.3. Функции и операторы для операций с множествами
- •5.1.1.4.7.4. Агрегатные функции
- •5.1.1.4.7.5. Операторы и функции, генерирующие последовательности
- •5.1.1.4.8. Контекстные функции
- •5.1.1.5. Выражения пути в xPath
- •5.1.1.5.1. Синтаксис выражений пути
- •5.1.1.5.2. Шаги с использованием оси поиска
- •5.1.1.5.2.2. Проверка узла
- •5.1.1.5.2.3. Предикаты
- •5.1.1.5.2.4. Сокращенный синтаксис выражений с использованием путей поиска
- •5.1.1.5.3. Шаги с использованием фильтров
- •5.1.2. Язык xQuery
- •5.1.2.1. Структура запроса xQuery
- •5.1.2.1.1. Главный модуль
- •5.1.2.1.1.1. Объявления параметров настройки
- •5.1.2.1.1.2. Объявления переменных
- •5.1.2.1.1.3. Объявления функций
- •5.1.2.1.1.4. Объявления опций
- •5.1.2.1.1.5. Операторы импорта
- •5.1.2.1.1.6. Объявления пространства имен
- •5.1.2.1.2. Библиотечный модуль
- •5.1.2.1.3. Комментарии
- •5.1.2.2. КонструкторыXQuery
- •5.1.2.2.1. Прямой конструктор
- •5.1.2.2.2. Вычисляемый конструктор
- •5.1.2.2.2.1. Вычисляемые конструкторы элемента и атрибута
- •5.1.2.2.2.2. Вычисляемый конструктор документа
- •5.1.2.2.2.3. Вычисляемый конструктор текстового узла
- •5.1.2.2.2.4. Вычисляемый конструктор комментария
- •5.1.2.2.2.5. Вычисляемый конструктор инструкции по обработке
- •5.1.2.3. Выражения flwor
- •5.1.2.3.1. Операторыfor,letиreturn
- •5.1.2.3.2. Операторwhere
- •5.1.2.3.3. Операторorderby
- •5.1.3. ЯзыкXLink
- •5.1.3.1. Глобальные атрибуты языкаXLink
- •5.1.3.2. Простые ссылки
- •5.1.3.3. Расширенные ссылки
- •5.1.3.4. Внешние ссылки
- •5.1.3.5. Задание базовогоUrIдля документаXml
5.1.1.3.10. Выражения для последовательностей узлов
Язык XPath рассматривает последовательности узлов дерева документа XML как элементы множества. Для этих множеств элементов определены операции объединения, пересечения и дополнения.
Операция объединенияпоследовательностей узлов записывается в виде
операнд-1unionоперанд-2
или
операнд-1|операнд-2.
Значениями операнда-1иоперанда-2 являются две последовательности узлов. Результатом выполнения операции является последовательность узлов, содержащая все узлыоперанда-1иоперанда-2(одинаковые узлы появляются в результирующей последовательности только один раз).
Операция пересеченияпоследовательностей узлов записывается в виде
операнд-1intersectоперанд-2.
Значениями операнда-1иоперанда-2 являются две последовательности узлов. Результатом выполнения операции является последовательность узлов, содержащая только общие узлыоперанда-1иоперанда-2.
Операция дополненияпоследовательностей узлов записывается в виде
операнд-1exceptоперанд-2.
Значениями операнда-1иоперанда-2 являются две последовательности узлов. Результатом выполнения операции является последовательность узлов, содержащая только те узлыоперанда-1, которые не содержатся воперанде-2.
Примеры выражений для последовательностей узлов:
1. (A,B,C,G) union (A,С,D,F)– результатом будет последовательность узлов(A,B,C,G,D,F).
2. (A,B,C,G) intersect (A,С,D,F)– результатом будет последовательность узлов(A,C).
3. (A,B,C,G) except (A,С,D,F)– результатом будет последовательность узлов(B,G).
5.1.1.3.11. Приоритет операций
В XPathопределен следующий приоритет операций (в порядке убывания приоритета):
раскрытие скобок – (),[]или{}.
операции с путями выборки;
унарная операция отрицания (-);
операция приведения типа (cast);
операция проверки возможности приведения типа (castable);
операция приведения значения типа (treat);
операция проверки типа (instance of);
операции пересечения и дополнения множеств(intersectиexcept);
операция объединения множеств (| илиunion);
операции умножения, деления, деления нацело и вычисление остатка от деления (*,div,idivиmod);
операции сложения и вычитания (+и-);
операция диапазона (to);
операции сравнения (eq, ne, lt, le, gt, ge, =, !=, <, <=, >, >=, is, <<, >>);
операция И(and);
операция ИЛИ(or);
операции цикла (for), квантификаторы (someиevery), условная операция (if);
операция запятая (,).
5.1.1.4. ФункцииXPathи xQuery
Операндами в выражениях XPathмогут быть вызовы функций. Определенная в спецификации общая библиотекаXPathи XQuery включает набор базовых функций и операторов для преобразования данных.
Общее определение функции в XPathи XQuery имеет следующий вид:
fn:имя-функции($имя-параметра-1asтип-параметра-1,...)
asтип-возвращаемого-значения
В описании типа параметра может быть использован тип numeric, что соответствует любому из следующих типов:xs:integer,xs:decimal,xs:floatиxs:double.
Для некоторых функций может быть задан только один аргумент или аргумент может отсутствовать. Для обозначения такой ситуации после типа аргумента ставится символ "?":
fn:имя-функции($имя-параметра-1asтип-параметра-1?)
asтип-возвращаемого-значения
Для некоторых функций может отсутствовать возвращаемое значение. Для обозначения такой ситуации после типа возвращаемого значения ставится символ "?":
fn:имя-функции($имя-параметра-1asтип-параметра-1,...)
asтип-возвращаемого-значения?
В некоторых функциях аргумент может отсутствовать или может быть задано оди и более однотипных аргументов. Для обозначения такой ситуации после типа аргумента ставится символ "*":
fn:имя-функции($имя-параметра-1asтип-параметра-1*)
asтип-возвращаемого-значения
Обращение к функции выполняется следующим образом:
fn:имя-функции($аргумент-1, $аргумент-2,...)
В XPathи XQuery определены следующие основные виды функций и операторов:
функции-конструкторы;
числовые функции и операторы;
строковые функции;
булевские функции и операторы;
функции и операторы для продолжительности, дат и времени;
функции для узлов;
функции и операторы для последовательностей;
контекстные функции.