Esse artigo faz parte da revista Java Magazine edição 09. Clique aqui para ler todos os artigos desta edição

img

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Cocoon Inicial

Publicação Web com XML, XSL e Java

Gustavo Nalle Fernandes

Uma introdução prática ao framework Apache para publicação web, baseado em tecnologias XML e construído 100% em Java

O Apache Cocoon é um poderoso framework livre, criado em Java, para a construção de aplicações baseadas em XML, contemplando a separação entre conteúdo, lógica (processamento de dados e geração de conteúdo) e estilo (forma como o conteúdo é exibido).

Características e vantagens

Uma das principais características do Cocoon é o seu suporte à separação de responsabilidades, segundo a qual, profissionais de diferentes perfis podem restringir-se apenas ao trabalho no qual têm maior especialização. O Cocoon tem a vantagem de separar completamente a lógica e estilo; não existe código Java nem marcações de templates dentro de páginas HTML/WML, ou em qualquer outro formato de apresentação utilizado. Isso é possível com o uso de XML e XSL – o XML é responsável pela descrição do conteúdo; o XSL, entre outras coisas, pela forma como o conteúdo é exibido.

O Cocoon permite a geração de XML a partir de diversas fontes, tais como sistemas de arquivos, banco de dados, servidores LDAP, páginas HTML e web services, só para citar algumas. O conteúdo pode ser apresentado em muitos formatos: HTML, XML, WML, TXT, PDF, XLS, PNG, JPEG, entre outros.

Por apresentar uma arquitetura modular, não é difícil estender o Cocoon para criar componentes que atendam a necessidades específicas. Pode-se, por exemplo, implementar o suporte a um formato diferente de apresentação, ou permitir o acesso a um novo tipo de fonte de dados. No entanto, os muitos componentes e exemplos que já vêm com o Cocoon tornam extensões desnecessárias para a maioria das aplicações.

Nota: a criação de aplicações baseadas no Cocoon exige o conhecimento básico de XML e XSL. Os tutoriais indicados nos links são boas fontes para o aprendizado dessas tecnologias.

Pipelines

A atividade central na construção de aplicações baseadas no Cocoon é a interconexão de três tipos de componentes: Generators, Transformers e Serializers.

A função de um Generator é gerar eventos SAX através do parsing de um documento XML, que pode ser proveniente de um arquivo em disco, uma consulta SQL, um arquivo XHTML gerado a partir de uma página HTML, enfim, de dados de qualquer fonte capaz de produzir XML.

Os Transformers recebem os eventos SAX dos Generators, realizam algum tipo de transformação (XSL, por exemplo) e geram novos eventos SAX, que são consumidos pelos Serializers; estes geram a representação final do conteúdo: páginas HTML, documentos PDF, imagens de vários tipos etc.

Uma combinação de um Generator, Transformers (zero ou mais) e um Serializer constitui um Pipeline, a unidade básica de processamento do Cocoon (veja a Figura 1).

Um pipeline pode ainda conter Matchers, componentes com função semelhante a uma instrução if, e Selectors, que permitem implementar estruturas lógicas similares a um switch/case. Os pipelines são declarados no arquivo sitemap.xmap, localizado na raiz da distribuição do Cocoon.

A Listagem 1 mostra dois exemplos de pipelines. O primeiro é ativado quando for feita uma requisição na forma "/site/relat-**.xml" (que corresponde a qualquer URL com prefixo "/site/relat-"  e sufixo ".xml"). A execução do pipeline é iniciada por um Generator do tipo File, que lê do disco o arquivo XML com o nome correspondente ao padrão “**” na URL requisitada. Assim se a URL for, por exemplo, "/site/relat-teste.xml", o arquivo "xrels/teste.xml" será a entrada do pipeline (note que "xrels" é o diretório declarado em ). Na próxima etapa, é feita uma transformação usando a folha de estilo document2html.xsl. Por fim, o documento resultante é serializado e enviado ao cliente como um arquivo Excel (.xls).

O segundo pipeline é ativado quando a URL docs/javamag.html é requisitada. O processamento é iniciado por um Generator do tipo HTML, que acessa a URL meuhost.com.br/doc.html e transforma o documento lido em XHTML usando a ferramenta JTidy (incluída na distribuição do Cocoon). Usando um Selector do tipo Browser, esse pipeline aplica diferentes transformações, dependendo do navegador usado pelo cliente; em seguida, o documento resultante é serializado em HTML.

A distribuição atual do Cocoon inclui 20 tipos de Generators, 11 tipos de Transformers e 17 variedades de Serializers. Conheça alguns dos mais utilizados:

§         FileGenerator ...

Quer ler esse conteúdo completo? Tenha acesso completo