Apache Cocoon入门

简介: Apache Cocoon入门 作者: 周靖 译 http://www.zdnet.com.cn/developer/tech/story/0,3800067013,39139224-1,00.htm在 某种意义上,可将Cocoon视为一个基于XML的内容管理系统,因其提供了一种机制来描述Web信息项目(内容)的结构和语义、这些项目的关系、它们如 何随着时间的

Apache Cocoon入门

作者: 周靖 译

作为对其真实用途的一个比喻,Cocoon(茧)这个名字具有深远的意义。它代表一种包裹结构,其中的某些东西将从幼虫阶段成长为美丽的蝴蝶,并准备展翅飞翔。但在Apache Cocoon的主页上, 没有对这个巧妙的比喻进行说明。相反,它只是对这个项目进行了准确的技术性解释:“Apache Cocoon是一个XML发布框架,它将XML和XSLT技术在服务器应用程序中的应用提升到一个新级别。Cocoon的宗旨是提升管道化SAX处理的性 能和扩展性,通过对内容、逻辑和样式的分离来营造一个灵活的环境。”

到底什么是Cocoon?

Cocoon最初的型态是一个简单的Java servlet,全部使用标准W3C组件:用文档对象模型(DOM)来解析文档,用XML来捕捉和格式化数据,用XSLT来转换数据和合并/操纵XML文 档,并用XSL来管理文档的表示以便通过Web传送。但人们很快就要求它为其他类型的内容提供服务(比如程序和文档),所以Cocoon逐渐发展成为一个 完整的、基于XML的发布框架及系统。

随着时间的推移,几个新的XML组件问世了,比如SAX。另外,XSL也逐渐细分为几个不同的组件,分别提供Transforms、 Formatting Objects和XPath功能。这些新标准直接促成了Cocoon 2在2002年的问世,它定义了一个标准的(而且仍在发展的)内容管理系统,并面向公众开放。

就目前来说,我们可采取几种不同的方式来描述Cocoon:一个XML发布框架,一个数据源聚合器以及一系列管道和组件的集合。

作为发布框架的Cocoon

Cocoon基于对SAX事件的管道式处理。Web应用程序如果围绕这个框架来构建,将获得较好的扩展性和性能。利用一个集中式的配置系统,你可以 方便地创建、部署和维护Web应用程序。Cocoon使用了一个缓存系统,所有组件都可根据需要进行动态配置。接收到用户请求后,会自动检查缓存,判断请 求的URI(统一资源标识符)是否存在。如果存在,就直接传递缓存的内容,不需要通过一个管道来处理它。

Cocoon作为数据源聚合器

Cocoon可作为一个抽象的引擎使用(通过一个Java servlet),它基于自定义的协议处理程序,能通过标准URI来访问外部数据源。Cocoon甚至能递归调用自身,使数据流能在多个管道化阶段同时处理,从而提高处理速度和效率。


管道和组件

Cocoon体系结构的核心设计思想是模块化和抽象处理。Cocoon管道在概念上和UNIX系统中使用的管道差不多,只是Cocoon管道中的所 有元素都是通过解析XML文档而创建的SAX事件。Cocoon识别3种类型的管道元素(组件),分别是生成器(generators)、转换器 (transformers)和序列化器(serializers)。其中,生成器使用一个请求的URI来生成SAX事件;转换器使用SAX事件并生成其 他SAX事件;序列化器使用SAX事件并生成一些响应。

Cocoon的用途

简单地说,Cocoon管道用于生成和递送内容。内容采用的是某种可识别的形式,由一个生成器和一个序列化器构成。在较典型的Cocoon管道中, 生成器之后可能紧接着一个或多个转换器链,而序列化器用于生成不同格式的输出。采取这种方式,同一个源文档可为Web浏览器生成HTML格式的内容,为 WAP设备生成WML格式的内容,为打印输出生成PDF格式的内容。

