Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-05.doc
Скачиваний:
6
Добавлен:
12.05.2015
Размер:
645.12 Кб
Скачать

5.1.1.4.1. Функции-конструкторы

Функции-конструкторы имеют следующее общее определение:

префикс:тип($аргументas xs:anyAtomicType?)asпрефикс:тип?

В этом определении префикс– это префикс пространства имен,тип– тип данного (встроенный или тип данных, определенный пользователем),аргумент– аргумент при обращении к функции-конструктору.

Для типа данного xs:dateTimeфункция-конструктор имеет специальный формат:

fn:dateTime($аргумент-1 as xs:date?, $ аргумент-1 as xs:time?)

as xs:dateTime?

Примеры функций-конструкторов:

1. xs:double("121")– преобразует строку в число с плавающей точкой двойной точности и возвращает полученное число.

2. fn:dateTime(xs:date("1999-12-31"), xs:time("12:00:00"))– возвращает дату типаxs:dateTimeсо значением "1999-12-31T12:00:00".

5.1.1.4.2. Числовые операторы и функции

Числовые операторывыполняют функции, аналогичные знакам арифметических одноместных и двуместных операций:

  • op:numeric-add– сложение;

  • op:numeric-subtract– вычитание;

  • op:numeric-multiply– умножение;

  • op:numeric-divide– деление;

  • op:numeric-integer-divide– деление нацело;

  • op:numeric-mod– взятие по модулю;

  • op:numeric-unary-plus– унарный плюс;

  • op:numeric-unary-minus– унарный минус.

Параметрами и возвращаемыми значениями являются данные типов xs:integer,xs:decimal,xs:floatиxs:double(типnumeric), а также производных от них типов. Для последних двух операторов определен один аргумент типа, для остальных операторов – два аргумента типаnumeric. Если типы аргументов не совпадают, перед выполнением операции выполняется преобразование к более общему типу.

Примеры числовых операторов:

1. op:numeric-add(12, 5)– возвращает значение17.

2. op:numeric-divide(12.3, 5)– преобразует второй аргумент в данное типаxs:doubleи возвращает значение2.46типаxs:double.

Операторы сравнениявыполняют функции, аналогичные функциям операторов в выражениях сравнения:

  • op:numeric-equal– сравнение на равенство;

  • op:numeric-less-than– сравнение на меньше, чем;

  • op:numeric-greater-than– сравнение на больше, чем.

Эти операторы возвращают trueилиfalseв зависимости от результата сравнения.

Примеры операторов сравнения:

1. op:numeric-equal(12, 12.0)– возвращает значениеtrue.

2. op:numeric-less-than(5, 8) – возвращает значение false.

В числовые функцииXPathвходят:

  • fn:abs($arg as numeric?) as numeric?– возвращает абсолютное значение заданного в аргументе числа;

  • fn:ceiling($arg as numeric?) as numeric?– возвращает наименьшее целое, которое не меньше, чем заданное в аргументе число;

  • fn:floor($arg as numeric?) as numeric?– возвращает наибольшее целое, которое не больше, чем заданное в аргументе число;

  • fn:round($arg as numeric?) as numeric?– возвращает заданное в аргументе число, округленное до ближайшего целого числа;

  • fn:round-half-to-even($arg as numeric?, $precision as xs:integer) as numeric?– округляет заданное в первом аргументе число; в сторону ближайшего числа с точностью, заданной во втором аргументе. Если второй аргумент больше 0, то это число показывает точность справа от десятичной точки, иначе – слева. Если последняя отбрасываемая цифра равна 5, выполняется округление до ближайшего четного числа. Если функция задана с одним аргументом, предполагается, что значение второго аргумента равно 0.

Примеры числовых функций:

1. ceiling(3.14)– возвращает число4.

2. floor(3.14)– возвращает число3.

3. round(3.14)– возвращает число3.

4. round-half-to-even(3.145, 2) – возвращает число 3.14.

5. round-half-to-even(3145, -2) – возвращает число 3100.

6. round-half-to-even(3.5, 2) – возвращает число 4.

Соседние файлы в папке Лекции