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

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

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

  • op:to($firstval as xs:integer, $lastval as xs:integer) as xs:integer*– возвращает последовательность целых чисел от$firstvalдо$lastval;

  • fn:id($arg as xs:string*, $node as node()) as element()*– возвращает последовательность узлов элементов, заданных в$node, которые имеют значение атрибута типаID, соответствующее значению или значениям типаIDREF, заданным в$arg(если аргумент$nodeне задан, поиск выполняется в текущем узле);

  • fn:idref($arg as xs:string*, $node as node()) as node()*– возвращает последовательность узлов элементов, заданных в$node, которые имеют ссылки типаIDREF, на узлы, значение или значения атрибута типаIDдля которых задано в$arg(если аргумент$nodeне задан, поиск выполняется в текущем узле);

  • fn:doc($uri as xs:string?) as document-node()?– возвращает документ, фрагмент URI которого содержится в аргументе$uri;

  • fn:doc-available($uri as xs:string?) as xs:boolean– возвращаетtrue, еслиfn:doc($uri) возвращает документ, иначе возвращаетfalse;

  • fn:collection($arg as xs:string?) as node()*– возвращает последовательность узлов, полученных по адресу$arg, который рассматривается как данное типаxs:anyURI.

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

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

2. fn:id(($idref1,$idref2), $node1) возвращает последовательность узлов элементов, заданных в$node1, которые имеют значение атрибута типаID, соответствующее значениям типаIDREF, заданным в первом аргументе.

3. fn:idref(($id1,$id2), $node1) возвращает последовательность узлов элементов, заданных в$node1, которые имеют ссылки типаIDREF, на узлы,IDкоторых задано в первом аргументе.

4. fn:doc(xs:string("mydoc")) – возвращает документ, фрагмент URI которого содержится в аргументе.

5.1.1.4.8. Контекстные функции

Обработка выражений осуществляется в зависимости от некоторого контекста. Контекст показывает, какой узел в данный момент обрабатывается преобразованием, какова позиция этого узла в обрабатываемом множестве, сколько всего узлов в этом множестве, какие переменные доступны и какие значения они имеют, какие функции могут быть вызваны и, наконец, какие пространства имен объявлены.

В соответствии со спецификацией XPath, контекст составляют следующие части:

  • Контекстный узел (context node) – узел, который обрабатывается в текущий момент;

  • Целое положительное число, показывающее размер контекста – количе­ство узлов во множестве, которое обрабатывается в данный момент;

  • Целое положительное число, показывающее позицию контекстного узла в контексте вычисления выражения, то есть порядковый номер узла в те­кущем множестве преобразования, которое было соответствующим обра­зом упорядочено;

  • Множество связанных переменных (variable bindings), являющееся множеством пар вида «имя-значение», в котором имя переменной связывается со значени­ем, присвоенным ей;

  • Библиотека функций, состоящая из множества функций, которые могут быть выполнены процессором (функции описанной выше базовой библиотеки должны быть реализованы в процессоре, однако эта библиотека может быть расширена);

  • Множество объявлений пространств имен, связывающее префиксы пространств имен с уникальными идентификаторами ресурсов (URI), которые им соответствуют.

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

  • fn:position() as xs:integer– возвращает позицию текущего узла;

  • fn:last() as xs:integer– возвращает последний узел в текущей последовательности текущего узла;

  • fn:current-dateTime() as xs:dateTime – возвращает текущую дату и время;

  • fn:current-date() as xs:date – возвращает текущую дату;

  • fn:implicit-timezone() as xs:dayTimeDuration– возвращает временную зону по умолчанию.

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