无线置标语言(WML),又称无线标记语言,是一种标记语言, 与HTML类似。它基于可扩展标记语言(标准通用标记语言下的一个子集)。WML是专门为手持式移动通信终端(手机)设计的,HTML 是为个人计算机(电脑)设计的。
无线置标语言(Wireless Markup Language,简称:WML),又称无线标记语言,是一种标记语言, 与 HTML(标准通用标记语言下的一个应用)类似。它基于可扩展标记语言(标准通用标记语言下的一个子集)。WML 是专门为手持式移动通信终端(手机)设计的,HTML 是为个人计算机(电脑)设计的。
1996 年~1998 年的那个时间点,手机的内存、计算能力、屏幕的分辨率都不足以支持 HTML,因此产生了 WML,目的是减少浏览器占用的内存和计算时间。由于 WML 编写的内容面向的是手机,在电脑上浏览时需要安装专用的浏览器。
1990 年代后期,互联网在个人电脑上成功的普及,带来了信息革命。受其鼓舞,移动通信产业界推动着一场新的变革,将互联网的内容搬到手持设备上。当时,移动电话的计算能力、内存以及显示屏的分辨率还非常有限,业界认同有必要制定一套技术,将互联网各个层面的通信协议简化,万维网的网页标记语言也需要简化。
在这个背景下,1997 年 6 月,由诺基亚、爱立信、摩托罗拉和无线星球(Unwired Planet)共同组建了 WAP 论坛,制定整套的无线应用通讯协议。
1998 年发布 WML 1.0 版,1999 年发布 WML1.1 版,2000 年发布 WML1.2 版。WML1.1 得到了广泛的支持。WAP 论坛在 2002 年与其他标准化组织合并为 OMA(OPEN MOBILE ALLIANCE 开放移动联盟),WML 向 XHTML 以及 XHTML MP 演进。2007 年,Android 发布以后,出现了明显的区分:即智能手机支持 XHTML,而功能手机支持 WML。
与 HTML 编写的内容相比,WML 消耗的内存和 CPU 时间更少,因此,WML 更适合移动电话等手持移动设备。HTML 语言写出的内容,在电脑上用浏览器进行阅读,而 WML 语言写出的文件则是专门用在手机上的、需要使用手机中的 WAP 浏览器来阅读。WML 也向使用者提供人机交互界面,接受使用者输入的查询等信息,然后向使用者返回他所想要获得的最终信息。在电脑上能够显示 WML 网页的浏览器不多,欧朋浏览器是一个例子。
WML 从 HTML 继承而来,但在语法上它较 HTML 更严格。
用 WML 编写的页面称为 DECK。DECK 是由一套 CARD 构造的。WML 的语法跟 XML 一样,WML 是 XML 的子集。WML 支持的元素有:Deck / Card 元素;文本元素;文本格式化标签;锚元素;图像元素;事件元素;任务元素;输入元素;变量元素等元素。
WML 的页面通常叫做桌面(DECK),由一组互相链接的卡片(CARD)组成。当移动电话访问一个 WML 页面的时候,页面的所有 CARD 都会从 WAP 服务器下载到设备里。CARD 之间的切换由电话内置的计算机处理,不需要再到服务器上取信息了。CARD 里可以包含文本、标记、链接、输入控制、任务(TASK)、图像等等。CARD 之间可以互相链接。
文档的实体包含在<wml>…</wml>标记中,文档里每个 CARD 又包含在<card>…</card>标记中,然后实际的文字段落则包含…
标记中。
简单例子:
<?xml version=”1.0″?>
<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN” “http://www. wappu .cn/DTD/wml_1.1.xml”>
<wml>
<card id=”HELLO” title=”HELLO”>
Hello world!
</card>
</wml>
显示结果如下:
—— HELLO ——
Hello World!
WML 是 XML 的子集,继承了 XML 的字符集设置。WML 文档缺省的字符集是 UTF-8。
要显示中文,有两种办法。最简单的办法就是在文档头使用 encoding,即把第一行改为:
<?xml version=”1.0″ encoding=”gb2312″?>
然而令人丧气的是,这种方法有些手机和模拟器并不支持(将来会的),所以第 2 种方法更普遍:不改变字符集设置,但是在写中文的时候采用 UNICODE 代表中文字符,如:
<b>通讯录</b>
代表:
通讯录
WML 元素:标记(Tag)和属性
WML 的主要内容是文本,由于标记会降低与手持设备的通讯速度,所以 WML 标准里仅仅使用了很少一部分。用于表格和图像的的标记几乎都被排除了。
与 XML 一样,在 WML 语言中,所有元素都放在符号”<” 和 “>”中,并且包含一个开始标志、一个结束标志和一个内容标志,或者使用自身结束的控制标记。就象这样:
<tag>内容</tag> 例如:Hello World!
或
<tag/> 例如:
和 <go href=”#done”/>
WML 同样支持在标志中标出属性。属性是标志的附加信息,与元素的内容不一样,它并不在屏幕上显示出来。属性通常在元素的开始标志后指定。如上面最后一个例子。
由于 WML 是 XML 的一种应用,因此所有的 WML 标记和属性都是大小写敏感的(<wml>跟<WML>完全不同),而且所有的标记都必须正确地结束。WML 要求属性的值必须放在双引号或单引号内。单引号可放在属性标志内或双引号内。字符亦可作为属性的值。
XML 支持这样的注释格式:
<!–这句话你在手机上看不到–>
这些注释在浏览器中并不显示出来。
WML 不支持嵌套元素注释。
链接(URL)
WML 外部引用方式跟 HTML 相同
http://www. wappu. cn/index.wml 或
http://www. wappu. cn/index.wml#login
内部引用,如果 next 是当前 DECK 中的一个 CARD 时,可以用这种方式:
#next
提供链接功能的 WML 元素有 2 个:<go>(参见任务)和<anchor>(参见事件)。
CDATA
XML 支持 CDATA 的概念,以显示不需要解释的文本。下面的例子使用 CDATA 元素在 WML 页面中显示 WML 命令文本。
<! [CDATA [ <card name=”bogus”>this is data
</card> ] ]>
浏览器窗口将显示如下内容:
<card name=”bogus”>this is data
</card>