组件集及XML命名空间

为了在同一个ZUML页面内使用两套或更多套组件,XML使用命名空间来区分不同的组件集。例如,

XUL为http://www.zkoss.org/2005/zul,而XHTML为http://www.w3.org/1999/xhtml

另一方面,多个页面仅使用一套组件。为了使这样的页面更容易编写,ZK以扩展名为基础决定了默认的命名空间。例如,XUL和ZUL扩展名意味着使用XUL命名空间。因此,开发人员只需将ZUML页面与合适的扩展名相关联,那么再也不用担心XML命名空间。

标准的命名空间

如前所述,每套组件都会和一个特定的命名空间相关联。然而,开发人员可以开发或使用第三方的组件,所以我们在这里只列出ZK发布的命名空间(so here we list only the namespaces that are shipped with the ZK distribution)。

命名空间

http://www.zkoss.org/2005/zul

XUL组件集的命名空间。

http://www.w3.org/1999/xhtml

XHTML组件集的命名空间。

http://www.zkoss.org/2005/zk

ZK命名空间。指定ZK具体元素与属性的保留命名空间。

http://www.zkoss.org/2005/zk/native

本地命名空间。这是为内联(inline) 元素的保留命名空间。

参考HTML相关组件(Work with HTML Tags)一节获取细节。

native:URI-of-another-namespace

指定本地命名空间的可选方式。除了指定一个标签属于本地命名空间,native:随后的命名空间会被生成至输出并发送至客户端。

参考HTML相关组件(Work with HTML Tags)一节获取细节。

http://www.zkoss.org/2005/zk/annotation

注释(Annotation)的命名空间。这是为注释保留的命名空间。

参考注释(Annotations)一节获取细节。

在ZUML页面中指定命名空间是可选的,直到有冲突为止。ZK通过检测ZUML页面的扩展名来决定使用哪个命名空间。对于.zul和.xul,使用XUL命名空间。对于html,xhtml和zhtml,使用XHTML命名空间。

为了混合使用另一种标记语言,你可以使用xmlns来指定合适的命名空间。

<window xmlns:h="http://www.w3.org/1999/xhtml">
   <h:div>
      <button/>
   </h:div>
</window>

对于XHTML组件,onClick和onChange属性和ZK的属性冲突。你可以使用保留的 http://www.zkoss.org/2005/zk 命名空间来解决这个问题,如下:

<html xmlns:x="http://www.zkoss.org/2005/zul" xmlns:zk="http://www.zkoss.org/2005/zk">
<head>
<title>ZHTML Demo</title>
</head>
<body>
   <script type="text/javascript">
   function woo() { //running at the browser
   }
   </script>
   <zk:zscript>
   void addItem() { //running at the server
   }
   </zk:zscript>
   <x:window title="HTML App">
     <input type="button" value="Add Item"
      onClick="woo()" zk:onClick="addItem()"/>
   </x:window>
</body>

在这个例子中,ZHTML的onClick属性用来指定在浏览器端运行的JavaScript 代码。另一方面,zk:onClick 作为保留属性来指定一个ZK事件处理器。

注意,命名空间的前缀,zk,对于zscript元素是可选的,因为ZHTML元素没有这个元素,而ZK有足够的信息来确定它。

同样也要注意你必须为window组件指定XML命名空间,因为其来自于一个不同的组件集。