- •Лабораторная работа 4-02
- •3.1.2. Типы данных в языках xPath и xQuery
- •3.1.3. Выражения xPath
- •3.1.3.1. Переменные и литералы
- •3.1.3.2. Числовые выражения
- •3.1.3.3. Выражения отношения
- •3.1.3.4. Булевские выражения
- •3.1.3.5. Выражения для типов последовательности
- •3.1.3.6. Условные выражения
- •3.1.3.7. Последовательности
- •3.1.3.8. Циклы
- •3.1.3.9. Квантификаторы
- •3.1.3.10. Выражения для последовательностей узлов
- •3.1.3.11. Приоритет операций
- •3.1.4. ФункцииXPathи xQuery
- •3.1.4.1. Функции-конструкторы
- •3.1.4.2. Числовые операторы и функции
- •3.1.4.3. Строковые функции
- •3.1.4.3.1. Функции сборки-разборки строк
- •3.1.4.3.2. Функции сравнения строк
- •3.1.4.3.3. Функции строковых значений
- •3.1.4.3.4. Функции поиска соответствия в строках
- •3.1.4.3.5. Функции с использованием регулярных выражений
- •3.1.4.4. Булевские функции и операторы
- •3.1.4.5. Функции и операторы для продолжительности, дат и времени
- •3.1.4.5.1. Операторы сравнения
- •3.1.4.5.2. Функции извлечения компонент
- •3.1.4.5.3. Арифметические операторы для продолжительности, дат и времени
- •3.1.4.6. Функции для узлов
- •3.1.4.7. Функции и операторы для последовательностей
- •3.1.4.7.1. Общие функции и операторы
- •3.1.4.7.2. Функции проверки количества элементов в последовательности
- •3.1.4.7.3. Функции и операторы для операций с множествами
- •3.1.4.7.4. Агрегатные функции
- •3.1.4.7.5. Функции, генерирующие последовательности
- •3.1.4.8. Контекстные функции
- •3.1.5. Выражения пути в xPath
- •3.1.5.1. Синтаксис выражений пути
- •3.1.5.2. Шаги с использованием оси поиска
- •3.1.5.2.1. Оси
- •3.1.5.2.2. Проверка узла
- •3.1.5.2.3. Предикаты
- •3.1.5.2.4. Сокращенный синтаксис выражений с использованием путей поиска
- •3.1.5.3. Шаги с использованием фильтров
- •3.2. Язык xQuery
- •3.2.1. Структура запроса xQuery
- •3.2.1.1. Главный модуль
- •3.2.1.1.1. Объявления параметров настройки
- •3.2.1.1.2. Объявления переменных
- •3.2.1.1.3. Объявления функций
- •3.2.1.1.4. Объявления опций
- •3.2.1.1.5. Операторы импорта
- •3.2.1.1.6. Объявления пространства имен
- •3.2.1.2. Библиотечный модуль
- •3.2.2. КонструкторыXQuery
- •3.2.2.1. Прямой конструктор
- •Xquery version "1.0";
- •3.2.2.2. Вычисляемый конструктор
- •3.2.2.2.1. Вычисляемые конструкторы элемента и атрибута
- •3.2.2.2.2. Вычисляемый конструктор документа
- •3.2.3. Выражения flwor
- •3.2.3.1. Операторыfor,letи return
- •3.2.3.2. Оператор where
- •3.2.3.3. Операторorderby
- •3.3. Выполнение запросов xQuery в среде xmlSpy
- •3.3.1. Создание файла запроса в xmlSpy
- •3.3.2. Выполнение запроса xQuery
- •4. Порядок выполнения работы
- •Вариант 3-01
- •Вариант 3-02
- •Вариант 3-03
- •Вариант 3-04
- •Вариант 3-05
- •Вариант 3-06
- •Вариант 3-07
- •Вариант 3-08
- •Вариант 3-09
- •Вариант 3-10
- •Вариант 3-11
- •Вариант 3-12
- •Вариант 3-13
- •Вариант 3-14
- •Вариант 3-15
- •Вариант 3-16
- •Вариант 3-17
- •Вариант 3-18
- •Вариант 3-19
- •Вариант 3-20
- •Вариант 3-21
- •Вариант 3-22
- •Вариант 3-23
- •Вариант 3-24
- •Вариант 3-25
- •Вариант 3-26
- •Вариант 3-27
- •Вариант 3-28
- •Вариант 3-29
- •Вариант 3-30
- •5. Содержание отчета
- •6. Вопросы для самоконтроля
3.2.3.2. Оператор where
Необязательный оператор whereимеет следующую форму:
where выражение
Этот оператор выполняет роль фильтра для кортежей связанных переменных, полученных в результате выполнения операторов forиlet. Заданное в операторевыражениевычисляется для каждого из кортежей и, если результат вычисления равенtrue, кортеж остается в последовательности. Если же результат вычисления равенfalse, кортеж удаляется из последовательности.
3.2.3.3. Операторorderby
Необязательный оператор order byизменяет порядок вывода элементов в кортеже и имеет одну из следующих форм:
order by выражение-1 модификатор-порядка-1,…
или
stable order by выражение-1 модификатор-порядка-1,…
Элемент модификатор-порядкасостоит из трех компонент, каждая из которых является необязательной.
Первая компонента может иметь либо значение ascending(сортировка в возрастающем порядке), либо значениеdescending(сортировка в убывающем порядке).
Вторая компонента может иметь либо значение empty greatest(пустой элемент – в конце потока кортежей), либо значениеempty least(пустой элемент – в начале потока кортежей).
Третья компонента задается в виде
collation "URI"
где "URI"– ссылка на ресурс, содержащий правила сравнения строк.
Если оператор order by задан, для каждого кортежа в потоке кортежей вычисляются значениявыраженияс учетом связей переменных. Относительный порядок двух кортежей определяется сравнением их значений слева направо в соответствии с заданнымвыражениемимодификатором-порядкапока не встретится пара неравных значений.
Если в операторе order byиспользуется ключевое словоstable, при сравнении, если два кортежа равны, они сохраняют тот же относительный порядок, что и в исходной последовательности.
3.3. Выполнение запросов xQuery в среде xmlSpy
3.3.1. Создание файла запроса в xmlSpy
Для создания файла запроса XQueryнадо нажать кнопку
на панели инструментов или выполнить
командуNewв менюFile.
В открывшемся окне выбирается тип
документа (xq,xqlилиxquery)
(рис. 4.3.2) и нажимается кнопкаOK.

