My Blog JAVA

          My Blog JAVA

          導航

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          統計

          常用鏈接

          留言簿(4)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          2006年9月23日 #

          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)編輯 收藏

          Apt 使用備忘

          命令?????????????????????????????????????????????????????????????? 作用
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-cache search package???????????????? 搜索包
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-cache show package?????????????????? 獲取包的相關信息,如說明、大小、版本等
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get install package????????????????????? 安裝包
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get install package - - reinstall??? 重新安裝包
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get remove package?????????????????? 刪除包
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get remove package - - purge??? 刪除包,包括刪除配置文件等
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get update?????????????????????????????????? 更新源
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get dist-upgrade????????????????????????? 升級系統
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get -f install????????????????????????????????? 強制安裝
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-cache depends package???????????? 了解使用依賴
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-cache rdepends package??????????? 了解某個具體的依賴
          ----------------------------------------------------------------------------------------------------------------------------------------
          sudo apt-get build-dep package???????????????? 安裝相關的編譯環境
          ----------------------------------------------------------------------------------------------------------------------------------------

          posted @ 2006-09-23 01:09 My JAVA Blog| 編輯 收藏

          主站蜘蛛池模板: 新巴尔虎左旗| 伊宁市| 离岛区| 宁国市| 通山县| 珲春市| 黎城县| 洛浦县| 肇州县| 衡阳市| 新兴县| 尼玛县| 潼关县| 石泉县| 宜兰县| 同仁县| 印江| 南木林县| 凤冈县| 桐梓县| 绍兴市| 大宁县| 黄龙县| 郓城县| 泉州市| 宁河县| 古蔺县| 东港市| 内丘县| 余庆县| 阿拉善右旗| 达尔| 和田县| 松江区| 大理市| 昔阳县| 孝昌县| 炎陵县| 重庆市| 海南省| 南宁市|