Cocoon Project

最近要把Cocoon Migrate到JES上来 所以好好研究了一下 感觉挺有意思 就是开始的时候搞得比较烦!(因为想着马上要放长假了 哈哈
摘录了几篇文章下来,感觉这位作者写得很详细明了!

http://tag.csdn.net/tag/Cocoon/8.html
http://tag.csdn.net/Article/bd989a60-6d43-4f31-aa4c-aee33100c6cb.html
http://blog.csdn.net/wuyou/archive/2004/11/20/188301.aspx
http://blog.csdn.net/junnef/archive/2003/11/27/10283.aspx

作者tag: java CSDN 推荐tag: 安装  版本  编译  下载  文件夹  文件  tomcat  jakarta  sdk  apache  学习  xml  <script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

       AuthorJunnef Jin

       Date    2003/11/25

       E_mailjunnef21@sohu.com

       Blog:http://blog.csdn.net/junnef

       主页:http://www.inspiresky.com

     声明:本人保留本文的所有权利。  

 

最近在学XML,而说起XMLjava中的实际应用,就不能不提到COCOON,在国外已经有了很多使用COCOON1做得网站,而且非常成功。COCOON之于XML就象STRUTS之于JSP一样,随着XML的流行,并将也会成为热门的开发框架。不过国内基于COCOON的中文资料相当的少,所以在学习中也遇到了不少困难,特别是在开始的时候。这里是我的一些经验,写出来,希望对大家能够有所帮助,能有更多的人来共同学习应用COCOON 

开发环境, win2000;开发工具,任意文本编辑器,这里用XMLSpy 2004专业版+EditPlus2.11 

开发前的准备工作:

1、  下载Aapache Cocoon2.1.3的安装文件

下载网址:http://cocoon.apache.org/mirror.cgi,这里我们下载source包,就是名称中带有src标志的那个包,自己编译产生部署文件。

2、下载Jakarta Tomcat5.0的安装文件

下载网址:http://jakarta.apache.org/site/binindex.cgi,当前用的是5.0版本,使用5.1.4版本也没有太大的差别,不会影响下面的过程。

3、下载jsdk1.4.2版本

下载网址:http://java.sun.com/downloads/,也可以下载最新的版本,只要你的机器上编译和运行时环境(jre)都是一个jsdk版本的就行了。 

tomcat下配置cocoon2

4、  安装jsdk1.4.2

这里我们安装至c:/j2sdk目录下,并设置环境变量JAVA_HOME=c:/j2sdk,在CLASSPATH中加入c:/j2sdk/tool.jar,在PATH中加入c:/j2sdk/bin

5、  安装Jakarta Tomcat5.0

这里我们安装至c:/tomcat50目录下,并设置环境变量CATALINA_HOME=c:/tomcat50

6、  Apache Cocoon

Apache Cocoon2.1.3的压缩包,解压到c:/下,重命名为cocoon,我们这里假定COCOON2_HOME=c:/cocoon

7、  Apache Cocoon 2 web服务包(以前版本生成的cocoon.war包)

打开命令行窗口,进入COCOON2_HOME目录,运行如下命令:

build.bat –Dinclude.webapp.libs=yes webapp

       注:此处可能会出现错误,可能会说找不到某些包,这时你可以把他们设置进classpath中试一试,如果缺少某些包,你又找不到可以去google搜一下,到相应的网站下载。

最后将出现: 

BUILD SUCCESSFUL

Total time: 6 minutes 22 seconds 

表示编译成功。在COCOON2_HOME/build/cocoon-2.1.3目录下可以找到cocoon.jar和另外两个jar文件,cocoon.jar中封装了cocoon2的基本库文件。

       此时,我们会找不到cocoon.war包,而在COCOON2_HOME/build/文件夹下有一个文件夹webapp,这个文件夹中所放的就是以前cocoon.war包中的所有文件。确保tomcat服务关闭,将webapp文件夹拷贝至CATALINA_HOME/webapps下,并重命名为cocoon,启动tomcat服务器。

8、  测试服务是否可以运行

打开IE浏览器,并输入http://localhost:8080/cocoon/,第一次运行将会比较慢,因为tomcat需要对一些文件进行处理,以后会比较快。

如果可以正常运行,则显示如下页面:

       看到上面的画面表示安装成功,我们可以点击sample链接,学习cocoon给我们提供的一些例程,可以给我们一个很直观的印象,对cocoon的强大功能也可以有一个初步的认识,那个hello world例程特别值得研究,那个例程是一个用cocoon开发很典型的开发架构模式。

       注:这是可能有版本冲突,特别是直接装cocoon.war包时,如你以前装有的例如xalan等的版本与当前版本不同等等,,这时就要卸载以前的版本;如果你下载的是二进制的包,就是已经有了cocoon.war包,不是你当前编译的,如果你当前的jsdk与发行编译时的jdk版本不同,可能你在后面部署这个包后,也不能正常运行,所以强烈建议下载source版本,用当前机器所配置的jdk编译。

如果你可以看到页面,在如下的地址,你可以看到Cocoon所用到的工具包列表:http://localhost:8080/cocoon/docs/installing/jars.html

(未完待续)

 
作者tag: java CSDN 推荐tag: xsl  template  文件夹  文件  tomcat  apache  html  <script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

AuthorJunnef Jin

Date    2003/11/25

E_mailjunnef21@sohu.com

主页:www.inspiresky.com

Blog:http://blog.csdn.net/junnef

声明:本人保留本文的所有权利。

开发一个简单的程序:

下面我们来开发一个简单的程序,这个例子参考了Cocoon帮助文档中的一个例子,如果你已经按照Jakarta Tomcat5.0+Apache Cocoon2.1.3开发初步指南一--安装篇做了,那么通过下面的链接可以看到英文原例:

http://localhost:8080/cocoon/docs/howto/howto-html-pdf-publishing.html

下面一步一步来创建这个程序。

9、创建程序目录

在部署到Tomcat中的那个cocoon文件夹下,新建一个目录,命名为html-pdf

10、创建XML文档

html-pdf文件夹下创建如下两个文件:

pageOne.xml 

<?xml version="1.0" encoding="iso-8859-1"?>

<page>

  <title>This is the pageOne.xml example</title>

  <s1 title="Section one">

     <p>This is the text of section one</p>

  </s1>

</page> 

pageTwo.xml

<?xml version="1.0" encoding="iso-8859-1"?>

<page>

  <title>This is the pageTwo.xml example</title>

  <s1 title="Yes, it works">

     <p>Now you're hopefully seeing pageTwo in HTML or PDF</p>

  </s1>

</page> 

11、HTML文件创建XSLT转换器

html-pdf文件夹下创建

doc2html.xsl 

<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<!-- generate HTML skeleton on root element -->

<xsl:template match="/">

  <html>

    <head>

      <title><xsl:apply-templates select="page/title"/></title>

    </head>

    <body>

        <xsl:apply-templates/>

    </body>

  </html>

</xsl:template> 

<!-- story is used later by the Meerkat example -->

<xsl:template match="p|story">

    <p><xsl:apply-templates/></p>

</xsl:template> 

<!-- convert sections to HTML headings -->

<xsl:template match="s1">

    <h1><xsl:apply-templates select="@title"/></h1>

    <xsl:apply-templates/>

</xsl:template> 

</xsl:stylesheet> 

12、创建站点地图文件

这个文件是cocoon2中的两个重要配置文件之一,且必须命名为sitemap.xmap,放到该模块的根目录下,这里,放到html-pdf下,文件内容如下: 

<?xml version="1.0" encoding="iso-8859-1"?>

<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">

  <!-- define the Cocoon processing pipelines -->

  <map:pipelines>

     <map:pipeline>

         <!-- respond to *.html requests with

                 our docs processed by doc2html.xsl -->

         <map:match pattern="*.html">

            <map:generate src="{1}.xml"/>

            <map:transform src="doc2html.xsl"/>

            <map:serialize type="html"/>

         </map:match>

         <!-- later, respond to *.pdf requests with

                 our docs processed by doc2pdf.xsl -->

         <map:match pattern="*.pdf">

            <map:generate src="{1}.xml"/>

            <map:transform src="doc2pdf.xsl"/>

            <map:serialize type="fo2pdf"/>

         </map:match>

     </map:pipeline>

  </map:pipelines>

</map:sitemap> 

13、现在可以测试我们程序的HTML版面了

IE地址栏中输入下面的链接,将会看到如图所示的页面

http://localhost:8080/cocoon/html-pdf/pageOne.html

http://localhost:8080/cocoon/html-pdf/pageTwo.html

高兴吧,刚开始而已,下面我们会有更多的收获。

待续。

作者tag:java CSDN 推荐tag:.net ai blog coding com html oo orm sa xml xslt 

<script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

Author:JunsanJin
Date:    2003/11/25
E_mail:junnef21@sohu.com
主页:http://www.inspiresky.com
Blog:http://blog.csdn.net/junnef

声明:本人保留本文的所有权利。

14、创建PDFXSLT转换器

html-pdf文件夹下创建一个文件名为doc2pdf.xsl的文件,内容如下: 

<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"

    xmlns:fo="http://www.w3.org/1999/XSL/Format"

>

    <!-- generate PDF page structure -->

    <xsl:template match="/">

        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

            <fo:layout-master-set>

                <fo:simple-page-master master-name="page"

                  page-height="29.7cm"

                  page-width="21cm"

                  margin-top="1cm"

                  margin-bottom="2cm"

                  margin-left="2.5cm"

                  margin-right="2.5cm"

                >

                    <fo:region-before extent="3cm"/>

                    <fo:region-body margin-top="3cm"/>

                    <fo:region-after extent="1.5cm"/>

                </fo:simple-page-master> 

                <fo:page-sequence-master master-name="all">

                    <fo:repeatable-page-master-alternatives>

                        <fo:conditional-page-master-reference

                           master-reference="page" page-position="first"/>

                    </fo:repeatable-page-master-alternatives>

                </fo:page-sequence-master>

            </fo:layout-master-set> 

            <fo:page-sequence master-reference="all">

                <fo:flow flow-name="xsl-region-body">

                    <fo:block><xsl:apply-templates/></fo:block>

                </fo:flow>

            </fo:page-sequence>

        </fo:root>

    </xsl:template> 

    <!-- process paragraphs -->

    <xsl:template match="p">

        <fo:block><xsl:apply-templates/></fo:block>

    </xsl:template> 

    <!-- convert sections to XSL-FO headings -->

    <xsl:template match="s1">

        <fo:block font-size="24pt" color="red" font-weight="bold">

            <xsl:apply-templates select="@title"/>

        </fo:block>

        <xsl:apply-templates/>

    </xsl:template> 

</xsl:stylesheet> 

其实这就是所谓的XML FO文件了,W3C所定制的XSL标准中的一个,另外两个是XSLTXpath。我们这里转换XML文档到PDF主要靠它的定义,如果感兴趣的话可以去查一下相关的资料,学习一下。同时,我们还要顺便指出一下,这里从XMLPDF的转变,还借助了一个工具,那就是Apache XML Projects八大开源项目中的另外一个FOP,感兴趣的话,可以去http://xml.apache.org/fop/index.html看看,cocoon2.1.3带有FOP

这里提纲式的介绍一下Apache XML Projects的组成:

(1)    Xerces  XML的解析器。

(2)    Xalan  XSLT样式处理器。

(3)    Cocoon  基于XMLweb出版框架。

(4)    FOP  使用java编写的XSL FO应用工具,可以将XSL FO文件转换为PDF文件。

(5)    Xang  使用JavaScript快速开发动Server Pages的技术。

(6)    SOAP  实现了W3C的同名标准-简单对象访问协议。

(7)    Batik  基于java的针对SVG标准开发的工具包。

(8)    Crimson  源于Sun Project X ParserJava XML解析器,功能相对简单。

可以访问下面的网站获得更多的信息:

http://xml.apache.org 

15、测试我们的PDF文档

终于到了最激动人心的时刻,输入链接你会看到如下的页面:

http://localhost:8080/cocoon/html-pdf/pageOne.pdf

http://localhost:8080/cocoon/html-pdf/pageTwo.pdf

pdf文档看起来比html漂亮多了,记得别忘了安装Adobe Reader否则你就无法看到了

到此,我们对cocoon2应该有了一个初步的认识,如XSP编程,这里都没有涉及,更多的东西都在cocoon的帮助文档中,大家深入研究一下将会有更大的收获。 

附录:一些资源网址

       http://cocoon.apache.org/2.1/index.html cocoon的官方网站。

       http://wiki.cocoondev.org/Wiki.jsp?page=HowTos 一个How-To网站。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=10285

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值