6. ZKユーザーマークアップ言語

目次

XML
要素の良形式化
特別な記号は取り替えなければなりません
属性値は指定し引用しなければなりません
コメント
文字のエンコード
ネーム空間
スキーマで自動補完
条件付き処理
繰り返し
each 変数
forEachStatus 変数
イベントリスナ中のeachforEachStatus変数の使用方法
解決策: custom-attributes
ロードオンデマンド
fulfill属性によるロードオンデマンド
イベントリスナを使用したロードオンデマンド
暗黙オブジェクト
暗黙オブジェクト一覧
リクエストと実行についての情報
プロセス命令
page コマンド
component コマンド
マクロフォーマット
クラスフォーマット
init コマンド
variable-resolver コマンド
import コマンド
linkmeta コマンド
ZK 属性
use 属性
if 属性
unless 属性
forEach 属性
for EachBegin 属性
for EachEnd 属性
fulfill 属性
ZK 要素
zk 要素
一ページ内に多数のルート要素が存在したら
多種類のコンポーネントの繰り返し処理
zscript 要素
処理を遅らせる方法
異なったスクリプト言語を選択する方法
他のスクリプト言語を使用
attribute 要素
variables 要素
null
custom-attributes 要素
コンポーネントセットとXMLネーム空間
標準的なネーム空間

ZKユーザーインターフェースマークアップ言語(ZUML)はXMLを基にして作られています。XML要素ではどのコンポーネントが生成されるのかが書かれています。XML属性には作成されたコンポーネントに指定された初期値が書かれてあります。XMLプロセスコマンドはページ全体がどういうふうに処理されるのかを説明します。例えば、ページタイトルについてなど。

異なったコンポーネントセットはXMLネーム空間によって区別されています。例えば、XULのネーム空間は http://www.zkoss.org/2005/zul [31] です。また、XHTMLのネーム空間は http://www.w3.org/1999/xhtmlです。

XML

この章ではZKとともにXMLの基本的なコンセプトを紹介します。XMLをよくご存知の場合、この章を飛ばしてください。また、インターネットに関連するリソースがたくさんあります。たとえば、 http://www.xml.com/pub/a/98/10/guide0.htmlhttp://www.w3schools.com/xml/xml_whatis.aspです。

XMLはHTMLのようなマークアップ言語ですが、より厳密でより簡潔な言語です。そこにはいくつかの注目すべき特徴があります。

要素の良形式化

はじめに、どの要素も括弧でくくられていなければなりません。以下に示したように、要素を括弧でくくる方法は二つありますが、どちらを使っても結果は同じです。

タグを使用して閉じる:

<window><window/>

終端タグなしで閉じる:

<window/>

二つ目に、要素は順序を適切にかかなければなりません。

正しい:

<window> <groupbox> Hello World! </groupbox></window>

間違い:

<window> <groupbox> Hello World! </window></groupbox>

特別な記号は取り替えなければなりません

XMLは < element-name > を使って要素を示すので、特別な記号は別表記します。例えば、&lt;を使って < の記号を表します。

Special Character

Replaced With

<

&lt;

>

&gt;

&

&amp;

"

&quot;

'

&apos;

代わりに、以下のようにCDATAを使用してXMLパーサ(構文解析プログラム)にプログラムを変換させないようにできます。

<zscript>
<![CDATA[
void myfunc(int a, int b) {
          if (a < 0 && b > 0) {    
                    //do something        
          }    
]]>
</zscript>

バックスラッシュ(\)は特別な記号ではありません。特に避ける必要はありません。

属性値は指定し引用しなければなりません

正しい:

width="100%"

checked="true"

間違い:

width=100%

checked

コメント

コメントは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 の特徴もたくさん追加されているので、独立したネーム空間を使いましょう。