Пролог
Пролог - это набор объявлений, которые определяют среду обработки для запроса. Каждое объявление в прологе заканчивается точкой с запятой (;). Пролог - не обязательная часть запроса, правильный запрос может состоять из тела запроса без пролога.
Пролог включает в себя не обязательные объявление версии, объявления пространств имен и установщики, которые являются не обязательными объявлениями, устанавливающими значения свойст, влияющих не обработку запроса.
DB2 поддерживает объявление пограничных пробелов, которое может использоваться для изменениятого, как будет обрабатываться запрос. Пролог также содержит объявления пространств имен и объявления пространств имен по умолчанию.
DB2 поддерживает следующие установщики. Однако они не изменяют среду обработки, поскольку DB2 поддерживает только одну опцию в каждом случае:
- Объявление конструкторов
- Объявление пространств имен копирования
- Объявление порядка для "пусто"
- Объявление режима упорядочивания
Объявление версии, если оно есть, должно быть первым в прологе. Установщики и другие объявления могут появляться в прологе в любом порядке после объявления версии.
Синтаксис
>>-+-------------------------+---------------------------------->
'-| Объявление версии |---'
.---------------------------------------------------------.
V |
>--------+------------------------------------------------------+-+--><
+-| Объявление пограничных пробелов |------------------+
+-| Объявление конструкторов |-------------------------+
+-| Объявление пространств имен копирования |----------+
+-| Объявление порядка для "пусто" |-------------------+
+-| Объявление пространства имен елементов/типов |-----+
+-| Объявление пространства имен по умолчанию |--------+
+-| Объявление пространства имен |---------------------+
'-| Объявление режима упорядочивания |-----------------'
Примечание: Каждое объявление может быть задано только один раз, кроме объявления пространства имен.
- Объявление версии
Объявление версии появляется в начале запроса для идентификации версии синтаксиса и семантики XQuery, используемых для обработки запроса. Объявление версии может включать в себя объявление кодировки, но объявление кодировки игнорируется DB2.
- Объявление пограничных пробелов
Объявление пограничных пробелов в прологе запроса устанавливает для запроса политику пограничных пробелов. Политика пограничных пробелов управляет тем, как конструкторами элементов обрабатываются находящиеся на границах пробельные символы. В пограничные пробельные символы включаются все пробельные символы, которые появляются на границах между тегами или закрывающими выражениями в конструкторах элементов.
- Объявление конструкторов
Объявление конструкторов в прологе запроса устанавливает режим конструктора для запроса. Режим конструктора управляет тем, как элементным и атрибутным узлам, которые копируются из содержимого в конструируемые новые узлы, назначается аннотация типа.
- Объявление пространств имен копирования
Режим пространств имен копирования управляет привязкой пространства имен, которая назначается, когда существующий элементный узел копируется конструктором элемента.
- Объявление пространства имен по умолчанию для элементов/типов
Объявление пространства имен по умолчанию для элементов/типов в прологе запроса задает пространство имен для использования в QNames (квалифицированных именах) без префикса.
- Объявление пространства имен по умолчанию для функций
Объявление пространства имен по умолчанию для функций в прологе запроса задает URI пространства имен для использования в именах функций без префикса при вызове функций.
- Объявление порядка для "пусто"
Объявление порядка для "пусто" в прологе запроса определяет, будет ли пустая последовательность или значение NaN интерпретироваться как наибольшее или как наименьшее значение в предложении упорядочивания при обработке выражения FLWOR.
- Объявление режима упорядочивания
Объявление режима упорядочивания в прологе запроса устанавливает для запроса режим упорядочивания. Режим упорядочивания определяет порядок узлов в результате запроса.
- Объявление пространства имен
Объявление пространства имен в прологе запроса объявляет префикс пространства имен prefix и связывает префикс с URI пространства имен URI. Связь между префиксом и URI пространства имен называется привязкой пространства имен. Пространства имен, которое привязано в объявлении пространства имен объявление добавляется к статически определенным пространствам имен. Статически определенные пространства именs состоят из всех привязок пространств имен, которые позволяют разрешать префиксы пространств имен при обработке запроса.