Условные выражения
Условное выражение имеет вид:
If (выражение1) then выражение2 else выражение3
Оно вычисляется следующим образом. Сначала вычисляется выражение1. Оно должно дать логический результат: true или false. Если получилось true, то вычисляется выражение2, его значение и будет результатом всего условного выражения. Выражение3 при этом даже не вычислялся. Если получилось значение false, то результатом условного выражения будет результат выражения3, выражение2 при этом не вычисляется.
В отличие от многих других языков программирования, ветвь else в условном выражении нельзя опускать, она обязательна. Если при невыполнении условия ничего не надо делать, то просто записывается пара скобок, означающая пустое выражение:
if (/count/price > 0) then /count/price else ()
Циклы
Циклы в языке XPath образуются с помощью конструкции вида:
for $имя in выражение1 return выражение2
Переменная $имя последовательно принимает значения узлов и/или атомарных выражений, полученных в результате вычисления выражения1. При этом каждый раз вычисляется выражвниа2, в котором, как правило, применяется переменная $имя.
Внутри цикла выражение2 может также содержаться цикл for. Так в языке XPath получаются вложенные циклы. Например:
for $x in //BBB return
(for $y in $x/CCC return $y/DDD)
Такую запись можно сократить следующим образом:
(for $x in //BBB, $y in $x/CCC return $y/DDD
Эта конструкция может повторяться. В общем виде запись цикла выглядит так:
for $имя1 in выражение1, $имя2 in выражение2, ... return выражение
В качестве выражений в цикле можно использовать простые последовательности-перечисления, например, в результате работы следующего цикла
for $i in (1, 2, 3), $j in (10, 20) return ($i + $j) Получится последовательность чисел 11, 21, 12, 22, 13, 23.
Последовательность-перечисление может быть более сложной. В ней могут встречаться диапазоны, образованные с помощью слова to, например, последовательность:
(10, 1 to 5, 20, 15 to 10)
состоит из чисел
(10, 1, 2, 3, 4, 5, 20, 15, 14, 13, 12, 11, 10)
Как видите, диапазон может идти и в сторону увеличения, и в сторону уменьшения чисел.
Достарыңызбен бөлісу: |