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

5.1.1.4.7.2. Функции проверки количества элементов в последовательности

В XPath и XQuery для последовательностей определены следующие функции проверки количества элементов в последовательности:

  • fn:zero-or-one($arg as item()*) as item()?– возвращает$arg, если он не содержит элементов или содержит один элемент, в противном случае выдается ошибка;

  • fn:one-or-more($arg as item()*) as item()+– возвращает$arg, если он не содержит один и более элементов, в противном случае выдается ошибка;

  • fn:exactly-one($arg as item()*) as item() – возвращает$arg, если он содержит один элемент, в противном случае выдается ошибка.

Примеры использования функций проверки количества элементов в последовательностях:

1. fn:zero-or-one((1)) возвращает последовательность(1).

2. fn:one-or-more((1,4,8,3,4,7)) возвращает последовательность(1,4,8,3,4,7).

3. fn:exactly-one((2,5)) – выдает сообщение об ошибке.

5.1.1.4.7.3. Функции и операторы для операций с множествами

В XPath и XQuery для последовательностей определены следующие функции и операторы для операций с множествами:

  • fn:deep-equal($parameter1 as item()*, $parameter2 as item()*) as xs:boolean– возвращаетtrue, если и полностью совпадают друг с другом, иначе возвращаетсяfalse;

  • op:union($parameter1 as node()*, $parameter2 as node()*) as node()*– возвращает последовательность, являющуюся объединением последовательностей$parameter1 и $parameter2;

  • op:intersect($parameter1 as node()*, $parameter2 as node()*) as node()*– возвращает последовательность, являющуюся пересечением последовательностей$parameter1 и $parameter2;

  • op:except($parameter1 as node()*, $parameter2 as node()*) as node()*– возвращает последовательность, являющуюся пересечением последовательностей$parameter1 и $parameter2.

Примеры использования функций и операторов для операций с множествами:

1. fn:deep-equal((1,4,8), (1,4,7)) возвращает false.

2. op:union((1,4,8), (1,4,7)) возвращает последовательность(1,4,8,7).

3. op:intersect((1,4,8), (1,4,7)) – возвращает последовательность (1,4).

4. op:except((1,4,8), (1,4,7)) – возвращает(8).

5.1.1.4.7.4. Агрегатные функции

В XPath и XQuery для последовательностей определены следующие агрегатные функции:

  • fn:count($arg as item()*) as xs:integer– возвращает количество элементов в последовательности$arg;

  • fn:avg($arg as xs:anyAtomicType*) as xs:anyAtomicType?– возвращает среднее значение для элементов в последовательности$arg;

  • fn:max($arg as xs:anyAtomicType*) as xs:anyAtomicType?– возвращает максимальное значение элемента в последовательности$arg;

  • fn:min($arg as xs:anyAtomicType*) as xs:anyAtomicType?– возвращает минимальное значение элемента в последовательности$arg;

  • fn:sum($arg as xs:anyAtomicType*, $zero as xs:anyAtomicType?) as xs:anyAtomicType?– возвращает значение суммы элементов в последовательности$arg(если аргумент задан, он возвращается в качестве значения суммы для пустой последовательности, иначе возвращается целое число0);

Примеры использования агрегатных функций:

1. fn:count((1,4,8,2)) возвращает число 4.

2. fn:avg((1,4,8,2)) возвращает число 3.75.

3. fn:max((1,4,8,2)) – возвращает число 8.

4. fn:min((1,4,8,2)) – возвращает число 1.

5. fn:sum((1,4,8,2)) – возвращает число 15.

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