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

5.1.1.3.10. Выражения для последовательностей узлов

Язык XPath рассматривает последовательности узлов дерева документа XML как элементы множества. Для этих множеств элементов определены операции объединения, пересечения и дополнения.

Операция объединенияпоследовательностей узлов записывается в виде

операнд-1unionоперанд-2

или

операнд-1|операнд-2.

Значениями операнда-1иоперанда-2 являются две последовательности узлов. Результатом выполнения операции является последовательность узлов, содержащая все узлыоперанда-1иоперанда-2(одинаковые узлы появляются в результирующей последовательности только один раз).

Операция пересеченияпоследовательностей узлов записывается в виде

операнд-1intersectоперанд-2.

Значениями операнда-1иоперанда-2 являются две последовательности узлов. Результатом выполнения операции является последовательность узлов, содержащая только общие узлыоперанда-1иоперанда-2.

Операция дополненияпоследовательностей узлов записывается в виде

операнд-1exceptоперанд-2.

Значениями операнда-1иоперанда-2 являются две последовательности узлов. Результатом выполнения операции является последовательность узлов, содержащая только те узлыоперанда-1, которые не содержатся воперанде-2.

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

1. (A,B,C,G) union (A,С,D,F)– результатом будет последовательность узлов(A,B,C,G,D,F).

2. (A,B,C,G) intersect (A,С,D,F)– результатом будет последовательность узлов(A,C).

3. (A,B,C,G) except (A,С,D,F)– результатом будет последовательность узлов(B,G).

5.1.1.3.11. Приоритет операций

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

  • раскрытие скобок – (),[]или{}.

  • операции с путями выборки;

  • унарная операция отрицания (-);

  • операция приведения типа (cast);

  • операция проверки возможности приведения типа (castable);

  • операция приведения значения типа (treat);

  • операция проверки типа (instance of);

  • операции пересечения и дополнения множеств(intersectиexcept);

  • операция объединения множеств (| илиunion);

  • операции умножения, деления, деления нацело и вычисление остатка от деления (*,div,idivиmod);

  • операции сложения и вычитания (+и-);

  • операция диапазона (to);

  • операции сравнения (eq, ne, lt, le, gt, ge, =, !=, <, <=, >, >=, is, <<, >>);

  • операция И(and);

  • операция ИЛИ(or);

  • операции цикла (for), квантификаторы (someиevery), условная операция (if);

  • операция запятая (,).

5.1.1.4. ФункцииXPathи xQuery

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

Общее определение функции в XPathи XQuery имеет следующий вид:

fn:имя-функции($имя-параметра-1asтип-параметра-1,...)

asтип-возвращаемого-значения

В описании типа параметра может быть использован тип numeric, что соответствует любому из следующих типов:xs:integer,xs:decimal,xs:floatиxs:double.

Для некоторых функций может быть задан только один аргумент или аргумент может отсутствовать. Для обозначения такой ситуации после типа аргумента ставится символ "?":

fn:имя-функции($имя-параметра-1asтип-параметра-1?)

asтип-возвращаемого-значения

Для некоторых функций может отсутствовать возвращаемое значение. Для обозначения такой ситуации после типа возвращаемого значения ставится символ "?":

fn:имя-функции($имя-параметра-1asтип-параметра-1,...)

asтип-возвращаемого-значения?

В некоторых функциях аргумент может отсутствовать или может быть задано оди и более однотипных аргументов. Для обозначения такой ситуации после типа аргумента ставится символ "*":

fn:имя-функции($имя-параметра-1asтип-параметра-1*)

asтип-возвращаемого-значения

Обращение к функции выполняется следующим образом:

fn:имя-функции($аргумент-1, $аргумент-2,...)

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

  • функции-конструкторы;

  • числовые функции и операторы;

  • строковые функции;

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

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

  • функции для узлов;

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

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

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