Выражения для типов последовательности
Для проверки и изменения типов в последовательности данных в XPath определены операции instance of, cast, castable и treat.
Операция instance of имеет следующий формат:
операнд-1 instance of операнд-2
Эта операция проверяет наличие операнда-1 в последовательности, заданной в операнде-2 и возвращает true, если операнд есть в последовательности и false – в противном случае.
Примеры выражений для операции instance of:
1. 12 instance of xs:integer – равно true.
2. 12 instance of xs:nonPositiveInteger – равно false.
Операция cast as имеет следующий формат:
операнд-1 cast as операнд-2[?]
Эта операция преобразует атомарное значение в операнде-1 в данное типа, заданного в операнде-2 и возвращает преобразованное значение, одновременно изменяя тип операнда-1. Если после операнда-2 задан необязательный символ "?", то в случае невозможности преобразования возвращается пустая строка, иначе выдается сообщение об ошибке. Операнд-2 не может иметь тип xs:NOTATION или тип xs:anyAtomicType.
Примеры выражений для операции cast as:
1. "12" cast as xs:integer – преобразует строку в число.
2. $d cast as xs:string – преобразует переменную $d к строковому типу.
Операция castable as имеет следующий формат:
операнд-1 castable as операнд-2[?]
Эта операция выполняет проверку возможности преобразования атомарного значения в операнде-1 в данное типа, заданного в операнде-2 и возвращает значение true, если такое преобразование возможно и false – в противном случае. Задание после операнда-2 необязательного символ "?" определяет возможность задания пустой последовательности. Операнд-2 не может иметь тип xs:NOTATION или тип xs:anyAtomicType.
Примеры выражений для операции castable as:
1. "12" castable as xs:integer – равно true.
2. "12.3" castable as xs:integer – равно false.
Операция treat as имеет следующий формат:
операнд-1 treat as операнд-2
Эта операция преобразует атомарное значение в операнде-1 в данное типа, заданного в операнде-2 и возвращает преобразованное значение, однако, в отличие от операции cast as, тип операнда-1 не меняется. Операнд-2 не может иметь тип xs:NOTATION или тип xs:anyAtomicType.
Обычно операция treat as используется при вызове функций, когда аргумент должен иметь тип операнд-2.
Примеры выражений для операции treat as:
1. "12" treat as xs:integer – преобразует строку в число.
2. $d treat as xs:string – возвращает текущее значение переменной, преобразованное к строковому типу (тип самой переменной $d не меняется).
Дата добавления: 2015-03-19; просмотров: 545;