WML(Wireless Markup Language)是指无线标记语言,是一种标记语言,与HTML(标准通用标记语言下的一个应用)类似。它基于可扩展标记语言(标准通用标记语言下的一个子集)。WML也向使用者提供人机交互界面,接受使用者输入的查询等信息,然后向使用者返回他所想要获得的最终信息。
wml_WML -简史
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。
wml_WML -详细说明
与HTML 编写的内容相比,WML消耗的内存和CPU时间更少,因此,WML更适合移动电话等手持移动设备。HTML语言写出的内容,在电脑上用浏览器进行阅读,而WML语言写出的文件则是专门用在手机上的、需要使用手机中的WAP浏览器来阅读。WML也向使用者提供人机交互界面,接受使用者输入的查询等信息,然后向使用者返回他所想要获得的最终信息。在电脑上能够显示WML网页的浏览器不多,欧朋浏览器是一个例子。
WML从 HTML 继承而来,但在语法上它较 HTML 更严格。
用WML编写的页面称为 DECK。DECK 是由一套 CARD 构造的。WML的语法跟XML一样,WML是XML的子集。WML支持的元素有:Deck / Card 元素;文本元素;文本格式化标签;锚元素;图像元素;事件元素;任务元素;输入元素;变量元素等元素。
Deck/Card元素
开始标签作用<access>定义关于 deck 的访问控件的信息。<card>定义 deck 中的一个 card。<head>包含关于文档的信息。<meta>定义有关文档的元信息。<template>为 deck 中的所有 card 定义代码模板。<wml>定义 WML deck (WML 根)<!-->定义注释。文本元素
开始标签作用<br>定义一个换行。<p>定义一个段落。<table>定义表格。<td>定义一个表格单元(表格数据)。<tr>定义一个表格行。文本格式化标签
开始标签作用<b>定义粗体的文本。<big>定义大号的文本。<em>定义着重文本。<i>定义斜体的文本。<small>定义小号的文本。<strong>定义强调文本。<u>定义下划线文本。锚元素
开始标签作用<a>定义一个锚(链接)。<anchor>定义一个锚(链接)。图像元素
开始标签作用<img>定义图像。
事件元素
开始标签作用<do>在用户点击屏幕上的一个单词或短语时激活一个任务。<onevent>包含了当某些事件发生时所执行的代码。<postfield>包含了连同 <go> 标签被送往服务器的信息。任务元素
开始标签作用<go>表示跳转到新卡片的动作。<noop>表示不进行任何动作(noop 指的是 "no operation")。<prev>表示返回前一个访问过的卡片。<refresh>刷新指定的卡片变量。如果有变量显示在屏幕上,此任务也会刷新屏幕。输入元素
开始标签作用<fieldset>用于对卡片中的相关元素进行分组。<input>定义输入字段(用户可在其中输入文本的文本域)。<optgroup>定义可选列表中的一组选项。<option>定义可选列表中的选项。<select>定义可选列表。变量元素
开始标签作用<setvar>在 <go>、<prev> 或 <refresh> 任务中把变量设置为指定的值。<timer>定义卡片计时器。wml_WML -文件结构
WML的页面通常叫做桌面(DECK),由一组互相链接的卡片(CARD)组成。当移动电话访问一个WML页面的时候,页面的所有CARD都会从WAP服务器下载到设备里。CARD之间的切换由电话内置的计算机处理,不需要再到服务器上取信息了。CARD里可以包含文本、标记、链接、输入控制、任务(TASK)、图像等等。CARD之间可以互相链接。
文档的实体包含在...标记中,文档里每个CARD又包含在...标记中,然后实际的文字段落则包含在...
标记中。
简单例子:
Hello world!
显示结果如下:
------ HELLO ------
Hello World!
WML字符集
WML是XML的子集,继承了XML的字符集设置。WML文档缺省的字符集是UTF-8。
要显示中文,有两种办法。最简单的办法就是在文档头使用encoding,即把第一行改为:
然而令人丧气的是,这种方法有些手机和模拟器并不支持(将来会的),所以第2种方法更普遍:不改变字符集设置,但是在写中文的时候采用UNICODE代表中文字符,如:
通讯录
代表:
通讯录
WML元素:标记(Tag)和属性
WML的主要内容是文本,由于标记会降低与手持设备的通讯速度,所以WML标准里仅仅使用了很少一部分。用于表格和图像的的标记几乎都被排除了。
与XML一样,在WML语言中,所有元素都放在符号""中,并且包含一个开始标志、一个结束标志和一个内容标志,或者使用自身结束的控制标记。就象这样:
内容 例如:Hello World!
或
例如:
和 done"/>
WML同样支持在标志中标出属性。属性是标志的附加信息,与元素的内容不一样,它并不在屏幕上显示出来。属性通常在元素的开始标志后指定。如上面最后一个例子。
由于WML是XML的一种应用,因此所有的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个:(参见任务)和(参见事件)。
CDATA
XML支持CDATA的概念,以显示不需要解释的文本。下面的例子使用CDATA元素在WML页面中显示WML命令文本。
[CDATA [this is data
] ]>
浏览器窗口将显示如下内容:
this is data
wml_WML -网页制作环境
WML文件本身就是文本文件,所以编辑不成问题,顺手的编辑器都可以用。
WML编写的页面,最终需要在手机上测试,而我们又不能总在手机上进行测试,因为速度太慢,所以需要模拟器。欧朋浏览器支持WML页面的显示,可以当模拟器使用。另外,W3C官网网为开发人员提供免费语法检测服务
。除了此以外,开发过程中还需要图形制作转换器(用来制作WAP格式的图形文件)、字符转码器(汉字UNICODE)等等。