My Blog JAVA

          My Blog JAVA

          導航

          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          統計

          常用鏈接

          留言簿(4)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          2006年10月19日 #

          Apache Cocoon入門

          在某種意義上,可將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內容的一種方式。

          posted @ 2006-10-19 12:23 My JAVA Blog 閱讀(1939) | 評論 (2)編輯 收藏

          主站蜘蛛池模板: 双辽市| 中牟县| 长阳| 临洮县| 定兴县| 都江堰市| 湄潭县| 凭祥市| 寻甸| 泰顺县| 都匀市| 铜陵市| 荥阳市| 分宜县| 南漳县| 保靖县| 罗田县| 徐闻县| 长乐市| 藁城市| 庆阳市| 凤庆县| 襄樊市| 微博| 合阳县| 大埔县| 莫力| 富裕县| 若尔盖县| 瑞金市| 潮州市| 海晏县| 杭州市| 毕节市| 那曲县| 衡水市| 赤峰市| 余江县| 望江县| 静安区| 张家港市|