ZK 用户界面标记语言(ZUML)是基于XML的,每一个XML元素描述了要创建的组件.一个XML属性描述了被创建组件的初始值,一个XML处理指令(processing instruction),如页面的标题.
不同的组件集通过XML命令空间来区分. 例如,XML的命名空间为
xmlns:z="http://www.zkoss.org/2005/zul"
而XHTML的命名空间为
<html xmlns="http://www.w3.org/1999/xhtml">
那 XML和HTML的有什么区别?
(一)、语法要求不同:
1. 在html中不区分大小写,在xml中严格区分。
2. 在HTML中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束标记。在XML中,是严格的树状结构,绝对不能省略掉结束标记。
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/ 字符作为结尾。这样分析器就知道不用查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
6. 在XML文档中,空白部分不会被解析器自动删除;但是html是过滤掉空格的。
(二)、标记不同:
1、html使用固有的标记;而xml没有固有的标记。
2、Html标签是预定义的;XML标签是免费的、自定义的、可扩展的。
(三)、作用不同:
1. html是用来显示数据的;xml是用来描述数据、存放数据的,所以可以作为持久化的介质!Html将数据和显示结合在一起,在页面中把这数据显示出来;xml
则将数据和显示分开。 XML被设计用来描述数据,其焦点是数据的内容。HTML被设计用来显示数据,其焦点是数据的外观。
2. xml不是HTML的替代品,xml和html是两种不同用途的语言。 XML 不是要替换 HTML;实际上XML 可以视作对 HTML 的补充。XML 和HTML 的目标不同HTML 的设计目标是显示数据并集中于数据外观,而XML的设计目标是描述数据并集中于数据的内容。
3. 没有任何行为的XML。与HTML 相似,XML 不进行任何操作。(共同点)
4. 对于XML最好的形容可能是: XML是一种跨平台的,与软、硬件无关的,处理与传输信息的工具。
5. XML未来将会无所不在。XML将成为最普遍的数据处理和数据传输的工具。
我们在使用ZK的过程中需要注意一下几点
① 元素必须格式良好
首先,每个元素必须关闭.有俩种元素来关闭一元素,像下面描述一样,他们是等价的
<window></window> | 通过一个结束标签来关闭元素 |
<window /> | 不通过关闭元素来关闭元素 |
然后就是要注意,元素要被正确的嵌套(nested).
<z:listitem> <z:listcell> </z:listcell> </z:listitem> |
正确 |
<z:listitem> </z:listcell> |
错误 |
②特殊字符必须被替换掉
XML使用<element - name>来表示一个元素,所以你必须替换特殊字符.
特殊字符 | 替换字符 |
< | < |
> | > |
& | & |
" | " |
'' | ' |
③属性值必须被引号("")包括
代码 | 结果 |
<z:intbox id="num" style="display:none"/> |
正确的 |
<z:intbox id=num style=display:none /> | 错误的 |
④字符编码
尽管是可选的,但在你的XML中指定编码是个好主意,这样XML解析器可以正确的解析文本.(注意:他必须放置在文件的第一行)
<?xml version="1.0" encoding="UTF-8"?>
⑤命名空间
命名空间是区分XML文档中用到名字的一个简单易懂的方法,ZK使用XML命名空间来区分组件名称,这样,只要不在同一个命名空间,俩个组件有相同的名字是可以的.ZK使用XML命名空间来表示一个组件集.这样,开发人员可以在同一页面内混合使用俩个或者多个组件集,如下
<html xmlns:="http://www.w3.org/1999/xhtml"
xmlns:x="http://www.zkoss.org/2005/zul"
xmlns:zk="http://www.zkoss.org/2005/zk">
<head>
<title>ZHTMLDemo</title>
</head>
<body>
<h1>ZHTML Demo</h1>
<table>
<tr>
<td><x:textbox/></td>
<td>
<x:button label="Now" zk:onClick="addItem()"/>
</td>
</tr>
</table>
<zk:zscript>
void addItem() { }
</zk:zscript>
</body>
</html>
⑥使用Schema 自动完成
许多IDE, 如Eclipse 支持自动完成,如果XML schema 被按如下方式指定.
<window xmlns="http://www.zkoss.org/2005/zul"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.zkoss.org/2005/zul
http://www.zkoss.org/2005/zul/zul.xsd">
⑦ZK页面的注释