作为一个开发平台,Cocoon最吸引人的地方在于它提供了品种丰富的生成器、转换器和序列化器。人们为Cocoon 2项目开发和捐赠了许多这样的组件。一经捐赠,这些组件就可进行定制,以添加新功能或者进行扩展,从而创建出新的组件。A总结了适用于Cocoon的一些常用生成器、转换器和序列化器。

表A

 

类别 名称 说明
生成器 DirectoryGenerator 将目录列表转换成XML格式,以便从中生成SAX事件
生成器 FileGenerator 解析一个文件或URI,并生成SAX事件
生成器 JSPGenerator 根据JSP页来生成XML和SAX事件
生成器 ServerPagesGenerator 根据XSP页来生成XML和SAX
转换器 i18nTransformer 使用i18n字典和语言参数值来转换SAX事件
转换器 XincludeTransformer 通过为现有的SAX流添加SAX事件,从而处理xinclude命名空间,并包括外部源
转换器 XSLTransformer 根据XSLT样式表定义来转换SAX事件流
序列化器 HTMLSerializer 根据SAX事件来生成HTML响应
序列化器 PDFSerializer 根据SAX事件,使用Apache FOP(格式输出处理器)来生成PDF
序列化器 SVG2JPGSerializer 根据SVG SAX事件,使用Apache Batik来生成JPEG图像
序列化器 TextSerializer 根据SAX事件来生成纯文本输出,适用于非XML文本,比如CSS或程序语言代码
序列化器 XMLSerializer 根据SAX事件来生成XML响应
可由Cocoon使用的部分组件

如所你见,Cocoon的功能并非只是简单地将数据格式化成HTML。在未来的文章中,我们将研究如何在Cocoon环境中创建和处理文档,并更详 细地介绍在这个环境中工作所牵涉的问题。就目前来说,你只需理解Cocoon是针对多种目的来捕捉、呈现和递送Web内容的一种方式。

目录
相关文章
|
Java 应用服务中间件 Apache
从零手写实现 apache Tomcat-01-入门介绍
创建简易Tomcat涉及理解其作为Java服务器的角色,建立HTTP服务器,实现Servlet接口处理动态和静态内容,以及启动和关闭服务器。项目mini-cat是一个简化版Tomcat实现,支持Servlet、静态网页和基础功能。可通过maven添加依赖并运行测试类快速体验。开源项目位于[GitHub](https://github.com/houbb/minicat)。
|
SQL 算法 Java
Apache Calcite入门
Apache Calcite入门
850 0
|
分布式计算 Java 大数据
Apache SeaTunnel 3 分钟入门指南
Apache SeaTunnel 3 分钟入门指南
1549 0
|
数据采集 分布式计算 Hadoop
开源数据质量解决方案——Apache Griffin入门宝典(上)
开源数据质量解决方案——Apache Griffin入门宝典
2303 0
|
SQL 消息中间件 分布式计算
Apache Doris 系列: 入门篇-数据导入及查询
Apache Doris 系列: 入门篇-数据导入及查询
2128 0
|
SQL 关系型数据库 Apache
Apache Doris 系列: 入门篇-创建数据表
Apache Doris 系列: 入门篇-创建数据表
2235 0
|
存储 固态存储 关系型数据库
Apache Doris 系列: 入门篇-安装部署
Apache Doris 系列: 入门篇-安装部署
4094 0
|
分布式计算 Java 大数据
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
271 0
|
Java 应用服务中间件 Apache
Apache HTTP配置反向代理入门
Apache HTTP配置反向代理入门
723 0
Apache HTTP配置反向代理入门
|
XML 安全 Java
从零手写实现 apache Tomcat-02-web.xml 入门详细介绍
`web.xml`是Java Web应用的核心配置文件,描述应用工作方式。它包含Servlet、Filter和Listener的定义。例如,示例展示了如何配置名为`my`的Servlet处理`/my`请求,`LoggingFilter`拦截所有请求,以及`MyServletContextAttrListener`监听应用事件。`web.xml`是服务器理解应用结构与行为的指南。迷你版Tomcat实现——mini-cat(开源:https://github.com/houbb/minicat)。

推荐镜像

更多