Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

          作者: 周靖 譯
          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)和語義、這些項目的關系、它們?nèi)? 何隨著時間的推移而發(fā)生改變(邏輯)以及在請求時如何向用戶呈現(xiàn)(它們的樣式)。事實上,Cocoon項目作為Apache Web服務器項目的一部分,它的作用之一就是組織和控制Apache麾下眾多項目的文檔化過程。

          作為對其真實用途的一個比喻,Cocoon(繭)這個名字具有深遠的意義。它代表一種包裹結(jié)構(gòu),其中的某些東西將從幼蟲階段成長為美麗的蝴蝶,并準備展翅飛翔。但在Apache Cocoon的主頁上, 沒有對這個巧妙的比喻進行說明。相反,它只是對這個項目進行了準確的技術(shù)性解釋:“Apache Cocoon是一個XML發(fā)布框架,它將XML和XSLT技術(shù)在服務器應用程序中的應用提升到一個新級別。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)容提供服務(比如程序和文檔),所以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應用程序如果圍繞這個框架來構(gòu)建,將獲得較好的擴展性和性能。利用一個集中式的配置系統(tǒng),你可以 方便地創(chuàng)建、部署和維護Web應用程序。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)的核心設計思想是模塊化和抽象處理。Cocoon管道在概念上和UNIX系統(tǒng)中使用的管道差不多,只是Cocoon管道中的所 有元素都是通過解析XML文檔而創(chuàng)建的SAX事件。Cocoon識別3種類型的管道元素(組件),分別是生成器(generators)、轉(zhuǎn)換器 (transformers)和序列化器(serializers)。其中,生成器使用一個請求的URI來生成SAX事件;轉(zhuǎn)換器使用SAX事件并生成其 他SAX事件;序列化器使用SAX事件并生成一些響應。

          Cocoon的用途

          簡單地說,Cocoon管道用于生成和遞送內(nèi)容。內(nèi)容采用的是某種可識別的形式,由一個生成器和一個序列化器構(gòu)成。在較典型的Cocoon管道中, 生成器之后可能緊接著一個或多個轉(zhuǎn)換器鏈,而序列化器用于生成不同格式的輸出。采取這種方式,同一個源文檔可為Web瀏覽器生成HTML格式的內(nèi)容,為 WAP設備生成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響應
          序列化器 PDFSerializer 根據(jù)SAX事件,使用Apache FOP(格式輸出處理器)來生成PDF
          序列化器 SVG2JPGSerializer 根據(jù)SVG SAX事件,使用Apache Batik來生成JPEG圖像
          序列化器 TextSerializer 根據(jù)SAX事件來生成純文本輸出,適用于非XML文本,比如CSS或程序語言代碼
          序列化器 XMLSerializer 根據(jù)SAX事件來生成XML響應
          可由Cocoon使用的部分組件

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

          posted on 2009-10-15 09:39 seal 閱讀(261) 評論(0)  編輯  收藏 所屬分類: Java基礎
          主站蜘蛛池模板: 寿光市| 奉新县| 卢龙县| 周至县| 大洼县| 渭南市| 景洪市| 临泉县| 呼伦贝尔市| 儋州市| 德兴市| 临沧市| 大城县| 北安市| 德格县| 昆明市| 千阳县| 白沙| 车致| 新绛县| 岳普湖县| 射阳县| 朔州市| 霍林郭勒市| 长岛县| 凤山县| 昌乐县| 宁晋县| 馆陶县| 河西区| 巴塘县| 土默特右旗| 伽师县| 潼南县| 五河县| 弥渡县| 邯郸县| 荆州市| 三原县| 临汾市| 汉寿县|