インタプリタでコンポーネントに直接にアクセスするため、ネーム空間(org.zkoss.scripting.Namespace)のコンセプトを使用します。まず、どのIDスペースもネーム空間を持っています。さらに、ネーム空間の中で定義された値をネーム空間内のスクリプトコードとEL表記は参照できます。
<window border="normal"> <label id="l" value="hi"/> <zscript> l.value = "Hi, namespace"; </zscript> ${l.value} </window>
以下の例の中で二つのネーム空間があります。一つはウィンドウw1に属していて、もう一つはウィンドウw2 [24]に属している。このようにして、b1ボタンのonClickスクリプトはウィンドウw1で定義されたラベルを参照して、b2ボタンのonClickスクリプトはw2内で定義されたcheckboxを参照します。
<window id="w1"> <window id="w2"> <label id="c"/> <button id="b1" onClick="c.value = "OK""/> </window> <checkbox id="c"/> <button id="b2" onClick="c.label = "OK""/> </window>
ここで一つ注意するポイントがあります:ネーム空間は階層です。つまり、ウィンドウw2内のzscriptはw2の中に重複がない限り、ウィンドウw1のコンポーネントを見ることができます。このようにして、以下の例の中でボタンb1をクリックすることはラベルcを変えます。
<window id="w1"> <window id="w2"> <button id="b1" onClick="c.value = "OK""/> </window> <label id="c"/> </window>
ZKのコンポーネントはネーム空間にコンポーネントを指定する他に、setVariableメソッドによって変数をコンポーネントに指定することができます。そうしてzscriptはそれらを直接参照することができます。