发新话题
打印

WML无线标记语言简介

WML无线标记语言简介

WML(无线标记语言,Wireless Markup Language)是一种脚本语言, 它比HTML 编写的内容要消耗网络浏览器更少的内存和CPU时间, 使得WML对广域网和移动设备来说更加友好。整合的移动设备(灵通电话, smartphone), 如 Handspring Treo 600, Palm Tungsten W 或者象 Motorola MPX 200 这样的基于灵通电话的设备, 它们相对于传统PDA的好处常常来自于用户的偏好。

它是一种从 HTML 继承而来的标记语言,但是 WML 基于 XML,因此它较 HTML 更严格。

WML 被用来创建可显示在 WAP 浏览器中的页面。用WML编写的页面被称为 DECKS。DECKS 是作为一套 CARDS 被构造的。

这种描述语言同我们常听说的HTML语言同出一家,都属于XML语言这一大家族。WML的语法跟XML一样,WML是XML的子集。

HTML语言写出的内容,我们可以在我们的PC机上用IE或是Netscape等浏览器进行阅读,而WML语言写出的文件则是专门用来在手机等的一些无线终端显示屏上显示,供人们阅读的,并且同样也可以向使用者提供人机交互界面,接受使用者输入的查询等信息,然后向使用者返回他所想要获得的最终信息。

WML文件结构  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 。wapforum 。org/DTD/wml_1.1.xml">

  <wml>

  <card id="HELLO" title="HELLO">

  Hello world!

  </card>

  </wml>

  显示结果如下:

  ------ HELLO ------

  Hello World!

  DECK里面各个组成部分的具体解释在本教程的其他部分有说明。
WML字符集  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要求属性的值必须放在双引号或单引号内。单引号可放在属性标志内或双引号内。字符亦可作为属性的值。
WML注释  XML支持这样的注释格式:

  <!--这句话你在手机上看不到-->

  这些注释在浏览器中并不显示出来。

  WML不支持嵌套元素注释。

  链接(URL)

  WML外部引用方式跟HTML相同

  http://www。itsalon。net/index.wml 或

  http://www。itsalon。net/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>

TOP

发新话题