
- •Лекция 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.4.5.2. Функции извлечения компонент
В XPath и XQuery для извлечения компонент из данных продолжительности, дат и времени определены следующие функции:
fn:years-from-duration($arg as xs:duration?) as xs:integer?– возвращает количество лет в продолжительности;
fn:months-from-duration($arg as xs:duration?) as xs:integer?– возвращает количество месяцев в продолжительности;
fn:days-from-duration($arg as xs:duration?) as xs:integer?– возвращает количество дней в продолжительности;
fn:hours-from-duration($arg as xs:duration?) as xs:integer?– возвращает количество часов в продолжительности;
fn:minutes-from-duration($arg as xs:duration?) as xs:integer?
fn:seconds-from-duration($arg as xs:duration?) as xs:decimal?– возвращает количество минут в продолжительности;
fn:year-from-dateTime($arg as xs:dateTime?) as xs:integer?– возвращает значение года в дате и времени;
fn:month-from-dateTime($arg as xs:dateTime?) as xs:integer?– возвращает значение индекса месяца в дате и времени;
fn:day-from-dateTime($arg as xs:dateTime?) as xs:integer?– возвращает значение дня месяца в дате и времени;
fn:hours-from-dateTime($arg as xs:dateTime?) as xs:integer?– возвращает значение количества часов в дате и времени;
fn:minutes-from-dateTime($arg as xs:dateTime?) as xs:integer?– возвращает значение количества минут в дате и времени;
fn:seconds-from-dateTime($arg as xs:dateTime?) as xs:decimal?– возвращает значение количества секунд в дате и времени;
fn:timezone-from-dateTime($arg as xs:dateTime?) as xs:dayTimeDuration?– возвращает значение смещения временной зоны в дате и времени;
fn:year-from-date($arg as xs:date?) as xs:integer?– возвращает значение года в дате;
fn:month-from-date($arg as xs:date?) as xs:integer?– возвращает значение индекса месяца в дате;
fn:day-from-date($arg as xs:date?) as xs:integer?– возвращает значение дня месяца в дате;
fn:timezone-from-date($arg as xs:date?) as xs:dayTimeDuration?– возвращает значение для временной зоны в дате;
fn:hours-from-time($arg as xs:time?) as xs:integer?– возвращает значение часов для времени;
fn:minutes-from-time($arg as xs:time?) as xs:integer?– возвращает значение минут для времени;
fn:seconds-from-time($arg as xs:time?) as xs:decimal?– возвращает значение секунд для времени;
fn:timezone-from-time($arg as xs:time?) as xs:dayTimeDuration?– возвращает значение временной зоны для времени.
Примеры использования функций извлечения компонент для продолжительности, дат и времени:
1. fn:years-from-duration(xs:yearMonthDuration("P20Y10M")) –
возвращает 20.
2. fn:months-from-duration(xs:yearMonthDuration("P20Y10M")) –
возвращает 10.
3. fn:days-from-duration(
xs:dayTimeDuration("P12DT11H15M30S")) – возвращает 12.
4. fn:hours-from-duration(
xs:dayTimeDuration("P12DT10H15M30S")) – возвращает11.
5. fn:minutes-from-duration(
xs:dayTimeDuration("P12DT10H15M30S")) – возвращает15.
6. fn:seconds-from-duration(
xs:dayTimeDuration("P12DT10H15M30S")) – возвращает 30.
7. fn:year-from-dateTime(
xs:dateTime("2007-11-18T13:20:00+02:00")) – возвращает 2007.
8. fn:minutes-from-dateTime(
xs:dateTime("2007-11-18T13:20:00+02:00")) – возвращает 20.
9. fn:timezone-from-dateTime(
xs:dateTime("2007-11-18T13:20:00+02:00")) – возвращает PT2H.
10. fn:year-from-date(xs:date("2006-01-01")) – возвращает 2006.
11. fn:day-from-date(xs:date("2006-01-01")) – возвращает 1.
12. fn:timezone-from-date(xs:date("2006-01-01-02:00")) – возвращает -PT2H.
13. fn:hours-from-time(xs:time("02:00:12")) – возвращает 2.
14. fn:seconds-from-time(xs:time("02:00:12")) – возвращает 12.
15. fn:timezone-from-time(xs:time("02:00:12+02:00")) – возвращает PT2H.