Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Сервер приложений eXist. Архитектура сервера. Конвейеры. Основные типы этапов: generate, transform, serialize.



Exist-db – система управления базами данных, построенная полностью на XML технологиях:

• XQuery 1.0 / XPath 2.0

• XSLT 1.0 (средствами Xalan) / XSLT 2.0 (опционально, средствами Saxon)

• HTTP интерфейсы: REST, WebDav, XMLRPC, Atom Publishing Protocol

Про архитектуру конкретного ничего не нашел.

Конвейеры это средство для формирования данных на сервере в формате удобном для клиентской части приложения. Мы можем пропустить сгенерированные XQuery данные через череду конвейеров, которые могут преобразовать наши данные различным способом.

В eXist эти вещи декларируют в файле sitemap.xmap:

Структура файла

Файл sitemap.xmap состоит из секций match. Если такой файл существует, то при запуске системы путь в адресной строке анализируется на соответствие атрибуту pattern каждого тега match в файле sitemap.xmap. Если соответствие найдено, то поиск прекращается и начинается обработка содержания тега match. Если ни одного соответствия не найдено, то управление передается обратно системе.

Тег match. Тег match обозначает секцию. Атрибут " pattern" определяет регулярное выражение, по которому система определяет, какую секцию файла sitemap.xml использовать.

< map: match pattern=" message_list.xq" >

< map: match pattern=" *.xq" >

Тег generate. Тег generate определяет источник данных, который будет использован для секции. В атрибуте src указывается URI источника данных. В атрибуте match может быть указан только один раз. В противном случае система выдаст ошибку. После получения XML, данные кладутся в буфер, чтобы использовать их потом в качестве источника данных в тегах transform, validate, serialize.

< map: generate src=" message_list.xq" type=" xquery" >

< generate src="./data/somefile.xml" />

< generate src=" http: //www.somesite.ru/news/rss.xml" />

Тег transform. Данная инструкция берет xml-документ, находящийся в буфере и совершает над ним xslt-преобразование, используя xslt-шаблон, указанный в атрибуте src. После преобразования получившийся документ кладется в буфер и может быть либо использован для повторного преобразования (еще один тег transform), либо для валидации (validate) или сериализации. Тег transform может быть указан 1 и более раз. Преобразования выполняются последовательно сверху вниз. Если тег transform не указан, то XML-документ в буфуре не изменяется и передается дальше по конвейеру на валидацию или сериализацию. < map: transform type=" xinclude" />

< map: transform src=" user_list.xsl" />

Тег serialize. Берет данные из буфера, передает их в сериализатор, указанный в атрибуте type и запускает процесс сериализации. < serialize type=" html" />

< serialize type=" xml" />

 

Пример sitemap’a

<? xml version=" 1.0" encoding=" UTF-8"? >

< map: sitemap xmlns: map=" http: //apache.org/cocoon/sitemap/1.0" >

< map: pipelines>

< map: pipeline>

< map: match pattern=" message_list.xq" >

< map: generate src=" message_list.xq" type=" xquery" >

< map: parameter name=" create-session" value=" false" />

< /map: generate>

< map: transform type=" xinclude" />

< map: transform src=" message_list.xsl" />

< map: serialize encoding=" UTF-8" type=" html" />

< /map: match>

< /map: pipeline>

< /map: pipelines>

< /map: sitemap>

 

 

Билет21

1. Язык преобразования XML документов - XSLT. Назначение, общая структура и основные понятия. Понятие контекста.

Контекст вычисления выражений

Выражения всегда вычисляются в некотором контексте – окружении, которое зависит от того, какая часть документа обрабатывается XSLT-процессором в данный момент, и какие объявления присутствовали в самом преобразовании.

Контекст преобразования состоит из узла, называемого контекстным узлом, двух целых чисел – размера контекста и позиции в контексте, объявлений переменных, объявлений пространств имен и библиотеки функций.

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

Контекст преобразования

При выполнении преобразования каждая из его инструкций, каждый из элементов обрабатывается в некотором контексте. Контекст преобразования состоит из двух частей: из текущего множества узлов и из текущего узла, которые показывают, что именно обрабатывается в данный момент. XSLT-процессор поочередно обрабатывает каждый из узлов текущего множества (при этом делая этот узел текущим узлом) и объединяет результаты в одно дерево.

Контекст преобразования может изменяться только двумя элементами – xsl: apply-templates и xsl: for-each. Каждый из этих элементов вычисляет множество узлов, которое становится текущим и затем обрабатывается. После этого контекст преобразования восстанавливается до того состояния, каким он был перед обработкой.

2.

3. Рисунок 1 Изменение контекста

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-08-24; Просмотров: 583; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.013 с.)
Главная | Случайная страница | Обратная связь