http://hedong.3322.org/
cocoon讀[ke'ku:n],繭的意思。
接連看到幾篇文章談cocoon,因其中牽扯術語太多,看后一頭霧水,遂起學習之心。
網上找到很多談cocoon的,IBM : developerWorks 中國網站 的在線教程寫得最棒。下面就是學習筆記,覺得有意思就順手記下來了。
以下三行是取源碼的命令。
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic -z3 checkout -r cocoon_20_branch xml-cocoon2
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic logout
管道由一些輸入數據以及隨后對它進行的一些處理步驟構成。每個處理步驟接受前一步的輸出作為輸入,一直到達管道的末端并產生最終輸出。
Cocoon 包含許多常規管道組件,根據在管道中扮演的角色,它們分組成幾種完全不同的類型。
管道輸入 — 生成器(如FileGenerator,HtmlGenerator,DirectoryGenerator)和閱讀器(常用來讀靜態文件)
處理步驟 — 轉換器(如XSLT 轉換器)和操作
管道輸出 — 序列化器(如XML,HTML,SVG,PDF序列化器 )
條件的處理 — 匹配器和選擇器
Cocoon 管道通常至少由生成器和序列化器組成,但可能含有任意數量的處理步驟。將數據作為 SAX 事件通過 Cocoon 管道傳遞。
對接收請求和為響應提供服務的邏輯周期如下:
1、從用戶接受請求。
2、確定用來解釋該請求并生成響應的適當管道(使用匹配器)。
3、從可用的預配置的組件構造管道。
4、指示管道為請求服務。
5、將由管道生成的響應返回用戶,可能對結果進行高速緩存以便以后使用。
網站地圖(sitemap)兩個功能:
1、聲明組件;
2、定義管道。
XML Server Pages(XSP)編譯過程如下圖:
XSP語法:
1、xsp:page 元素是每個 XSP 文檔的根元素。它必須有一個標識該頁面包含的編程語言 — 具體說就是“java”— 的語言屬性。
該頁面元素可能包含:
任意數目的 xsp:strUCture 元素
任意數目的 xsp:logic 元素
單個用戶元素
這最后一個限制非常重要。“用戶元素”表示不在 XSP 名稱空間中的任何元素,包括無名稱空間的元素。之所以有這個限制是因為用戶元素成為由 XSP 頁面創建的 XML 文檔的根元素,而 XML 文檔只能有單個根元素。
2、xsp:structure 和 xsp:include 元素用于向代碼生成過程提供這些附加提示。這兩個元素是一前一后使用的,xsp:structure 元素將許多 xsp:include 元素組合在一起。每個 xsp:include 定義一個要導入的附加 Java 包或類。
3、xsp:logic 元素用于將 Java 代碼塊添加到 XSP。
在這些元素作為 xsp:page 元素的直接子元素出現的任何地方(也就是,單個用戶元素以外),這個代碼塊都應包含方法定義和/或成員變量。之所以存在這一點是因為出現在用戶元素以外的代碼不包含在生成器的 generate() 方法內。常規的 Java 語法規則意味著這個代碼必須是成員或類(也就是,靜態)變量或方法。
xsp:logic 元素也可以使用在 XSP 頁面的其它地方。在這種情況下,它們應該包含將被添加到已編譯的生成器中的 generate() 方法的 Java 語句。這使 xsp:logic 元素類似于 jsp 頁面中使用的 <% ... %>scriptlet 語法。
4、CDATA 節,它向 XML 解析器發出信號以對于那節內容不采用良好格式規則
<![CDATA[...]]>
5、xsp:eXPR 元素用于封裝一個表達式,該表達式的值將直接添加到輸出文檔。與此相反,xsp:logic 元素包含生成器的代碼。因此,xsp:expr 元素等價于在 JSP 中實現類似角色的 <%= ... %> 表達式語法。例如:
<elements>
<xsp:logic>
for (int i=1; i<11; i++)
{
<element><xsp:expr>i</xsp:expr></element>
}
</xsp:logic>
</elements>
6、通過使用 xsp:element 生成動態元素。如:
<xsp:element prefix="my" uri="http://www.examples.org">
<xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
Element content
</xsp:element>
這個示例生成了以下 XML 輸出:
<my:myElementName xmlns:my="http://www.examples.org">Element content</my:myElementName>
新聞熱點
疑難解答