| Каталог | Индекс раздела |
| Назад | Содержание | Вперед |
Функции-конструкторы преобразуют экземпляр одного атомарного типа в экземпляр другого атомарного типа. Неявно определенная функция-конструктор имеется для каждого из встроенных типов, определенных в XML Schema. Функции-конструкторы также существуют для типа данных xdt:untypedAtomic и для двух производных типов данных: xdt:yearMonthDuration и xdt:dayTimeDuration.
Функции-конструкторы не существуют для xs:NOTATION, xs:anyType, xs:anySimpleType илиr xdt:anyAtomicType.
Все функции-конструкторы для встроенных типов имеют следующий родовой синтаксис:
>>-type-name(value)--------------------------------------------><
Замечание: Семантика функции-конструктора type-name(value) определена так, что она эквивалентна выражению (value cast as type-name?).
type-name | |
|
QName целевого типа данных. |
value | |
|
Значение, из которого конструируется экземпляр целевого типа данных. К значению применяется атомизация. Если результат атомизации ? пустая последовательность, возвращается пустая последовательность. Если результат атомизации ?последовательность из более, чем одного элемента, происходит ошибка. В противном случае результат атомизации преобразуется в целевой тип. Информацию о том, какой тип может быть преобразован в какой другой тип, см. в Преобразование типов. |
Например, следующая диаграмма представляет синтаксис функции-конструктора для типа данных XML Schema xs:unsignedInt:
>>-xs:unsignedInt(value)---------------------------------------><
Значение, которое может быть передано в эту функцию-конструктор, - любое атомарное значеие, которое может быть правильно преобразовано в целевой тип данных. Например, следующие вызовы этой функции возвратят один и тот же результат, xs:unsignedInt со значением 12:
xs:unsignedInt(12)
xs:unsignedInt("12")
В первом примере в функцию-конструктор передается числовой литерал 12. Поскольку литерал не содержит десятичную точку, он разбирается как xs:integer, и значение xs:integer преобразуется в тип xs:unsignedInt. Во втором примере в функцию-конструктор передается строковый литерал "12". Строковый литерал разбирается как xs:string, и значение xs:string преобразуется в тип xs:unsignedInt.
Функция-конструктор может также вызываться с узлом в качестве аргумента. В этом случае XQuery в DB2 атомизирует узел, чтобы выделить его типизированное значение, а затем вызывает конструктор для этого значения. Если значение, которое передается в конструктор не может быть предбразовано в целевой тип данных, возвращается ошибка.
Функция-конструктор для xs:QName отличается от родового синтаксиса функций-конструкторов ограничением на только строковый литерал в качестве аргумента.
| Назад | Содержание | Вперед |
| Каталог | Индекс раздела |