Apache Cocoon入门

Apache Cocoon入门

作者: 周靖 译
http://www.zdnet.com.cn/developer/tech/story/0,3800067013,39139224-1,00.htm


某种意义上,可将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内容的一种方式。

时间: 2024-09-17 04:20:24

Apache Cocoon入门的相关文章

《Spark与Hadoop大数据分析》一一第2章 Apache Hadoop和Apache Spark入门

第2章 Apache Hadoop和Apache Spark入门 在本章,我们将学习 Hadoop 和 Spark 的基本知识,了解 Spark 与 MapReduce 有哪些不同,并开始安装集群和设置分析所需的工具.本章分为以下几个子主题:介绍 Apache Hadoop介绍 Apache Spark讨论为什么要配套使用 Hadoop 和 Spark安装 Hadoop 和 Spark 集群

《Spark与Hadoop大数据分析》——第2章 Apache Hadoop和Apache Spark入门

第2章 Apache Hadoop和Apache Spark入门 在本章,我们将学习 Hadoop 和 Spark 的基本知识,了解 Spark 与 MapReduce 有哪些不同,并开始安装集群和设置分析所需的工具. 本章分为以下几个子主题:

Apache HBase 入门

介绍 Quickstart 将使您运行一个单节点,独立的 HBase 实例. 这一节描述了单节点独立 HBase 的设置. 独立的 实例具有所有的 HBase 守护进程 -- Master,RegionServers,和 ZooKeeper -- 运行于一个单独的JVM 持久化到本地文件系统.它是我们的大多数基本部署配置文件.我们将向你展示如何使用 hbase shell CLI 在 HBase 中创建一个表,向表中插入行,对表执行 put 和 scan 操作,启用或禁用表,以及启动和停止 HB

Apache Thrift入门(安装、测试与java程序编写)

安装Apache Thrift ubuntu linux运行: #!/bin/bash #下载 wget http://mirrors.cnnic.cn/apache/thrift/0.9.1/thrift-0.9.1.tar.gz tar zxvf thrift-0.9.1.tar.gz cd thrift-0.9.1.tar.gz ./configure make make install #编译java依赖包 cd lib/java ant 安装ubuntu依赖 sudo apt-get

Apache Camel的Java编程入门指南_java

 Apache Camel是一个非常实用的规则引擎库,能够用来处理来自于不同源的事件和信息.你可以在使用不同的协议比如VM,HTTP,FTP,JMS甚至是文件系统中来传递消息,并且让你的操作逻辑和传递逻辑保持分离,这能够让你更专注于消息的内容. 在这篇文章中,我将提供一个Java语言(非Groovy)的Apache Camel入门演示. 首先创建一个Maven项目的pom.xml.   <?xml version="1.0" encoding="UTF-8"?

使用Java技术在Cocoon中实现商业逻辑

如果你对Apache Cocoon有了解或者以涉足,你可能对在Cocoon中如何使用Java更好 的实现特定的逻辑有所疑惑.这篇文章将给您介绍如何使用XSP(Extensible Server Page) 和Action.同时还有示例和设计原则. 你可能听到了一些来自Apache的关于Cocoon的声音.现在,在经历了三年的发展后, Cocoon已经逐渐的从一个简单的实现XSL (Extensible Stylesheet Language) 转换 的servlet成长为一个饱满的Web应用框架

Linux Apache Web 服务器终极教程_unix linux

APACHE系统介绍  根据著名的WWW服务器调查公司所作的调查世界上百分之五十以上的WWW服务器都在使用Apache是世界排名第一的WEB服务器.Apache的诞生极富有戏剧性.当NCSA WWW服务器项目停顿后那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序他们也很快认识到成立管理这些补丁程序的论坛是必要的.就这样诞生了Apache Group后来这个团体在NCSA的基础上创建了Apache.  Apache的主要特征是  . 可以运行上所有计算机平台  . 支持最新的

跨越边界: JavaScript语言特性

JavaScript 常被人们认为是编程语言中无足轻重的一员.这种观点的形成可以"归功"于 其开发工具.复杂且不一致的面向 HTML 页面的文档对象模型以及不一致的浏览器实现.但 JavaScript 绝对不仅仅是一个玩具这么简单.在本文中,Bruce Tate 向您介绍了 JavaScript 的语言特性. 几乎每个 Web 开发人员都曾有过诅咒 JavaScript 的经历.这个备受争议的语言受累于其复杂的称为 文档对象模型 (DOM)的编程模型.糟糕的实现和调试工具以及不一致的浏

【转载】开源且免费软件包分类列表

转载自:http://my.oschina.net/u/617889/blog/86688 This is a list of free and open source software packages: computer software licensed under free software licenses andopen source licenses. Software that fits the Free Software Definition may be more appro