天空是藍(lán)色的

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

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


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

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

          到底什么是Cocoon?

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

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

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

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

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

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

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


          管道和組件

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

          Cocoon的用途

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

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

          表A

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

          可由Cocoon使用的部分組件

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

           

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

          評(píng)論

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

          版主好啊...請(qǐng)問(wèn)怎么在cocoon里插入圖像和多媒體數(shù)據(jù)呢....
          請(qǐng)給我說(shuō)說(shuō)吧..revendway@hotmail.com
          謝了先
          主站蜘蛛池模板: 嘉祥县| 康保县| 九寨沟县| 孟连| 日土县| 临澧县| 望谟县| 唐山市| 郓城县| 凭祥市| 富源县| 宜兰市| 吉林省| 布尔津县| 丰台区| 三河市| 高雄市| 高陵县| 周口市| 磐石市| 永清县| 于田县| 淄博市| 灵璧县| 栾城县| 新邵县| 陈巴尔虎旗| 吉林市| 云阳县| 大洼县| 株洲市| 曲靖市| 万全县| 舒兰市| 昌邑市| 肇庆市| 镇平县| 博白县| 桐柏县| 青阳县| 宁安市|