Учебное пособие (1075724), страница 38
Текст из файла (страница 38)
В этом атрибуте указано, что используется схема xpointer(),которая возвращаает фрагмент документа по XPath-выражению. В круглыхскобках необходимо записать XPath-выражение, возвращающее фрагментдокумента.Здесь из документа «inner.xml» выбирается элемент «p» с атрибутом«id='id_inner'».Результат работы:<Root xmlns:xi="http://www.w3.org/2001/XInclude"><p>Следующий фрагмент добавлен с помощью XInclude:</p><p id="id_inner">Это вложенный документ, id элемента=id_inner</p></Root>В следующем примере из документа «inner.xml» выбираются все элементы«p», у которых не задан атрибут «id».369Файл xpointer_2.xml:<?xml version="1.0" encoding="utf-8"?><Root xmlns:xi="http://www.w3.org/2001/XInclude"><p>Следующий фрагмент добавлен с помощью XInclude:</p><xi:include href="inner.xml" xpointer="xpointer(//p[not(@id)])"/></Root>Результат работы:<Root xmlns:xi="http://www.w3.org/2001/XInclude"><p>Следующий фрагмент добавлен с помощью XInclude:</p><p>Это вложенный документ</p><p>Это также вложенный документ</p></Root>6.5 Материалы для дальнейшего изученияРекомендуетсяиспользованиюознакомитьсяXInclude,котороесруководствомсодержитСУБД«eXist»дополнительныепопримеры(руководство находится в разделе документации «eXist»).Также можно ознакомиться со стандартами XInclude [XInclude, 2006] истандартами XLink [XLink, 2010] и Xpointer [XPointer Framework, 2003], [XPointerxpointer() Scheme, 2002], [XPointer xmlns() Scheme, 2003], [XPointer element()Scheme, 2003].6.6 Контрольные вопросы1.
Для чего предназначены технологии XInclude, XLink, XPointer?2. Как используется элемент xi:include?3. Как используется элемент xi:fallback?4. Каким образом с помощью элемента xi:include можно добавить результатработы серверного сценария?5. Как добавить фрагмент документа с использованием XPointer?3707 Глава7.Разработкавеб-приложенийнаосноветехнологии XRXВ этой главе мы рассмотрим основные принципы построения XRXприложений и разработаем пример такого приложения.Авторы старались разработать эту главу таким образом, чтобы она сталакомплексным примером использования рассмотренных ранее XML-технологий.7.1 Архитектура «классического» веб-приложенияСуществуетбольшоеколичествотехнологийдляразработкивеб-приложений: ASP.NET, JSP и много других.
В рамках каждой из этих технологийсуществует большое количество библиотек, фреймворков, которые облегчаютразработку веб-приложений.В существующих технологиях в качестве СУБД обычно используетсяреляционная СУБД. Иногда используются средства объектно-реляционногоотображения (ORM – object-relational mapping) для того, чтобы более удобнымспособом осуществлять преобразования между данными реляционных таблиц иобъектами классов объектно-ориентированного языка.Обобщенная трехзвенная архитектура «классического» веб-приложенияприведена на следующем рисунке:Веб-серверДанныеВеб-браузер1.HTML2.CSS3.JavaScriptHTTPСерверныйсценарийОбъектнореляционноеотображениеSQLРеляционнаяСУБДРис. 7.1. Обобщенная архитектура «классического» веб-приложения.371Первым звеном является веб-браузер, вторым звеном является веб-сервер,тертьим звеном является сервер СУБД.Приведенная схема является очень упрощенной. На ней не показанывозможные дополнительные библиотеки, фреймворки.
Также иногда в этуархитектуру добавляется четвертое звено – сервер приложений, которыйразмещается между веб-сервером и сервером СУБД.Основной вывод, который хотелось бы сделать из этой схемы, состоит в том,что для разработки веб-приложения необходимо одновременно использоватьмного различных технологий, что увеличивает сложность разработки.На стороне веб-браузера могут использоваться: HTML (1), каскадныетаблицы стилей CSS (2), JavaScript (3). В случае использования AJAX-технологиина JavaScript разрабатывается значительная часть веб-приложения, а серверныесценарии в основном только формируют данные.На стороне веб-сервера могут использоваться: какая-либо из технологий«серверных страниц» (например ASP.NET, JSP) (4), процедурный или объектноориентированный язык программирования (например C# или Java) (5).Обращение к СУБД производится c использованием языка SQL (6) или спомощью средств объектно-реляционного отображения (7).На стороне СУБД может использоваться какой-либо язык для написанияхранимых процедур (8).Если мы хотим работать с данными в XML-формате (9),то это приводит кнеобходимости написания дополнительного программного кода.
При этом частоиспользуется технология XSLT (10).Итого 10 технологий, хотя на практике их может быть намного больше.Таким образом, при разработке «классических» веб-приложений приходитсяиспользовать довольно много различных технологий, которые необходимосоединить друг с другом, что также требует дополнительных усилий.Еще одна трудность состоит в том, что на каждом «звене» используетсясобственная модель данных (СУБД – реляционная, веб-сервер – объектноориентированная, веб-браузер – HTML). Приходится тратить дополнительные372усилия для преобразования данных между различными моделями, при этом могутдополнительно возникать ошибки преобразования данных.Мы ни в коем случае не критикуем «классическую» архитектуру. Онасложилась исторически, и в большинстве случаев ее приходится использовать.Но если мы хотим использовать только XML-данные, то, может быть,возможно упростить эту архитектуру?Технология XRX и является упрощением «классической» архитектуры дляслучая использования XML.
Если говорить точнее, то архитектура XRX является«надстройкой» над «классической» архитектурой, которая позволяет болеепростым способом разрабатывать веб-приложения на основе XML.7.2 Архитектура веб-приложения на основе технологии XRX7.2.1 Обобщенная архитектураОбобщенная архитектура веб-приложения на основе технологии XRXприведена на следующем рисунке:Веб-серверДанные XMLВеб-браузерXFormsпроцессорXMLСерверныйXQueryсценарийXMLXMLориентированнаяСУБДРис.
7.2. Обобщенная архитектура веб-приложения на основе технологии XRX.Аббревиатура XRX расшифровывается как XForms-REST-XQuery. XForms – используется на стороне веб-браузера для ввода и редактированияформ.Фактически XForms-процессор – это «толстый» клиент для ввода форм,который реализован с использованием веб-технологий.373Как и в случае HTML-форм, формы на XForms могут быть статическими, амогут динамически генерироваться на веб-сервере с помощью XQuery-сценариев. REST – означает, что XML-данные между формами на XForms и XQueryсценариямипередаютсяспомощьюHTTP-протокола,чащевсегоиспользуются «обычные» методы GET и POST.Более сложной альтернативой REST являются технологии «классических»веб-сервисов (SOAP-протокол и другие технологии).
В XRX-технологии они, какправило, не используются.Термин REST (Representational State Transfer) был введен Р.Филдингом(одним из разработчиков протокола HTTP) для обозначения одной из возможныхмоделей сетевых протоколов [Fielding, 2000]. Протокол HTTP построен на моделиREST.В аббревиатуре XRX термин «REST» фактически означает использованиепротокола HTTP. XQuery – используется на стороне веб-сервера для доступа к данным и вкачестве языка программирования серверных сценариев.Если в «классической» архитектуре на стороне веб-сервера используется дваязыка, один для программирования серверных сценариев (например C#), другойдля доступа к данным (SQL), то в XRX-архитектуре обе функции выполняетXQuery.Также с помощью XQuery динамически генерируются XForms-формы.Для разработки XRX-приложений необходимо использовать следующиетехнологии:1.
XML2. XQuery3. XForms4. HTML / XHTMLТакже дополнительно могут быть использованы:5. XSLT6. DTD / XML-схемы3747. CSS8. JavaScriptКоличество технологий почти такое же, как в случае «классических» вебприложений. Однако большая часть этих технологий ориентирована наиспользование модели данных XML.В чем основное преимущество технологии XRX при использовании XMLданных? В «классической» архитектуре на каждом «звене» использоваласьсобственная модель данных. В XRX-технологии на всех «звеньях» используетсяXML.
То есть не требуется преобразовывать данные между различными моделямиданных, преобразовывать нужно только данные в модели XML.Рассмотрим взаимодействие между тремя «звеньями» более подробно:1. На стороне клиента XForms-процессор принимает от XQuery-сценарияописание формы в формате XML (форма на XForms, как правило, являетсяXHTML-документом). После заполнения формы пользователем введенныеданные представляют собой XML-фрагмент, и этот фрагмент передается на вебсервер. XML-фрагмент может быть непосредственно сохранен в XMLориентированную СУБД или может быть передан серверному XQuery-сценариюдля дальнейшей обработки.2.
На стороне веб-сервера также используются данные в формате XML,которые обрабатываются с помощью XQuery-сценариев. XQuery-сценарий можетвзаимодействовать с XML-ориентированной СУБД, читать и записывать данные вформате XML.Серверный XQuery-сценарий при взаимодействия с клиентской частьюможет генерировать, например, следующие виды документов: Формы на XForms, которые передаются для ввода данных XFormsпроцессору. XML-документы произвольного вида.
Например, это могут бытьXHTML-документы, которые передаются в браузер и отображаютсяпользователю. XML-документы могут дополнительно обрабатываться спомощью XSLT-преобразований (в eXist это встроенная функция).3753. XML-ориентированная СУБД хранит данные в формате XML.