Рис. 4.3.2. Выбор типа документа для запроса XQuery
Затем в окне Create new XQuery file(рис. 4.3.3) выбрать вторую радиокнопку.

Рис. 4.3.3. Выбор метода создания запроса XQuery
В результате открывается окно ввода и редактирования запроса, в котором в текстовом режиме вводится запрос XQuery(рис. 4.3.4). При использовании кириллицы в содержимом запроса необходимо выполнить командуEncodingв менюFileи выбрать в диалоговом окнеEncodingкодировкуCodepage 1251 (Cyrillic).

Рис. 4.3.4. Редактор и панели для создания и редактирования запросов XQuery
Слева в окне ввода и редактирования запроса размещены три панели:
панель ключевых слов XQuery (XQuery Keywords);
панель переменных XQuery (XQuery Variables);
панель функций XQuery (XQuery Functions).
Если выделить какую-либо строку в одной из этих панелей и дважды щелкнуть по ней мышью, то соответствующее ключевое слово, переменная или функция будут вставлены в запрос в позиции курсора.
Для проверки действительности запроса
XQueryнадо нажать на кнопку
,
либо выполнить командуValidateв менюXML,
либо нажать клавишуF8.
Компонент, в котором произошла ошибка,
выделяется темно-серой подсветкой, а в
нижней части редактора выводится значок
,
после которого располагается текст
сообщения об ошибке. Если документ
действительный, выводится значок
.
Затем с помощью команды Save AsменюFileзапросXQueryсохраняется как файл с соответствующим расширением на диске.
