Apache Cocoon

Apache Cocoon，通常簡稱為 Cocoon，是一個基於 管線、關注點分離 和組件化網頁開發概念的 Web應用框架。該框架專注於 XML 和 XSLT 發佈，並使用 Java 程式語言 構建。Cocoon 的 XML 使用旨在提高發佈格式的兼容性，例如 HTML 和 PDF。內容管理系統 Apache Lenya 和 Daisy 是基於此框架構建的。Cocoon 也常用作 資料倉儲 的 ETL 工具或作為系統間數據傳輸的 中介軟體。

網站地圖
Apache Cocoon 使用網站地圖（sitemaps）允許使用者控制 Cocoon 軟體中的各種組件，並定義 Cocoon 所稱的「管線」中的 用戶端-伺服器架構 交互。

組件
Cocoon 中的組件按照功能分類。

匹配器
匹配器用於將使用者的請求（如 URL 或 Cookie）與 萬用字元 或 正規表示式 模式進行匹配。每個使用者請求會在網站地圖中依次測試匹配器，直到找到匹配項。在匹配器中可以指定對某一請求的響應。

生成器
生成器會創建供進一步處理的 數據流。該數據流可以從現有的 XML 文件生成，或由一些生成器直接從頭創建，表示伺服器上的某些數據，如目錄結構或圖像數據。

XSP
其中一種生成器是 XML 伺服器頁（XSP），它是一個包含基於標籤的指令的 XML 文件，這些指令指定了如何在請求時生成動態內容。在 Cocoon 處理期間，這些指令會被生成的內容所取代，以便結果 XML 文件可以進行進一步處理（通常是 XSLT 轉換）。XSP 會被轉換成 Cocoon 的生產者，通常以 Java 類的形式呈現，不過任何擁有 Java 進程器的腳本語言也可以使用。

指令可以是內建的（"XSP"）或用戶定義的處理標籤，這些指令都定義在「邏輯表」中。標籤通過 XSLT 模板來定義，該模板描述了如何將這些標籤（表示為 XML 節點）轉換成其他 XML 節點或如 Java 的程序代碼。標籤用於嵌入過程邏輯、替代表達式、從網頁伺服器環境檢索信息等操作。

請注意，XSP 在 Cocoon 的近期版本中已被棄用。

轉換器
轉換器接收數據流並進行某些更改。最常見的轉換是使用 XSLT 將一種 XML 格式轉換為另一種，但也有轉換器用於處理其他形式的數據（如 SQL 指令）。

序列器
序列器將 XML 事件流轉換為字節序列（如 HTML）以返回給客戶端。一些序列器允許將數據以多種不同格式發送，包括 HTML、XHTML、PDF、RTF、SVG、WML 和 純文本等。

選擇器
選擇器的功能類似於 switch 語句。它們可以選擇請求中的特定元素，並選擇正確的管道部分來使用。

視圖
視圖主要用於測試。視圖是管道中的一個出口點。可以輸出在這一點產生的 XML 流，以便查看應用是否正常運行。

讀取器
直接發布內容而不進行解析（無 XML 處理）。用於圖像等內容。

動作
動作是執行某些業務邏輯或管理新內容生成的 Java 類。

管道
「管線」用於指定不同的 Cocoon 組件如何與給定請求進行交互以產生 響應。 一個典型的管道包括一個生成器，後接零個或多個轉換器，最後是序列器。

另見
 反應器模式 - Cocoon 基於的設計模式。
 XProc - 一種用於建模 XML 管道的 W3C 標準。

參考資料

外部連結
 Apache Cocoon 項目


Cocoon
Category:Web应用框架
Category:Java平台軟體