
- •Лекция 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. Операторы импорта
Операторы импортамогут импортировать данные из другого (библиотечного) модуля или из схемы документа XML.
Оператор импорта библиотечного модуляимеет следующий вид:
import module namespace пространство-имен="целевое-URI"
at "URI-1,…";
В параметре пространство-имензадается префикс целевого пространства имен, а в его значении"целевое-URI" задается идентификатор ресурса для целевого пространства имен. Это целевое пространство имен будет пространством имен по умолчанию для имен переменных и функций, определенных в модуле. После ключевого словаatуказывается идентификатор или идентификаторы ресурса для импортируемого модуля. Если в реализации обработчика запросов XQuery можно использовать альтернативный способ задания местоположения импортируемых модулей, ключевое словаatи идентификатор ресурса можно пропустить.
Примеры задания оператора импорта библиотечных модулей:
1. import module namespace myns1="http://my.domain/ns1"
at"http://my.domain/ns1.xq";– импортирует модуль по адресу"http://my.domain/ns1.xq" с целевым пространством имен myns1, определенным по адресу"http://my.domain/ns1".
2. import module namespace math="http://example.org/math-functions";– импортирует модуль с целевым пространством имен math, определенным по адресу"http://example.org/math-functions".
Оператор импорта схемы документа XMLимеет одну из следующих форм:
import schema namespace пространство-имен="целевое-URI"
at "URI-1,…";
или
import schema default element namespace "целевое-URI"
at"URI-1,…";
В первом случае задаваемые параметры имеют тот же смысл, что и при импортировании модулей. Во втором случае схема импортируется только указанием ее целевого пространства имен, которое становится пространством по умолчанию для элементов и типов, заданных в схеме.
Примеры задания оператора импорта схемы документа XML:
1. import schema namespace xsd1="http://my.domain/nsxsd1"
at"http://my.domain/nsxsd1.xsd";– импортирует схему по адресу"http://my.domain/nsxsd1.xsd" с целевым пространством имен xsd1, определенным по адресу"http://my.domain/nsxsd1".
2. import schema default element
namespace"http://my.dom2/xsd2";– импортирует схему с целевым пространством имен, которое становится пространством по умолчанию.
5.1.2.1.1.6. Объявления пространства имен
Объявление пространства именимеет следующий вид:
declare namespaceпространство-имен="URI";
Параметр пространство-именобъявляет префикс пространства имен, а его значение задает адрес ресурса для этого пространства имен.
В результате этого объявления создается новый узел пространства имен, связанный с заданным ресурсом.
Пример объявления пространства имен:
declare namespace email="http://email.com";– объявляет пространство имен с префиксомemailпо адресу"http://email.com".
В XQuery определены также пять пространств имен по умолчанию, которые создаются до обработки первого запроса:
xml=http://www.w3.org/XML/1998/namespace– пространство имен XML;
xs=http://www.w3.org/2001/XMLSchema– пространство имен схемы XML;
xsi=http://www.w3.org/2001/XMLSchema-instance– пространство экземпляров схем XML;
fn=http://www.w3.org/2005/xpath-functions– пространство имен функций XPath;
local=http://www.w3.org/2005/xquery-local-functions– пространство имен локальных функций, задаваемых с помощью объявления функции.
Тело запроса, содержащее выражение, вычисляется, и полученное значение является результатом запроса. Формирование тела запроса рассмотрено ниже.