首页 > 学院 > 开发设计 > 正文

竹笋炒肉的cocoon学习笔记

2019-11-18 11:19:14
字体:
来源:转载
供稿:网友

        http://hedong.3322.org/
  cocoon读[ke'ku:n],茧的意思。

  接连看到几篇文章谈cocoon,因其中牵扯术语太多,看后一头雾水,遂起学习之心。

  网上找到很多谈cocoon的,IBM : developerWorks 中国网站 的在线教程写得最棒。下面就是学习笔记,觉得有意思就顺手记下来了。

  以下三行是取源码的命令。
  cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
  cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic -z3 checkout -r cocoon_20_branch xml-cocoon2
  cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic logout
  
  管道由一些输入数据以及随后对它进行的一些处理步骤构成。每个处理步骤接受前一步的输出作为输入,一直到达管道的末端并产生最终输出。

  Cocoon 包含许多常规管道组件,根据在管道中扮演的角色,它们分组成几种完全不同的类型。

  管道输入 — 生成器(如FileGenerator,HtmlGenerator,DirectoryGenerator)和阅读器(常用来读静态文件)
  处理步骤 — 转换器(如XSLT 转换器)和操作
  管道输出 — 序列化器(如XML,HTML,SVG,PDF序列化器 )
  条件的处理 — 匹配器和选择器

  Cocoon 管道通常至少由生成器和序列化器组成,但可能含有任意数量的处理步骤。将数据作为 SAX 事件通过 Cocoon 管道传递。

  对接收请求和为响应提供服务的逻辑周期如下:
  1、从用户接受请求。
  2、确定用来解释该请求并生成响应的适当管道(使用匹配器)。
  3、从可用的预配置的组件构造管道。
  4、指示管道为请求服务。
  5、将由管道生成的响应返回用户,可能对结果进行高速缓存以便以后使用。

  网站地图(sitemap)两个功能:
  1、声明组件;
  2、定义管道。

  XML Server Pages(XSP)编译过程如下图:

  XSP语法:
  1、xsp:page 元素是每个 XSP 文档的根元素。它必须有一个标识该页面包含的编程语言 — 具体说就是“java”— 的语言属性。
  该页面元素可能包含:
   任意数目的 xsp:strUCture 元素
   任意数目的 xsp:logic 元素
   单个用户元素
  这最后一个限制非常重要。“用户元素”表示不在 XSP 名称空间中的任何元素,包括无名称空间的元素。之所以有这个限制是因为用户元素成为由 XSP 页面创建的 XML 文档的根元素,而 XML 文档只能有单个根元素。

  2、xsp:structure 和 xsp:include 元素用于向代码生成过程提供这些附加提示。这两个元素是一前一后使用的,xsp:structure 元素将许多 xsp:include 元素组合在一起。每个 xsp:include 定义一个要导入的附加 Java 包或类。

  3、xsp:logic 元素用于将 Java 代码块添加到 XSP。
  在这些元素作为 xsp:page 元素的直接子元素出现的任何地方(也就是,单个用户元素以外),这个代码块都应包含方法定义和/或成员变量。之所以存在这一点是因为出现在用户元素以外的代码不包含在生成器的 generate() 方法内。常规的 Java 语法规则意味着这个代码必须是成员或类(也就是,静态)变量或方法。
  xsp:logic 元素也可以使用在 XSP 页面的其它地方。在这种情况下,它们应该包含将被添加到已编译的生成器中的 generate() 方法的 Java 语句。这使 xsp:logic 元素类似于 jsp 页面中使用的 <% ... %>scriptlet 语法。

  4、CDATA 节,它向 XML 解析器发出信号以对于那节内容不采用良好格式规则
  <![CDATA[...]]>

  5、xsp:eXPR 元素用于封装一个表达式,该表达式的值将直接添加到输出文档。与此相反,xsp:logic 元素包含生成器的代码。因此,xsp:expr 元素等价于在 JSP 中实现类似角色的 <%= ... %> 表达式语法。例如:
<elements>
   <xsp:logic>
      for (int i=1; i<11; i++)
      {
         <element><xsp:expr>i</xsp:expr></element>
      }
   </xsp:logic>
</elements>

  6、通过使用 xsp:element 生成动态元素。如:
<xsp:element prefix="my" uri="http://www.examples.org">
   <xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
   Element content
</xsp:element>
这个示例生成了以下 XML 输出:
<my:myElementName xmlns:my="http://www.examples.org">Element content</my:myElementName>



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表