「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 ネームスペースを使用すべきです。