Учебное пособие (1075724), страница 24
Текст из файла (страница 24)
Объявление импортируемых модулей, опций, переменных,функций :)(: ++++++++++++++++++++++++++++++++++++++++++++++++++++++ :)(: Объявление переменных :)(: В модуле переменные объявляются с префиксом пространства имен :)declare variable $lib_module_1:var1 as xs:integer := 300;(: Объявление функций :)(: Функции объявляются не с префиксом local:, а с префиксомобъявленного пространства имен lib_module_1: :)declare function lib_module_1:function1($ParamUpper as xs:integer,$Base as xs:integer) as xs:integer*{for $i in 1 to $ParamUpper(: В функции можно использовать глобальные переменные :)return $lib_module_1:var1 + $Base + $i};(: ++++++++++++++++++++++++++++++++++++++++++++++++++++++ :)(: В библиотечном модуле нет основного запроса :)(: ++++++++++++++++++++++++++++++++++++++++++++++++++++++ :)Результат выполнения:229Рис.
4.8. Результат выполнения примера 4.3.Тело функции записывается в фигурных скобках. Оно может включать в себявыражение или несколько выражений через запятую. Выражение может бытьлюбым: FLWOR, IF, SOME, EVERY, и т.д.Выражения, перечисляемые через запятую, выполняются последовательно.В типе параметров функции и возвращаемого значения можно задаватьколичество элементов как в технологии DTD:xs:integer – одно целое числоxs:integer? – целое число или пустое значениеxs:integer+ - последовательность целых чиселxs:integer* - последовательность целых чисел или пустое значениеВ XQuery реализованы не все конструкции, необходимые в языкепрограммирования. Например, нет цикла while.Если в сценариях необходимо использовать кириллицу, то текст сценариянеобходимо сохранять в нестандартной кодировке – это кодировка UTF-8 (одна из230разновидностей Unicode), но без служебных символов BOM в начале файла.Только в такой кодировке сценарии с кириллицей могут корректно работать вeXist.4.4 Материалы для дальнейшего изученияРекомендуется ознакомиться со спецификацией XQuery [XQuery, 2007].Полный список функций и операторов XQuery приведен в спецификации[XQuery Functions, 2007].
Эта спецификация включает порядка сотни функций иоператоров, в примерах были рассмотрены лишь некоторые из них. Наиболеечасто используются функции из разделов 7 (работа со строками) и 15 (работа споследовательностями) этой спецификации.Наиболее подробной книгой по языку XQuery на русском языке является[XQuery руководство, 2005].4.5 Контрольные вопросы1. Что такое естественные и приспособленные XML-ориентированныеСУБД?2.
Как хранятся XML-данные в СУБД eXist?3. В чем основные особенности модели данных, используемой в XQuery?4. Как работать с последовательностями в XQuery?5. Как устроены операторы сравнения в XQuery?6. Как использовать конструкторы элементов в XQuery?7. Как использовать оператор FLWOR в XQuery?8. Как можно соединять документы с помощью оператора FLWOR вXQuery?9. Как используются выражения some и every в XQuery?10.Какие действия над множествами используются в XQuery?11.Как используются выражения ordered и unordered в XQuery?12.Какие выражения для работы с типами данных используются вXQuery?23113.Как производится обновление данных в БД с использованиемоператора FLWOR в XQuery?14.Как создавать серверные сценарии в eXist с использованием XQuery?15.Как создавать библиотечные модули в eXist с использованием XQuery?2325 Глава 5.
Технология XFormsТехнология XForms предназначена для ввода данных в формате XML. Онаявляется развитием технологии HTML-форм.5.1 Основные отличия XForms-форм от HTML-формВ HTML-формах:1. Элементы управления формы (поля ввода, списки и т.д.) задаются ввиде HTML-тэгов.2. Значения по умолчанию для данных записываюся в виде атрибута valueэтих тэгов. То есть значения по умолчанию для данных "встроены" вполя ввода.3.
Заполненные данные передаются на веб-сервер в виде набора пар"имя=значение". Формат данных "на выходе" формы не совпадает сформатом, который используется для задания значений по умолчанию.Эти особенности не стоит считать недостатками технологии HTML-форм.Это "классический" подход, который используется в большинстве технологийвеб-разработки.XForms-формы являются более «однородным» решением:1. Элементы управления формы (как и в случае HTML-форм) задаются ввиде тэгов (XForms).2. Данные хранятся в специальной "модели", которой не было в HTML.Для хранения данных используется XML-фрагмент, вложенные XMLэлементы соответствуют полям ввода. Кроме того, в модели можнохранить типы данных и ограничения, которые должны учитыватьсяпри вводе данных.
Эти ограничения проверяются XForms-процессоромпри вводе данных.3. Значения по умолчанию задаются в виде XML-фрагмента в моделиданных. В процессе редактирования формы этот XML-фрагмент233изменяется. То есть формат данных "на выходе" формы совпадает сформатом, который используется для задания значений по умолчанию.В технологии XForms и сами данные, и ограничения на данные, и поля вводаданных задаются в виде XML.5.2 Особенности технологии XForms1. XForms-форма не является «самостоятельным» документом.
Она должнабыть строена в основной документ (host document), который разработан наосновном языке разметки (host language). Как правило, в качестве такого языкаиспользуется XHTML.Обычно модель данных располагается в секции HEAD документа XHTML, аэлементы управления формы в секции BODY.2. В XForms используется «конкретная» модель и «абстрактные» элементыуправления формы.Модель данных «конкретная», потому что она разрабатывается оченьдетально, задаются типы данных, ограничения на данные. Все ограничения наданные задаются не в полях ввода, а в модели.Элементы управления формы являются «абстрактными», потому что нетточных правил для их отображения.
XForms-процессор определяет, какотображать элементы управления.3. Проверка правильности введенных данных осуществляется при вводеданных формы на стороне «клиента», а не стороне «сервера» (как в«традиционных» веб-приложениях).4. Данные по умолчанию для формы и введенные данные представляютсобой XML-фрагмент, а не набор отдельных «переменных» (как в HTMLформах).Это позволяет проверить вводимые данные на стороне клиента и после вводаданных«воднодействие»сохранитьполученныйXML-фрагментспроверенными данными в XML-ориентированную БД.2345. В технологии XForms в значительной степени используется язык XPath(для связи элементов, задания ограничений и т.д.). В настоящее времяиспользуется XPath 1.0.5.3 Программные продукты для работы с XFormsОсновным программным продуктом для работы с XForms является XFormsпроцессор, который «выполняет» форму: читает форму, загружает данные поумолчанию, отображает элементы управления, позволяет вводить данные ипроверяет правильность ввода данных, передает введенные данные на указанныйURI.Несмотря на «абстрактность» элементов управления, большинство XForms–процессоров являются веб-приложениями и превращают XForms-формы вобычные HTML-формы (как правило, с использованием CSS, JavaScript, AJAX).Из свободно-распространяемых XForms–процессоров можно выделитьчетыре:1.
Orbeon Forms.2. betterFORM.3. XSLTForms.4. Mozilla XForms Project.Рассмотрим эти XForms-процессоры более подробно.5.3.1 XForms-процессор «Orbeon Forms»Orbeon Forms (http://www.orbeon.com) является одним из самых развитыхXForms-процессоров.Реализован на Java в виде веб-приложения.Поставляется вместе со встроенным экземпляром «eXist».
Содержитвизуальный редактор XForms-форм. Также содержит язык XPL (XML PipelineDefinition Language), который позволяет задавать workflow для обработки XMLданных. Подробно документирован.235Orbeon Forms является достаточно сложным продуктом с большим объемомдокументации. Для разработки серьезных XForms-приложений необходимоиспользовать коммерческую версию.5.3.2 XForms-процессор «betterFORM»betterFORM (http://www.betterform.de) является более простым решением посравнению с Orbeon Forms.
Содержит только XForms-процессор. Являетсяразвитием XForms-процессора «Chiba».Реализован на Java в виде веб-приложения.Далее в этой главе мы будем использовать именно betterFORM для работы сучебными примерами.Для работы с Orbeon Forms или betterFORM необходимо использовать какойлибо веб-сервер на основе Java-платформы (например, Apache Tomcat).5.3.3 XForms-процессор «XSLTForms»XForms-процессор XSLTForms (http://www.agencexml.com/xsltforms) является«клиентским» решением и работает в браузере (нет необходимости использоватьвеб-сервер).Реализован с использованием XSLT, CSS, JavaScript.ОсновнымэлементомпроцессораXSLTFormsявляетсяXSLT-преобразование, с помощью которого необходимо преобразовать XHTML-файл,содержащий XForms-форму, в HTML.
Преобразование можно сделать и вбраузере, и в серверном сценарии.XSLTForms встроен в последние версии «eXist». XSLTForms можнодостаточно просто использовать в том случае, когда XForms-форма динамическигенерируется в «eXist» с помощью серверного XQuery-сценария.При разработке XRX-приложения мы будем использовать процессорXSLTForms.2365.3.4 XForms-процессор «Mozilla XForms»ЭтотXForms-процессор(http://www.mozilla.org/projects/xforms)являетсяплагином к Firefox. То есть он, как и XSLTForms, также является «клиентским»решением.Пока уровень его «зрелости» несколько ниже, чем у других процессоров.














