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

5.1.1.3.4. Булевские выражения

Булевские выраженияиспользуются для выполнения логических операцийИиИЛИ. ВXPathопределены два логических оператора: операторorдля выполнения операцииИЛИи операторandдля выполнения операцииИ. Операндами и результатом булевского выражения являются булевские значения. Для операции отрицания используется функцияnot().

Примеры булевских выражений:

1. 5 gt 1 and 5 lt 10 – равноtrue.

2. -5 gt 1 or 5 lt 10 – равно true.

3. not(5 gt 1) – равноfalse.

5.1.1.3.5. Выражения для типов последовательности

Для проверки и изменения типов в последовательности данных в XPath определены операции instance of,cast,castableиtreat.

Операция instance ofимеет следующий формат:

операнд-1instance of операнд-2

Эта операция проверяет наличие операнда-1в последовательности, заданной воперанде-2 и возвращаетtrue, если операнд есть в последовательности иfalse– в противном случае.

Примеры выражений для операции instance of:

1. 12 instance of xs:integer – равно true.

2. 12 instance of xs:nonPositiveInteger – равно false.

Операция cast asимеет следующий формат:

операнд-1cast 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имеет следующий формат:

операнд-1castable 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имеет следующий формат:

операнд-1treat 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не меняется).

5.1.1.3.6. Условные выражения

Условное выражениев XPath имеет следующий формат:

if(условие)thenвыражение-1elseвыражение-2

Сначала вычисляется выражение условие, результат которого должно иметь типxs:boolean. Если результат равенtrue, то вычисляетсявыражение-1и его результат становится результатом условного выражения. В противном случае (если результат равенfalse) вычисляетсявыражение-2и его результат становится результатом условного выражения. Ветвьelseв выражении является обязательной.

Примеры условного выражения:

1. if($a1 instance of xs:integer and

$a2 instance of xs:integer) then $a1 idiv $a2

else $a1 div $a2– если и$a1и$a2– целые числа, то разделить нацело, иначе разделить как два вещественных числа.

2. if($x castable as xs:integer) then $x cast as xs:integer

else $x cast as xs:string– если значение$xможно преобразовать в целое число, преобразовать к целому типу, иначе преобразовать к строковому типу.

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