Apache Cocoon入门

在某种意义上,可将Cocoon视为一个基于XML的内容管理系统,因其提供了一种机制来描述Web信息项目(内容)的结构和语义、这些项目的关 系、它们如何随着时间的推移而发生改变(逻辑)以及在请求时如何向用户呈现(它们的样式)。事实上,Cocoon项目作为Apache Web服务器项目的一部分,它的作用之一就是组织和控制Apache麾下众多项目的文档化过程。

作为对其真实用途的一个比喻,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内容的一种方式。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值