
- •Лекция 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.3.2. Операторwhere
Необязательный оператор whereимеет следующую форму:
where выражение
Этот оператор выполняет роль фильтра для кортежей связанных переменных, полученных в результате выполнения операторов forиlet. Заданное в операторевыражениевычисляется для каждого из кортежей и, если результат вычисления равенtrue, кортеж остается в последовательности. Если же результат вычисления равенfalse, кортеж удаляется из последовательности.
5.1.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, при сравнении, если два кортежа равны, они сохраняют тот же относительный порядок, что и в исходной последовательности.
5.1.3. ЯзыкXLink
В HTMLссылка на другой документ выполняется с помощью элементаaс обязательным атрибутомhref, в котором указывается URIтого документа, на который производится ссылка. Кроме того, с помощью этого же элемента с атрибутомnameилиidможно пометить любой элемент документа, для того, чтобы на этот элемент можно было сослаться в атрибутеhref.
Однако связывание в HTMLимеет следующие ограничения:
ссылка может быть только однонаправленной, т.е. сослаться можно только на один документ или фрагмент документа;
ссылаться можно только на помеченный элемент, т.е. ссылки на второе предложение третьего абзаца недопустимы;
ссылки по контексту (содержимому) документа, например, абзац или предложение, содержащее слово Internet в документе недопустимы;
ссылка выполняется только при щелчке мышью;
документ, на который ссылается данный документ, всегда замещает данный документ;
ссылка не учитывает историю предыдущих ссылок, а также отношений между документами.
Для преодоления этих недостатков консорциумом W3Cбыли разработаны два языка: язык связыванияXML–XLink(XMLLinkingLanguage) и язык указателейXML–XPointer(XMLPointerLanguage).
Язык XLinkопределяет, как один документXMLсвязывается с другим документом, а языкXPointerопределяет, как адресуются отдельные части документа. Однако разработка языкаXPointerфактически прекращена поскольку его функции выполняют языки XPath и XQuery.