天空是藍色的

          做好軟件為中國 #gcc -c helloworld.c -o helloworld.o //編譯目標文件 #gcc helloworld.o -o helloworld //編譯成可執(zhí)行exe #helloworld //運行exe
          數(shù)據(jù)加載中……
          Apache Cocoon入門

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


          在某種意義上,可將Cocoon視為一個基于XML的內(nèi)容管理系統(tǒng),因其提供了一種機制來描述Web信息項目(內(nèi)容)的結(jié)構(gòu)和語義、這些項目的關(guān)系、它們?nèi)绾坞S著時間的推移而發(fā)生改變(邏輯)以及在請求時如何向用戶呈現(xiàn)(它們的樣式)。事實上,Cocoon項目作為Apache Web服務(wù)器項目的一部分,它的作用之一就是組織和控制Apache麾下眾多項目的文檔化過程。

          作為對其真實用途的一個比喻,Cocoon(繭)這個名字具有深遠的意義。它代表一種包裹結(jié)構(gòu),其中的某些東西將從幼蟲階段成長為美麗的蝴蝶,并準備展翅飛翔。但在Apache Cocoon的主頁上,沒有對這個巧妙的比喻進行說明。相反,它只是對這個項目進行了準確的技術(shù)性解釋:“Apache Cocoon是一個XML發(fā)布框架,它將XML和XSLT技術(shù)在服務(wù)器應(yīng)用程序中的應(yīng)用提升到一個新級別。Cocoon的宗旨是提升管道化SAX處理的性能和擴展性,通過對內(nèi)容、邏輯和樣式的分離來營造一個靈活的環(huán)境。”

          到底什么是Cocoon?

          Cocoon最初的型態(tài)是一個簡單的Java servlet,全部使用標準W3C組件:用文檔對象模型(DOM)來解析文檔,用XML來捕捉和格式化數(shù)據(jù),用XSLT來轉(zhuǎn)換數(shù)據(jù)和合并/操縱XML文檔,并用XSL來管理文檔的表示以便通過Web傳送。但人們很快就要求它為其他類型的內(nèi)容提供服務(wù)(比如程序和文檔),所以Cocoon逐漸發(fā)展成為一個完整的、基于XML的發(fā)布框架及系統(tǒng)。

          隨著時間的推移,幾個新的XML組件問世了,比如SAX。另外,XSL也逐漸細分為幾個不同的組件,分別提供Transforms、Formatting Objects和XPath功能。這些新標準直接促成了Cocoon 2在2002年的問世,它定義了一個標準的(而且仍在發(fā)展的)內(nèi)容管理系統(tǒng),并面向公眾開放。

          就目前來說,我們可采取幾種不同的方式來描述Cocoon:一個XML發(fā)布框架,一個數(shù)據(jù)源聚合器以及一系列管道和組件的集合。

          作為發(fā)布框架的Cocoon

          Cocoon基于對SAX事件的管道式處理。Web應(yīng)用程序如果圍繞這個框架來構(gòu)建,將獲得較好的擴展性和性能。利用一個集中式的配置系統(tǒng),你可以方便地創(chuàng)建、部署和維護Web應(yīng)用程序。Cocoon使用了一個緩存系統(tǒng),所有組件都可根據(jù)需要進行動態(tài)配置。接收到用戶請求后,會自動檢查緩存,判斷請求的URI(統(tǒng)一資源標識符)是否存在。如果存在,就直接傳遞緩存的內(nèi)容,不需要通過一個管道來處理它。

          Cocoon作為數(shù)據(jù)源聚合器

          Cocoon可作為一個抽象的引擎使用(通過一個Java servlet),它基于自定義的協(xié)議處理程序,能通過標準URI來訪問外部數(shù)據(jù)源。Cocoon甚至能遞歸調(diào)用自身,使數(shù)據(jù)流能在多個管道化階段同時處理,從而提高處理速度和效率。


          管道和組件

          Cocoon體系結(jié)構(gòu)的核心設(shè)計思想是模塊化和抽象處理。Cocoon管道在概念上和UNIX系統(tǒng)中使用的管道差不多,只是Cocoon管道中的所有元素都是通過解析XML文檔而創(chuàng)建的SAX事件。Cocoon識別3種類型的管道元素(組件),分別是生成器(generators)、轉(zhuǎn)換器(transformers)和序列化器(serializers)。其中,生成器使用一個請求的URI來生成SAX事件;轉(zhuǎn)換器使用SAX事件并生成其他SAX事件;序列化器使用SAX事件并生成一些響應(yīng)。

          Cocoon的用途

          簡單地說,Cocoon管道用于生成和遞送內(nèi)容。內(nèi)容采用的是某種可識別的形式,由一個生成器和一個序列化器構(gòu)成。在較典型的Cocoon管道中,生成器之后可能緊接著一個或多個轉(zhuǎn)換器鏈,而序列化器用于生成不同格式的輸出。采取這種方式,同一個源文檔可為Web瀏覽器生成HTML格式的內(nèi)容,為WAP設(shè)備生成WML格式的內(nèi)容,為打印輸出生成PDF格式的內(nèi)容。

          作為一個開發(fā)平臺,Cocoon最吸引人的地方在于它提供了品種豐富的生成器、轉(zhuǎn)換器和序列化器。人們?yōu)镃ocoon 2項目開發(fā)和捐贈了許多這樣的組件。一經(jīng)捐贈,這些組件就可進行定制,以添加新功能或者進行擴展,從而創(chuàng)建出新的組件。A總結(jié)了適用于Cocoon的一些常用生成器、轉(zhuǎn)換器和序列化器。

          表A

          類別 名稱 說明
          生成器 DirectoryGenerator 將目錄列表轉(zhuǎn)換成XML格式,以便從中生成SAX事件
          生成器 FileGenerator 解析一個文件或URI,并生成SAX事件
          生成器 JSPGenerator 根據(jù)JSP頁來生成XML和SAX事件
          生成器 ServerPagesGenerator 根據(jù)XSP頁來生成XML和SAX
          轉(zhuǎn)換器 i18nTransformer 使用i18n字典和語言參數(shù)值來轉(zhuǎn)換SAX事件
          轉(zhuǎn)換器 XincludeTransformer 通過為現(xiàn)有的SAX流添加SAX事件,從而處理xinclude命名空間,并包括外部源
          轉(zhuǎn)換器 XSLTransformer 根據(jù)XSLT樣式表定義來轉(zhuǎn)換SAX事件流
          序列化器 HTMLSerializer 根據(jù)SAX事件來生成HTML響應(yīng)
          序列化器 PDFSerializer 根據(jù)SAX事件,使用Apache FOP(格式輸出處理器)來生成PDF
          序列化器 SVG2JPGSerializer 根據(jù)SVG SAX事件,使用Apache Batik來生成JPEG圖像
          序列化器 TextSerializer 根據(jù)SAX事件來生成純文本輸出,適用于非XML文本,比如CSS或程序語言代碼
          序列化器 XMLSerializer 根據(jù)SAX事件來生成XML響應(yīng)

          可由Cocoon使用的部分組件

          如所你見,Cocoon的功能并非只是簡單地將數(shù)據(jù)格式化成HTML。在未來的文章中,我們將研究如何在Cocoon環(huán)境中創(chuàng)建和處理文檔,并更詳細地介紹在這個環(huán)境中工作所牽涉的問題。就目前來說,你只需理解Cocoon是針對多種目的來捕捉、呈現(xiàn)和遞送Web內(nèi)容的一種方式。

           

          posted on 2006-02-15 15:28 bluesky 閱讀(8771) 評論(1)  編輯  收藏 所屬分類: 記事本

          評論

          # 求救..re: Apache Cocoon入門 2006-09-27 05:22 Jasmine

          版主好啊...請問怎么在cocoon里插入圖像和多媒體數(shù)據(jù)呢....
          請給我說說吧..revendway@hotmail.com
          謝了先
            回復  更多評論    
          主站蜘蛛池模板: 盐山县| 东方市| 图们市| 莲花县| 襄城县| 沭阳县| 贵溪市| 贵港市| 伊春市| 慈溪市| 南宫市| 怀集县| 拉萨市| 分宜县| 海伦市| 长春市| 河东区| 大城县| 肥乡县| 迭部县| 德钦县| 夏邑县| 全南县| 平陆县| 英吉沙县| 临城县| 佛冈县| 夏邑县| 渭南市| 黎川县| 洪雅县| 福安市| 青川县| 健康| 五指山市| 孟村| 陈巴尔虎旗| 通州市| 大方县| 贵德县| 南开区|