ZUML是基于XML的。每一個XML元素描述了需要創(chuàng)建的組件。一個XML屬性描述了一個要被創(chuàng)建的組件的初始值。一個XML處理指示描述了如何處理整個頁面,如頁的標題。


不同的組件集合通過XML命名空間來區(qū)分。例如,XUL的是http://www.zkoss.org/2005/zul,而XHTML是http://www.w3.org/1999/xhtml.

XML
這一章節(jié)提供了和ZK一起工作的XML的最基本的原則。如果你熟悉XML,你可以跳過這個章節(jié)。如果你想學到更多的,網(wǎng)絡(luò)上有很多相關(guān)的資源,如http://www.w3schools.com/xml/xml_whatis.asp 和 http://www.xml.com/pub/a/98/10/guide0.html


XML是一種標記語言,很象HTML,但是有更加嚴格的語法。有幾點需要特別注意。

元素必須是結(jié)構(gòu)良好的
首先,每個元素必須關(guān)閉。有兩種方法來關(guān)閉一個元素。如下:

<window></window>

<window />

第二,元素要被正確的嵌套。

特殊的字符必須被替換
XML使用<element-name>來表示一個元素,所以你必須替換掉特殊的字符。例如,你必須使用&lt來替換<字符。

<     &lt

>     &gt

&    &amp

“      &quot

‘      &apos

你也可以使用CDATA讓XML解析器不要對字符串進行解析。

<zscript>

<![CDATA[

       Void myfunc(int a,int b)

       {

              If(a<0&&b>0)

{

       //do something

}

       }

]]>

</zscript>


有意思的是反斜杠(\)不是特殊字符,所以你不需要擔心。


屬性值必須被指定且用引號包圍
注釋<!—and-->
字符編碼
這雖然是可選的,但是在你的XML中指定編碼,讓XML解析器能正確解析是一個好的主意。注意:它必須在文件的第一行。

<?xml version=”1.0” encoding=”UTF-8”?>

同時你需要確認你的XML編輯器是否支持這種編碼。


命名空間
命名空間是區(qū)分在XML文檔中用到名字的簡單易懂的方法。ZK使用XML命名空間來區(qū)分組件的名字,這樣只要在不同的命名空間中,使用相同的名字是可以的。換句話說,ZK使用XML命名空間來表現(xiàn)一個組件集合,這樣開發(fā)者可以在一個頁面中混合兩個或多個組件,如下描述。

<html xmlns:="http://www.w3.org/1999/xhtml"

       xmlns:x="http://www.zkoss.org/2005/zul"

       xmlns:zk="http://www.zkoss.org/2005/zk">


<head>

<title>zhtml demo</title>

</head>

<body>

<h1>zhtml demo</h1>

<table>

<tr>

<td><x:textbox/></td>

<td><x:button label="now" zk:onclick="addItem()"/></td>

</tr>

</table>

<zk:zscript>

void addItem()

{

}

</zk:zscript>

</body>

</html>

用Schema自動完成
許多IDE,如Eclipse,支持自動完成,如果該xml schema被如下指定了的話。

<window xmlns="http://www.zkoss.org/2005/zul"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">