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

5.1.1.4.6. Функции для узлов

В XPath и XQuery для узлов определены следующие функции:

  • fn:name($arg as node()?) as xs:string– возвращает имя узла (если аргумент не задан, возвращает имя текущего узла);

  • fn:local-name($arg as node()?) as xs:string– возвращает локальное имя узла (если аргумент не задан, возвращает локальное имя текущего узла);

  • fn:namespace-uri($arg as node()?) as xs:anyURI–пространство имен URI для узла (если аргумент не задан, возвращает пространство имен URI текущего узла);

  • fn:number($arg as xs:anyAtomicType?) as xs:double– возвращает значение$arg, преобразованное к числу с плавающей точкой или, если$argне задан, значение текущего узла, преобразованное к числу с плавающей точкой;

  • fn:lang($testlang as xs:string?, $node as node()) as xs:boolean– возвращаетtrue, если значение атрибутаxml:langдля узла$node(или, если аргумент$nodeне задан, для текущего узла) равно языку, указанному в первом аргументе, в противном случае возвращаетсяfalse;

  • op:is-same-node($parameter1 as node(), $parameter2 as node()) as xs:boolean– возвращаетtrue, если узел, заданный в аргументе$parameter1, является тем же узлом, что и узел, заданный в аргументе$parameter2, в противном случае возвращаетсяfalse;

  • op:node-before($parameter1 as node(), $parameter2 as node()) as xs:boolean– возвращаетtrue, если узел, заданный в аргументе$parameter1, предшествует узлу, заданному в аргументе$parameter2, в противном случае возвращаетсяfalse;

  • op:node-after($parameter1 as node(), $parameter2 as node()) as xs:boolean– возвращаетtrue, если узел, заданный в аргументе$parameter1, следует за узлом, заданным в аргументе$parameter2, в противном случае возвращаетсяfalse;

  • fn:root($arg as node()?) as node()?– возвращает корень дерева, к которому принадлежит узел (если аргумент не задан, возвращается корень дерева для текущего узла).

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

1. fn:name($node1)– возвращает имя узла, заданного в переменной$node1.

2. fn:local-name($node1) – возвращает локальное имя узла, заданного в переменной$node1.

3. fn:namespace-uri($node1) – возвращает пространство имен для имени узла, заданного в переменной$node1.

4. fn:number(xs:string("24")) – возвращает 2.4E1.

5. fn:lang(xs:string("en"), $node1) – возвращает true, если для узла $node1 задан атрибут xml:lang и его значение равно "en".

6. op:is-same-node($node1, $node2) – возвращает false.

7. op:node-before($node1, $node2)– возвращаетtrue, если узел$node1 предшествует узлу$node2.

8. op:node-after($node1, $node2)– возвращаетfalse, если узел$node1 предшествует узлу$node2.

9. fn:root($node1) – возвращает корневой узел узла$node1.

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

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

  • общие функции и операторы;

  • функции проверки количества элементов в последовательности;

  • функции и операторы для операций с множествами;

  • агрегатные функции;

  • функции, генерирующие последовательности.

5.1.1.4.7.1. Общие функции и операторы

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

  • op:concatenate($seq1 as item()*, $seq2 as item()*) as item()*– сцепляет последовательности, заданные в аргументах в одну последовательность;

  • fn:index-of($seqParam as xs:anyAtomicType*, $srchParam as xs:anyAtomicType) as xs:integer*– возвращает последовательность индексов тех элементов последовательности$seqParam, которые равны$srchParam;

  • fn:empty($arg as item()*) as xs:boolean– возвращаетtrue, если – пустая последовательность илиfalse– в противном случае;

  • fn:exists($arg as item()*) as xs:boolean– возвращаетtrue, если – не пустая последовательность илиfalse– в противном случае;

  • fn:distinct-values($arg as xs:anyAtomicType*) as xs:anyAtomicType*– возвращает последовательность, в которых все повторяющиеся элементы, за исключением одного, удалены;

  • fn:insert-before($target as item()*, $position as xs:integer, $inserts as item()*) as item()*– возвращает последовательность, в которой в исходную последовательность$targetвставлена, начиная с индекса$position, последовательность, заданная в$inserts;

  • fn:remove($target as item()*, $position as xs:integer) as item()*– возвращает последовательность, в которой из исходной последовательности$targetудален элемент с индексом$position;

  • fn:reverse($arg as item()*) as item()*– возвращает последовательность, в которой элементы последовательности$argпереставлены в обратном порядке;

  • fn:subsequence($sourceSeq as item()*, $startingLoc as xs:double, $length as xs:double) as item()*– возвращает последовательность, которая является подстрокой последовательности$sourceSeq, начиная с индекса$startingLocдлиной$length(если аргумент$lengthне задан, подстрока выделяется до конца строки);

  • fn:unordered($sourceSeq as item()*) as item()*– возвращает последовательность, в которой элементы последовательности$sourceSeq переставлены в случайном порядке.

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

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

2. fn:index-of((1,4,8,3,4,7)) возвращает последовательность индексов (2,5).

3. fn:empty((2,5)) – возвращаетfalse.

4. fn:exists(()) – возвращает false.

5. fn:distinct-values((1,4,8,3,4,7)) – возвращает (1,4,8,3,7).

6. fn:insert-before((1,4,8,3,7),1,0) – возвращает (0,1,4,8,3,7).

7. fn:remove((0,1,4,8,3,7),2) – возвращает (0,4,8,3,7).

8. fn:reverse((0,4,8,3,7)) – возвращает (7,3,8,4,0).

9. fn:subsequence((0,4,8,3,7),2,3) – возвращает (4,8,3).

10. fn:subsequence((0,4,8,3,7),2) – возвращает (4,8,3,7).

11. fn:unordered ((0,4,8,3,7)) – возвращает (3,0,7,8,4).

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