Home   Single Page

XHTML ネームスペースの代わりにネィティブネームスペースの使用

「ZUML と XUL コンポーネントセット」の章の「HTML タグで動作」のセクションで説明したように、 ZK は ZK コンポーネントを ZHTML ネームスペースで定義された XML 要素に対して作成します。言い換えれば、ZK はその状態をサーバー側で保持しなければなりません。HTML タグの数は通常、巨大なので、代わりにネィティブネームスペースを使用すると劇的にパフォーマンスが向上します。

例えば、次のコードスニペットは 5 個のコンポーネントを作成します。( 1 個の table, tr, textbox と 2 個の td)

<h:table xmlns:h="http://www.w3.org/1999/xhtml">
    <h:tr>    
        <h:td>Name</h:td>        
        <h:td>        
        <textbox/>        
        </h:td>        
    </h:tr>    
</h:table>

他方、次のコードスニペットは 2 個のコンポーネントを作成します。 (クライアントに table、tr と td を生成する特殊なコンポーネント と 1 個の textbox)

<n:table xmlns:n="http://www.zkoss.org/2005/zk/native">
    <n:tr>    
        <n:td>Name</n:td>        
        <n:td>        
        <textbox/>        
        </n:td>        
    </n:tr>    
</n:table>

table、 tr と td は直接クライアントで生成されますので、クライアントにはそれに相当するものがありません。それで、それを動的に変更することはできません。例えば、次のコードスニペットは正しくありません。

<n:ul id="x" xmlns:n="http://www.zkoss.org/2005/zk/native"/>
<button label="add" onClick="new Li().setParent(x)"/>

むしろ、動的に変更したいのであれば、 html コンポーネントか、 XHTML ネームスペースを使用すべきです。