
- •Лекция 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.3. Строковые функции
В XPathи XQuery определены следующие типы строковых функций:
функции сборки-разборки строк;
функции сравнения строк;
функции строковых значений;
функции поиска соответствия в строках;
функции с использованием шаблонов регулярных выражений.
5.1.1.4.3.1. Функции сборки-разборки строк
Функция
fn:codepoints-to-string($arg as xs:integer*) as xs:string
создает строку из заданных в десятичных кодов Unicode, а функция
fn:string-to-codepoints($arg as xs:string?) as xs:integer*
выполняет обратное преобразование
Примеры использования функций сборки-разборки строк:
1. fn:codepoints-to-string((1071,1079,1096,1082,32,104,96,
129,116,104))– преобразует коды символов, заданные в аргументе, в строку "Язык XPath".
2. fn:string-to-codepoints("Язык XPath")– преобразует коды символов, заданные в аргументе, в последовательность(1071,1079,1096,1082,32,
104,96,129,116,104).
5.1.1.4.3.2. Функции сравнения строк
Функция
fn:compare($comparand1 as xs:string?,
$comparand2 as xs:string?) as xs:integer?
сравнивает две строки и возвращает -1, если первая строка меньше второй,0, если строки равны и1, если первая строка больше второй.
Функция
fn:codepoint-equal($comparand1 as xs:string?,
$comparand2 as xs:string?) as xs:boolean?
возвращает trueилиfalseв зависимости от того, равны или не равны последовательности кодовUnicode, составляющие строки $comparand1и$comparand2.
Примеры использования функций сравнения строк:
1. fn:compare("abc", "acd")– возвращает значение-1.
2. fn:codepoint-equal("abc", "acd") – возвращает значениеfalse.
5.1.1.4.3.3. Функции строковых значений
В XPathопределены следующие основные функции для строковых значений:
fn:string-length($arg as xs:string?) as xs:integer– возвращает количество символов в строке;
fn:concat($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?, ... ) as xs:string– возвращает строку-конкатенацию всех строк, заданных в качестве аргументов;
fn:string-join($arg1 as xs:string*, $arg2 as xs:string) as xs:string– возвращает строку-конкатенацию всех строк, причем в качестве разделителя между аргументами в строке используется строка, заданная в$arg2;
fn:substring($sourceString as xs:string?, $startingLoc as xs:double, $length as xs:double) as xs:string– возвращает подстроку строки$sourceString, начиная с индекса$startingLoc длиной$length(если третий аргумент не задан, возвращается подстрока до конца строки). Нумерация индексов в строке начинается с 1;
fn:normalize-space($arg as xs:string?) as xs:string– возвращает нормализованную строку, т.е. строку, в которой удалены все начальные и конечные пробелы, а все пробелы, количество которых внутри строки больше одного, сокращены до одного пробела;
fn:upper-case($arg as xs:string?) as xs:string– возвращает строку, в которой все строчные буквенные символы заменены заглавными буквами;
fn:lower-case($arg as xs:string?) as xs:string– возвращает строку, в которой все заглавные буквенные символы заменены строчными буквами;
fn:translate($arg as xs:string?, $mapString as xs:string, $transString as xs:string) as xs:string– заменяет в строке$argвсе вхождения символа в i-ой позиции в$mapStringсимволом в i-ой позиции в$transString.
Примеры использования функций для строковых значений:
1. fn:string-length("abc") – возвращает число3.
2. fn:concat("The"," ", "XML") – возвращает строку"The XML".
3. fn:string-join("ab","cd","e",":") – возвращает строку"ab:cd:e".
4. fn:substring("abcdef",3,2) – возвращает строку"cd".
5. fn:substring("abcdef",3) – возвращает строку"cdef".
6. fn:normalize-space(" ab cd ef ") – возвращает строку
"ab cd ef").
7. fn:upper-case("ABc") – возвращает строку "ABC".
8. fn:lower-case("ABc") – возвращает строку "abc".
9. fn:translate("ABc","Ac","aC") – возвращает строку "aBC".