ZKユーザーインターフェースマークアップ言語(ZUML)はXMLを基にして作られています。XML要素ではどのコンポーネントが生成されるのかが書かれています。XML属性には作成されたコンポーネントに指定された初期値が書かれてあります。XMLプロセスコマンドはページ全体がどういうふうに処理されるのかを説明します。例えば、ページタイトルについてなど。
異なったコンポーネントセットはXMLネーム空間によって区別されています。例えば、XULのネーム空間は http://www.zkoss.org/2005/zul
[31] です。また、XHTMLのネーム空間は
http://www.w3.org/1999/xhtmlです。
この章ではZKとともにXMLの基本的なコンセプトを紹介します。XMLをよくご存知の場合、この章を飛ばしてください。また、インターネットに関連するリソースがたくさんあります。たとえば、 http://www.xml.com/pub/a/98/10/guide0.html
とhttp://www.w3schools.com/xml/xml_whatis.aspです。
XMLはHTMLのようなマークアップ言語ですが、より厳密でより簡潔な言語です。そこにはいくつかの注目すべき特徴があります。
はじめに、どの要素も括弧でくくられていなければなりません。以下に示したように、要素を括弧でくくる方法は二つありますが、どちらを使っても結果は同じです。
二つ目に、要素は順序を適切にかかなければなりません。
XMLは <
element-name
> を使って要素を示すので、特別な記号は別表記します。例えば、<を使って < の記号を表します。
代わりに、以下のようにCDATAを使用してXMLパーサ(構文解析プログラム)にプログラムを変換させないようにできます。
<zscript>
<![CDATA[
void myfunc(int a, int b) {
if (a < 0 && b > 0) {
//do something
}
]]>
</zscript>
バックスラッシュ(\)は特別な記号ではありません。特に避ける必要はありません。
コメントはXMLコード部分を一時的に機能しないようにするか、またはノート注解をそのまま残すために使います。XMLにコメントを付加するのに<!--と-->を使します。くくられた部分はインタープリットされません。
<window> <!-- this is a comment and ignored by ZK --> </window>
オプションですが、XMLの中でエンコードを指定したら、XMLパーサ(構造解析プログラム)は正確に翻訳してくれます。メモ:ファイルの初めの行で指定しなければなりません。
<?xml version="1.0" encoding="UTF-8"?>
正しいエンコーディングを指定する他、必ずXMLエディタがサポートしていることも確認してください。
ネーム空間はXMLのプログラム中で使われた名前を区別する簡単な方法です。ZKはXMLネーム空間を使用してコンポーネント名を区別し、違うネーム空間である限り、二つのコンポーネントに同じ名前を使うことは可能です。要するに、ZKはXMLネーム空間を使いコンポーネントセットを表します。そうして、以下に示すように、ディベロッパーは同ページ内で二つ以上のコンポーネントセットを使用することができます。
<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>
定義
xmlns:x=
http://"www.zkoss.org/2005/zul
"
はhttp://www.zkoss.org/2005/zulと呼ばれるネーム空間を指定し、xを使ってこのネーム空間を表しています。
xmlns:="http://www.w3.org/1999/xhtml" はhttp://www.w3.org/1999/xhtml
と呼ばれるネーム空間を表し、それをデフォルトとして使用します。
<html> はネーム空間のhtmlと呼ばれる要素を表します。この例では、 http://www.w3.org/1999/xhtml
<x:textbox/>はtextboxと呼ばれる要素をhttp://www.zkoss.org/2005/zulと呼ばれるネーム空間から引用して指定しています。
EclipseなどのIDEにてXML スキーマを以下のように指定すれば、自動補完ができます。
<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">
zul.xsd
は
http://www.zkoss.org/2005/zul/zul.xsdからダウンロードするか、ZKパッケージのdist/xsd ディレクトリーからコピーできます。
[31]
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul.
という名前になっていますが、non-XUL の特徴もたくさん追加されているので、独立したネーム空間を使いましょう。