使用本地命名空间代替XHTML命名空间

就像在ZUML及XUL组件集(ZUML with the XUL Component Set)一章中与HTML标签一起工作(Work with HTML Tags) 一节描述的那样,ZK使用XHTML命名空间为每个指定的XML元素创建一个ZK组件。换言之,ZK 必须维护它们在服务器端的状态。由于HTML标签的数量通常很大,所以若你使用本地命名空间代替可以显著提高性能。

例如,下面的代码片断会创建五个组件(一个tabletrtextbox和两个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>

另外,下面的代码片断会创建两个组件(一个特殊的组件,为客户端产生tabletrtd,和一个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>

注意,tabletrtd会直接为客户端产生,所以它们在客户端没有副本(counterpart)。因此,你不能够动态改变它。例如,下面的代码片断是错误的。

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

而是,你若想动态改变它们,你必须使用html组件或XHTML命名空间。