Введение
Apache Cocoon, обычно сокращенно Cocoon, — это веб-приложе́ние, разработанное на основе концепций конвейера (Pipeline), разделения ответственности и компонентно-ориентированной веб-разработки. Фреймворк ориентирован на публикацию XML и XSLT и реализован на языке программирования Java. Использование XML в Cocoon призвано повысить совместимость форматов публикации, таких как HTML и PDF. Системы управления контентом Apache Lenya и Daisy были созданы на базе этого фреймворка. Cocoon также часто используется как инструмент ETL для организации хранилищ данных или в качестве промежуточного программного обеспечения для передачи данных между системами.
Apache Cocoon, usually abbreviated as Cocoon, is a web application framework built around the concepts of Pipeline, separation of concerns, and component based web development. The framework focuses on XML and XSLT publishing and is built using the Java programming language. Cocoon's use of XML is intended to improve compatibility of publishing formats, such as HTML and PDF. The content management systems Apache Lenya and Daisy have been created on top of the framework. Cocoon is also commonly used as a data warehousing ETL tool or as middleware for transporting data between systems.
Карта сайта
Apache Cocoon использует карты сайта, чтобы предоставить пользователям возможность управлять различными компонентами программного обеспечения Cocoon, а также определять взаимодействие между клиентом и сервером в рамках так называемых конвейеров (Pipelines).
Компоненты
Компоненты внутри Cocoon сгруппированы по функциональности.
Спаренные
Сопоставители используются для сопоставления запросов пользователей, таких как URL или cookie, с подстановочными знаками или регулярными выражениями. Каждый запрос пользователя проверяется на соответствие сопоставителям в карте сайта, пока не будет найдено совпадение. В сопоставителе указывается ответ на конкретный запрос.
Генераторы
Генераторы создают поток данных для последующей обработки. Этот поток может быть сгенерирован из существующего XML-документа, либо существуют генераторы, способные создавать XML с нуля для представления каких-либо данных на сервере, например, структуры каталогов или данных изображений.
XSP
Одним из типов генераторов является XML Server Page (XSP) – XML-документ, содержащий директивы на основе тегов, определяющие, как генерировать динамический контент в момент поступления запроса. При обработке Cocoon эти директивы заменяются сгенерированным контентом, в результате чего полученный расширенный XML-документ может быть подвергнут дальнейшей обработке (как правило, преобразованию XSLT). XSP преобразуются в генераторы Cocoon, обычно в виде классов Java, хотя можно использовать и любой язык сценариев, для которого существует процессор на основе Java. Директивы могут быть встроенными ("XSP") или пользовательскими тегами обработки, и оба типа определяются в логических листах. Теги определяются с помощью шаблонов XSLT, описывающих, как теги (представленные в виде узлов XML) преобразуются в другие узлы XML или в процедурный код, например, Java. Эти теги используются для внедрения процедурной логики, подстановки выражений, получения информации из окружения веб-сервера и выполнения других операций. Следует отметить, что XSP считается устаревшим в последних версиях Cocoon.
Трансформаторы
Трансформеры принимают поток данных и преобразуют его. Наиболее распространенные преобразования выполняются с помощью XSLT для изменения одного XML-формата в другой. Однако существуют также трансформаторы, которые обрабатывают данные в других форматах (например, SQL-запросы).
Сериализаторы
Сериализатор преобразует поток XML-событий в последовательность байтов (например, HTML), которую можно вернуть клиенту. Некоторые сериализаторы позволяют отправлять данные во множестве различных форматов, таких как HTML, XHTML, PDF, RTF, SVG, WML и простой текст, например.
Селекторы
Селекторы предоставляют те же возможности, что и оператор switch. Они позволяют выбирать определенные элементы запроса и выбирать подходящую часть конвейера для обработки.
Взгляды
Виды используются главным образом для тестирования. Вид является точкой выхода в конвейере. Вы можете вывести XML-поток, сформированный к этому моменту, чтобы проверить, правильно ли работает приложение.
Читатели
Публикуйте контент без разбора (без обработки XML). Используется для изображений и подобных файлов.
Действия
Действия — это классы Java, которые выполняют определенную бизнес-логику или управляют созданием нового контента.
Трубопровод
Трубопровод используется для определения способа взаимодействия различных компонентов Cocoon с заданным запросом для формирования ответа. Типичный трубопровод состоит из генератора, за которым следуют ноль или более трансформаторов и, в заключение, сериализатор.