
- •Лекция 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.2.1.1. Главный модуль
Главный модульсостоит из пролога, за которым следует тело запроса.
Прологсодержит:
объявления параметров настройки;
объявления переменных;
объявления функций;
объявления опций;
операторы импорта;
объявления пространства имен.
Разделителем между компонентами пролога является символ ";".
5.1.2.1.1.1. Объявления параметров настройки
Объявления параметров настройкипозволяют задать:
правила обработки граничных пробелов в выражениях;
базовый URI для запроса;
режим работы конструкторов;
режим следования узлов;
порядок следования пустых последовательностей;
копирование пространства имен;
упорядочивание строк по умолчанию.
Правила обработки граничных пробеловв выражении задаются с помощью следующего объявления:
declare boundary-space тип-обработки;
Если для типа-обработкизадано значениеstrip, пробелы в начале и в конце вычисляемого выражения удаляются, если же задано значениеpreserve– сохраняются.
Базовый URIзадается с помощью следующего объявления:
declare base-uri "URI";
Это объявление используется, когда необходимо разрешить относительные ссылки внутри модуля.
Режим работы конструкторовзадается с помощью следующего объявления:
declare construction strip тип-обработки;
Если для типа-обработкизадано значениеstrip, типом сконструированного элемента являетсяxs:untyped, все копируемые во время конструирования элементы также получают типxs:untyped, а атрибуты получают типxs:untypedAtomic. Если задано значениеpreserve, типом сконструированного элемента являетсяxs:anyType, а все копируемые во время конструирования элементы и атрибуты сохраняют свои типы.
Режим следования узловзадается с помощью объявления:
declare orderingрежим-следования;
Если для режима-следования задано значениеordered, узлы в выражениях пути обрабатываются в том порядке, в котором они следуют в документе, если же задано значениеunordered, узлы следуют друг за другом в порядке, определяемом реализацией обработчика запросов.
Порядок следования пустых последовательностейдля результата обработки оператораorder by задается с помощью объявления:
declare default orderпорядок-следования;
Если для порядка-следования задано значениеempty greatest, пустой узел выводится последним, если же задано значениеempty least, пустой узел выводится первым.
Копирование пространства именуправляет процессом обработки при копировании узла элемента с помощью конструктора элемента или документа и задается с помощью объявления:
declare copy-namespacesрежим-сохранения,режим-наследования;
Если для режима-сохранения задано значениеpreserve, все пространства имен сохраняются в скопированном элементе, если же задано значениеno-preserve, сохраняются только те пространства имен, которые используются в именах элементов и их атрибутов. Если длярежима-наследования задано значениеinherit, копируемый узел наследует все доступные пространства имен первоначального узла вместе с узлами, сохраняемыми в копируемом элементе с помощью задания параметраpreserve. Если же задано значениеno-inherit, доступные пространства имен не сохраняются в копируемом элементе.
Упорядочивание строк по умолчаниюуправляет алгоритмом сравнения строк, который является различным для разных языков и задается с помощью следующего объявления:
declare default collation "URI";
где параметр "URI"задает ресурс, в котором определены правила сравнения символов строк.