设为首页 收藏本站
查看: 634|回复: 0

[经验分享] Apache Cocoon入门

[复制链接]

尚未签到

发表于 2016-12-30 08:43:44 | 显示全部楼层 |阅读模式
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内容的一种方式。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321336-1-1.html 上篇帖子: Apache的配置 下篇帖子: Apache Commons Attributes
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表