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

5.1.1.3.7. Последовательности

В языке XPath определены выражения, содержащие последовательности данных, заключенные в круглые скобки и отделенные друг от друга запятыми. Элементами последовательности могут быть переменные, атомарные значения или узлы. Если элементы последовательности – целые числа, их можно задать с помощью диапазона значений, который имеет следующий формат:

начальное-значениеtoконечное-значение

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

1. (1, 3, 5, 7, 9)– последовательность целых чисел1,3,5,7и9.

2. (1 to 10, 15)– последовательность целых чисел от1до10и число15.

3. ($a1, $a2)– последовательность из двух переменных:$a1и$a2.

5.1.1.3.8. Циклы

Циклв XPath имеет следующий формат:

for$имя-1inвыражение-1[, $имя-2inвыражение-2…]

returnвыражение

Переменные $имя-1,$имя-2и т.д. являются переменными цикла. Цикл может содержать одну или несколько переменных цикла. Если цикл содержит две и более переменных цикла, то циклы являются вложенными, т.е. цикл, содержащий переменную$имя-1, является внешним, цикл, содержащий переменную$имя-2, является вложенным во внешний цикл и т.д.

Переменные цикла последовательно принимают значения узлов и/или атомарных значений, полученных в результате вычисления своего выражения. При этом каждый раз вычисляется выражениепосле словаreturn., которое и является результатом выполнения выражения.

Примеры циклов:

1. for $a in (1 to 5) return $a– цикл возвращает последовательность чисел от1до5.

2. for $a in (1 to 3), $b in (1, 2) return $a + $b– цикл возвращает последовательность чисел(2,3,3,4,4,5).

5.1.1.3.9. Квантификаторы

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

В первом случае квантификатор, называемый квантификатором существования, записывается следующим образом:

some$имя-1inвыражение-1 [, $имя-2inвыражение-2…]

satisfies выражение

Сначала вычисляется выражение-1. Затем переменная последовательно принимает значения узлов и/или атомарных значений, полученных в результате вычисления своего выражения. При этом каждый раз вычисляется из последовательности узлов, полученной в результате вычислениявыражения-1. Аналогичным образом выполнятся операции и для остальных имен и выражений. Все полученные значения каждый раз подставляются ввыражение. Как только одно из значений выражения станет равнымtrue, вычисления прекращаются и квантификатор возвращаетtrue. Если все возвращаемые в ходе подстановки значения возвращаютfalse, квантификатор возвращаетfalse.

Во втором случае квантификатор, называемый квантификатором всеобщности, записывается следующим образом:

every$имя-1inвыражение-1 [, $имя-2inвыражение-2…]

satisfies выражение

Вычисление значения выполняется также как для предыдущего квантификатора, но квантификатор возвращает true, только если все подстановки возвращаютtrue. Если при очередной подстановке возвращается значениеfalse, вычисления прекращаются и квантификатор возвращаетfalse.

Примеры квантификаторов:

1. some $a in (1, 2, 3, 4), $b in (1, 2)

satisfies $a + $b = 5 – возвращает true.

2. every $i in (1, 4.8, 12, 42)

satisfies $i instance of xs:integer – возвращает false.

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