WML(无线标记语言,Wireless Markup Language)是一种脚本语言, 它比HTML 编写的内容要消耗网络浏览器更少的内存和CPU时间, 使得WML对广域网和移动设备来说更加友好。整合的移动设备(灵通电话, smartphone), 如 Handspring Treo 600, Palm Tungsten W 或者象 Motorola MPX 200 这样的基于灵通电话的设备, 它们相对于传统PDA的好处常常来自于用户的偏好。
一.简介
WML(Wireless Markup Language - 无线标记语言)。它是一种从 HTML 继承而来的标记语言,但是 WML 基于 XML,因此它较 HTML 更严格。 WML 被用来创建可显示在 WAP 浏览器中的页面。用WML编写的页面被称为 DECKS。DECKS 是作为一套 CARDS 被构造的。 这种描述语言同我们常听说的HTML语言同出一家,都属于XML语言这一大家族。WML的语法跟XML一样,WML是XML的子集。 HTML语言写出的内容,我们可以在我们的PC机上用IE或是Netscape等浏览器进行阅读,而WML语言写出的文件则是专门用来在手机等的一些无线终端显示屏上显示,供人们阅读的,并且同样也可以向使用者提供人机交互界面,接受使用者输入的查询等信息,然后向使用者返回他所想要获得的最终信息。
二.详细说明
WML(无线标记语言,Wireless Markup Language)是一种脚本语言, 它比HTML 编写的内容要消耗网络浏览器更少的内存和CPU时间, 使得WML对广域网和移动设备来说更加友好。整合的移动设备(灵通电话, smartphone), 如 Handspring Treo 600, Palm Tungsten W 或者象 Motorola MPX 200 这样的基于灵通电话的设备, 它们相对于传统PDA的好处常常来自于用户的偏好。 用户是更喜欢携带一件整合了移动电话和PDA功能的多功能设备, 还是一个移动电话和一个PDA? 将声音和数据功能整合进一件设备里有一些吸引人的好处, 例如可以从地址簿上给一个号码打电话, 那上面有你全部联系人的电话号码而不仅仅是你用键盘敲入的, 因为灵通电话可以和你的电脑同步。 另外, 灵通电话将成熟的操作系统, 如Palm OS, Symbian, Linux 或者 Windows, 和可上网的移动设备联系在一起, 这就提供了一种平台使得公司可以移动化企业应用, 允许区域内的用户访问最新的数据。 传统的基于专有操作系统的移动电话的屏幕常常太小而不能显示有意义的数据,同时没有无线上网功能的PDA又经常不能完全符合技术规范, 使得它们无法有效地处理移动数据。
三.WMLScript
WML 使用 WMLScript 在客户端运行简单的代码。WMLScript 是一种轻量级的 JavaScript 语言。不过,WML脚本并不嵌在 WML 页面中。WML页面仅仅含有对脚本 URL 的引用。WML 脚本在 WAP 浏览器运行之前,需要先在服务器上被编译为字节编码。 建立网页制作环境 WML文件本身就是文本文件,所以编辑不成问题,顺手的编辑器都可以用。 当然,由于目前的浏览器(opera浏览器可以)还都不能显示 WML页面,而我们又不能总在手机上进行测试(速度太慢),所以需要模拟器。现在象NOKIA、ERICSSON、MOTOROLA等手机制造商都生产了相应的产品,你只要下载就行了。当然除了模拟器以外,还需要图形制作转换器(用来制作WAP格式的图形文件)、字符转码器(汉字<=> UNICODE)等等,本站工具及论坛页面均有说明。
四.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代表中文字符。
例子代码如下:
<?
header("Content-type: text/vnd.wap.wml; charset=UTF-8");
echo "<?xml version=\"1.0\"?>";
?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="cache-control" content="no-cache"/>
</head>
<?
include("./include/convert_iconv.inc.php");
$convert = new convert();
$lanmu1="佳节传情";
$lanmu1url="show.php?type=1";
$lanmu2="生日祝福";
$lanmu2url="show.php?type=2";
$lanmu3="我猜我猜猜猜";
$lanmu3url="show.php?type=3";
$lanmu4="哈哈笑话";
?>
<card title="<?echo $convert->toUTF8("网络短信")?>">
<p>
<br/>
<a href ="<? echo urldecode($convert->toUTF8($lanmu1url)) ?>"><? echo $convert->toUTF8($lanmu1) ?></a>
<br/>
<a href ="<? echo urldecode($convert->toUTF8($lanmu2url)) ?>"><? echo $convert->toUTF8($lanmu2) ?></a>
<br/>
<a href ="<? echo urldecode($convert->toUTF8($lanmu3url)) ?>"><? echo $convert->toUTF8($lanmu3) ?></a>
<br/>
<? echo $convert->toUTF8("温馨提示:浏览时记下您需要下载的短信内容编号,退出WAP浏览器,选择“下载”菜单并输入编号后即可下载完整内容!每条收费2元") ?>
<br/>
</p>
</card>
</wml>