Синтаксис языка XQuery
1. Введение
XQuery — язык запросов, разработанный для обработки данных в формате XML.
В SP-XML используется узкое подмножество функций XQuery, расширенное
некоторыми дополнительными функциями.
2. Синтаксис запросов XQuery
Из всего множества операторов XQuery в SP-XML для эффективного
исполнения кода следует использовать только запросы вида:
for $elem in <каталог_базы_данных> [where <логическое_условие>]
[order by $elem/<поле_записи>[desending]] return $elem
(Выдать все записи из базы данных из <каталога_базы_данных>
для которых выполняется <логическое_условие>, упорядочить по <полю_записи>)
<каталог_базы_данных> - это общее наименование группы однотипных записей в базе данных.
Иерерхия объектов следующая: База данных >> Каталог базы данных >> Запись >> Поле записи.
Все записи в одном каталоге созданы по одному шаблону, и могут содержать только те поля,
которые содержатся в шаблоне. Например, в приложении E-Staff, существуют каталоги
vacancies, candidates, events и другие.
<логическое_условие> - выражение, имеющее результат типа boolean.
В логическом условии могут быть задействованы:
логические функции: true(), false();
операторы сравнения: =, !=, >=, <=, >, <;
<поле_записи> - обозначает поле записи из <каталога_базы_данных>,
по которому производится сортировка.
3. Примеры запросов XQuery
for $elem in vacancies where $elem/state_id = ‘vacancy_opened’ return $elem
(Выдать все записи из каталога vacancies, у который поле state_id (Текущий статус)
имеет значение ‘vacancy-opened’ (Вакансия открыта))
for $elem in vacancies where $elem/is_active = true() return $elem
(Выдать все записи из каталога vacancies, у который поле is_active (Активный)
имеет значение true (Вакансия активна))
for $elem in vacancies where $elem/start_date >= date(‘2011-06-27’)
and $elem/start_date <=date(‘2011-06-28T23:59:59’) return $elem
(Выдать все записи из каталога vacancies, у которой поле start_date (Дата_открытия)
имеет значение >= 2011-06-27
и <= 2011-06-28)
4. Литералы.
Простейший вид выражения XQuery — литерал (literal),
который представляет атомарное значение (константы).
57 литерал типа integer;
5.7 литерал типа decimal, поскольку он содержит десятичную точку;
"57" литерал типа string;