为了在同一个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)。
命名空间 |
---|
XUL组件集的命名空间。 |
XHTML组件集的命名空间。 |
ZK命名空间。指定ZK具体元素与属性的保留命名空间。 |
本地命名空间。这是为内联(inline) 元素的保留命名空间。 参考HTML相关组件(Work with HTML Tags)一节获取细节。 |
native:URI-of-another-namespace 指定本地命名空间的可选方式。除了指定一个标签属于本地命名空间,native:随后的命名空间会被生成至输出并发送至客户端。 参考HTML相关组件(Work with HTML Tags)一节获取细节。 |
注释(Annotation)的命名空间。这是为注释保留的命名空间。 参考注释( |
在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命名空间,因为其来自于一个不同的组件集。