Пространства имен и схемы 70 Сегментация проблемы 71



жүктеу 3,64 Mb.
бет88/150
Дата17.01.2022
өлшемі3,64 Mb.
#33337
түріПротокол
1   ...   84   85   86   87   88   89   90   91   ...   150
Лекции 2

    Навигация по данной странице:
  • ( <$i, ","
Выражение запроса FLWOR

Запрос к документу XML, как и все в языке XQuery, записывается в виде выражения, которое в простейшем случае выглядит так:

let $n := ( "Петр", "Иванов")

return ( $n )

Здесь после знака присваивания := может стоять произвольное выражение, Оно вычисляется, и переменная $n получает его значение, в данном случае — "Петр Иванов", которое подставляется в возвращаемый запросом элемент

Петр Иванов

В операторе return можно записать любое выражение, хотя чаще всего здесь располагается конструктор.

Вторая форма запроса начинается со слова for. Она выглядит и выполняется как цикл языка XPath 2,0. Вот простейший пример:

for $n in ( "Петр", "Иванов")

return ( $n )

Здесь переменная $n последовательно принимает значения узлов и/или атомарных значений, входящих в результат вычисления выражения, стоящего после знака операции in. Для каждого значения переменной $n выполняется оператор return, и запрос возвращает несколько элементов:



Петр

Иванов

Переменная заголовка получает тип своего значения, но этот тип можно преобразовать, указав новый тип после слова as. Новый тип должен быть совместим со старым.

for $n as xs:string in ( "Петр", "Иванов")

let $n as xs:string:= ( "Петр", "Иванов")

У заголовка for есть одна дополнительная возможность, которой нет у заголовка let. Параллельно переменной заголовка можно определить еще одну целочисленную переменную типа xs: integer, которая будет принимать значения 1, 2, 3, ..., отсчитывая повторения цикла. Для создания порядковой переменной надо записать ее после слова at:

for $n at $i in ( "Петр", "Иванов")

Этот заголовок задает по два значения переменных $n и $i:

($n = "Петр", $i=1)

($n = "Иванов", $i = 2)

Итак, заголовок запроса принимает две формы: let и for. В заголовке их можно совместить. Такое совмещение заголовков let и for допускается в любом порядке и в любом количестве. Можно записать несколько заголовков for подряд или перемежать их заголовками let. Такие вложения можно записать в кратной форме.

Например, запрос:

for $i in (10, 20), $j in (1 to 3)

return ( <$i, ",", $j) )

даст в результате элементы:



10,1

<х>10,2

<х>10,3

<х>20,1/х>

<х>20,2

<х>20,3

Такая же запись возможна и в запросе с заголовком let. Попытка применить ее в предыдущем примере:

let $i := (10, 20), $j := (1 to 3)

return ( ($i, ",", $j) }

приведет к следующему результату:

10 20,1 2 3

В общем случае в запросе может быть несколько заголовков let и for, а и каждом заголовке можно записать несколько переменных. Каждый заголовок let и каждое выполнение заголовка for вместе формируют кортеж — упорядоченный набор из одной или нескольких переменных. Все выполнения всех заголовков for приводят к образованию потока кортежей. Для каждого кортежа вычисляется выражение, расположенное в операторе return.

Кортеж, сформированный в заголовках запроса, может быть пропущен через фильтр, образованный выражением, записанным в операторе where запроса. Кортеж проходит через фильтр к оператору return, если выражение оператора where для него истинно. Например:

for $x in /count/incr

where $x > 0

return $х

Поток кортежей, прошедших через фильтр, можно отсортировать, задав порядок сортировки оператором order by, в котором записывается одно или несколько выражений через запятую. Каждое выражение может завершаться словом ascending (принимается по умолчанию) или словом descending, задающим порядок сортировки: по возрастанию или по убыванию значений переменных соответственно. В результате вычисления выражений определяются переменные, по которым производится сортировка.

Итак, запрос в полном виде состоит из пяти частей "for-let-where-order by-return", откуда и произошло его сокращенное название FLWOR.

Хотя бы один из заголовков for и let должен присутствовать в запросе обязательно. Заголовков может быть несколько, и они могут встречаться в любом порядке. Части where и order by необязательны, они могут встретиться только по одному разу в указанном порядке. Заключительная часть return обязательна, она только одна. В части return может встретиться еще один запрос FLWOR, а в нем другой, таким образом можно сделать вложенные запросы.


жүктеу 3,64 Mb.

Достарыңызбен бөлісу:
1   ...   84   85   86   87   88   89   90   91   ...   150




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау