XML TeX MathML
Темы:
XML как есть
Технология XSLT
Схемы данных
Программирование
Базы данных
Инструменты
Веб-сервисы
Мир стандартов
Приложения
Статьи

Начинаем работать с Cocoon 2

Автор: Steve Punte, 10 июля 2002

Оригинал статьи: XML.com

Перевод: А.Перчиков, 04 декабря 2002

Страницы: 1 2

Введение

Cocoon 2 от Apache XML Project является гибкой системой Web-публикации, в основе которой лежат повторно используемые компоненты. Несмотря на то, что концепция многократного использования компонент присутствует во многих системах, Cocoon выделяется простотой интерфейсов взаимодействия компонент. Каждая компонента принимает на вход и возвращает XML, и такой подход работает.

Данная статья является кратким обзором функциональных возможностей Cocoon 2. Прочитав ее, вы научитесь создавать небольшие приложения с использованием этой системы.

Что такое Cocoon 2?

Cocoon 2 является системой публикации XML. Что же это на самом деле значит? Это не база данных, в которой хранятся XML-данные, и не сервер приложений J2EE, который подготавливает контент для web-сервера. Cocoon 2 архитектурно располагается на промежуточном уровне и представляет собой среду обработки контента. Контент обрабатывается системой компонент, структуру которой как раз и строит разработчик.

Несколько примеров

Рассмотрим простой пример. Предположим, к некоторому XML-документу, сохраненному в файле (file.xml), применяется XSL-преобразование (stylesheet.xsl) для получения результата в виде HTML. Система компонент Cocoon, соответствующая данной задачи, показана на Рисунке 1.

Figure of three stage pipeline

Любая система компонент начинается с генератора. На рисунке 1 генератор анализирует файл и создает поток событий SAX. Вторым элементом в рассматриваемой системе компонент является XSL-процессор. В нашем случае, процессор преобразований применяет XSL-преобразование (stylesheet.xsl) к XML-документу, полученному от генератора. Результатом его также является SAX-поток. На выходе системы находится сериализатор. Он прерывает поток и выдает результата преобразования в качестве HTTP-ответа. Подобную трехуровневую систему компонент можно применять для создания множества или даже всех страниц разрабатываемого сайта. Этот пример может показаться слишком простым, поскольку две компоненты из трех являются крайними компонентами, однако, он хорошо иллюстрирует общую идею.

Figure of four stage pipeline

На рисунке 2 показан случай, более приближенный к реальной жизни. Страницы, содержащие статический и динамический контент, поступают из базы данных. К предыдущей схеме добавлена новая компонента — SQL-процессор. SQL-процессор обрабатывает SQL-выражения, включенные в исходный XML-документ, и заменяет их на результат выборки, опять же оформленный в виде XML-фрагмента. Например, если в исходном документе (в file.xml) содержится:

<guest-list>
  <sql:execute-query>
    <sql:query>
      SELECT CONCAT(lastName, ', ', firstName) as name, age
          FROM guest WHERE status = ARRIVING;
    </sql:query>
  </sql:execute-query>
</guest-list>

то соответствующим результатом действия SQL-процессора будет примерно следующее:

<guest-list>
  <row-set>
    <row>
      <name>Bush, George</name>
      <age>56</age>
    </row>
    <row>
      <name>Jackson, Michael</name>
      <age>42</age>
    </row>
    <row>
      <name>Einstein, Albert</name>
      <age>105</age>
    </row>
  </row-set>
</guest-list>

Главным преимуществом является то, что в исходном файле можно явно выделить бизнес-логику документа. В данном случае мы никак не используем JDBC API, напротив, контент исходного документа начинает отражать исходную бизнес-задачу.

Предположим теперь, что в локальной базе данных находится список символов акций, которые мы хотим использовать при отображении текущих цен на рынке. Подобная страница может являться составной частью какого-нибудь портала наподобие Yahoo. Эту бизнес-задачу можно решить с помощью многокомпонентной системы, показанной на Рисунке 3:

Figure of six stage pipeline

Допустим, что в SOAP-процессор поступает следующий фрагмент XML-кода:

<soap:query url="http://www.mystock.org:8080">
  <soap:body>
    <getStockPrice>
      <stockName>IBM</stockName>
      <stockName>HWQ</stockName>
      <stockName>BEA</sockName>
    </getStockPrice>
  </soap:body>
</soap:query>

Заметим, что в этом примере для преобразования результата работы SQL-процессора в формат, понятный SOAP-процессору в промежутке между этими двумя компонентами мы используем XSL-процессор. Как видно, XSL может использоваться для решения широкого круга задач, а не только для представления в виде HTML.

Назад Страницы: 1 2 Вперед
О Raleigh О CompuTel Реклама на сайте Контакты
Рейтинг@Mail.ruliveinternet.ru