WML 快速指南



WML - 概述

WAP(无线应用协议)架构的最顶层由WAE(无线应用环境)组成,WAE包含WML和WML脚本语言。

  • WML代表**W**ireless **M**arkup **L**anguage(无线标记语言)

  • WML是XML的一种应用,它在文档类型定义中定义。

  • WML基于HDML,并进行了修改,以便可以与HTML进行比较。

  • WML考虑了小屏幕和低带宽传输。

  • WML是WAP规范中定义的标记语言。

  • WAP网站是用WML编写的,而网站是用HTML编写的。

  • WML与HTML非常相似。它们都使用标签,并以纯文本格式编写。

  • WML文件扩展名为“.wml”。WML的MIME类型为“text/vnd.wap.wml”。

  • WML支持客户端脚本。支持的脚本语言称为WMLScript。

WML版本

WAP论坛发布了最新版本WAP 2.0。WAP 2.0中定义的标记语言是XHTML Mobile Profile (MP)。WML MP是XHTML的子集。还引入了一种名为WCSS(WAP CSS)的样式表。WCSS是CSS2的子集。

大多数发布的新款手机型号都支持WAP 2.0。因为WAP 2.0向后兼容WAP 1.x,所以支持WAP 2.0的移动设备可以显示XHTML MP和WML文档。

WML 1.x是较早的技术。但这并不意味着它没有用,因为许多仅支持WML 1.x的无线设备仍在使用。WML的最新版本是2.0,它是为了向后兼容性而创建的。因此,WAP网站开发人员无需担心WML 2.0。

WML 卡组和卡片

HTML和WML之间的一个主要区别在于,HTML的基本导航单元是页面,而WML的基本导航单元是卡片。一个WML文件可以包含多个卡片,它们构成一个卡组。

当从手机访问WML页面时,页面中的所有卡片都将从WAP服务器下载。因此,如果用户转到同一卡组的另一张卡片,移动浏览器无需向服务器发送任何请求,因为包含该卡组的文件已存储在无线设备中。

您可以将链接、文本、图像、输入字段、选项框和许多其他元素放在卡片中。

WML程序结构

以下是WML程序的基本结构

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card id="one" title="First Card">
<p>
This is the first card in the deck
</p>
</card>

<card id="two" title="Second Card">
<p>
Ths is the second card in the deck
</p>
</card>

</wml>

第一行文本说明这是一个XML文档,版本为1.0。第二行选择文档类型并给出文档类型定义(DTD)的URL。

一个WML卡组(即页面)可以包含一个或多个卡片,如上所示。我们将在后续章节中详细了解WML文档结构。

与HTML 4.01 Transitional不同,文本不能直接包含在<card>...</card>标签对中。因此,您需要像上面那样在<p>...</p>中放入内容。

WAP网站设计注意事项

无线设备的显示屏和键盘尺寸有限。因此,在设计WAP网站时务必考虑到这一点。

在设计WAP网站时,您必须确保保持简洁易用。您应该始终记住,没有标准的微型浏览器行为,并且数据链路可能相对较慢,约为10Kbps。但是,使用GPRS、EDGE和UMTS,根据您的位置,这种情况可能不会持续很久。

以下是设计服务时应牢记的一些一般设计技巧

  • 将WML卡组和图像大小保持在1.5KB以下。

  • 保持文本简短且有意义,并尽可能预先编码选项,以最大限度地减少用户数据输入的痛苦体验。

  • 保持URL简短且易于记忆。

  • 最大限度地减少菜单级别,以防止用户迷路并减慢系统速度。

  • 使用标准的布局标签,例如<big>和<b>,并以逻辑方式组织您的信息。

  • 不要过度使用图形,因为许多目标设备可能不支持它们。

WML - 环境

要开发WAP应用程序,您需要以下内容

  • **支持WAP的Web服务器:**您可以启用Apache或Microsoft IIS来处理所有WAP客户端请求。

  • **WAP网关模拟器:**这是与WAP服务器交互所必需的。

  • **WAP手机模拟器:**这是测试WAP页面和显示所有WAP页面所必需的。

您可以使用以下语言编写WAP页面

  • 无线标记语言 (WML) 用于开发WAP应用程序。
  • WML脚本用于增强WAP应用程序的功能。

配置Web服务器

在普通的Web应用程序中,MIME类型设置为text/html,表示普通的HTML代码。另一方面,图像可以指定为image/gif或image/jpeg等。通过此内容类型规范,Web浏览器知道Web服务器返回的数据类型。

要使您的Apache与WAP兼容,您无需做太多事情。您只需要添加对下面列出的MIME类型和扩展名的支持。

文件扩展名MIME类型
WML(.wml)text/vnd.wap.wml
WMLScript(.wmls)text/vmd.wap.wmlscript
WMLScriptc(.wmlsx)application/vnd.wap.wmlscriptc
WMLC(.wmlc)application/vnd.wap.wmlc
WBMP(.wbmp)image/vnd.wap.wbmp

配置Apache Web服务器以支持WAP

假设您已经在计算机上安装了Apache Web服务器。现在,我们将告诉您如何在Apache Web服务器中启用WAP功能。

因此,找到Apache的httpd.conf文件(通常位于/etc/httpd/conf中),并将以下几行添加到该文件中,然后重新启动服务器。

AddType text/vnd.wap.wml .wml
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlc .wmlc
AddType application/vnd.wap.wmlscriptc .wmlsc
AddType image/vnd.wap.wbmp .wbmp

在动态应用程序中,必须动态设置MIME类型,而在静态WAP应用程序中,必须适当地配置Web服务器。

配置Microsoft IIS以支持WAP

要配置Microsoft IIS服务器以提供WAP内容,您需要执行以下操作

  1. 打开Internet服务管理器控制台,并展开树以查看您的网站条目。您可以将WAP MIME类型添加到整个服务器或各个目录。
  2. 通过右键单击相应的服务器或目录,然后从菜单中选择“属性”,打开“属性”对话框。
  3. 在“属性”对话框中,选择“HTTP标头”选项卡,然后选择右下角的“文件类型”按钮。
  4. 对于前面表格中列出的每个MIME类型,提供带点或不带点的扩展名(它将自动为您添加),然后单击“属性”对话框中的“确定”以接受您的更改。

安装WAP网关模拟器

互联网上有许多WAP网关模拟器可用,因此下载其中任何一个并安装到您的PC上。您需要在启动WAP手机模拟器之前运行此网关。

WAP网关将接收您的请求,并将其传递给Web服务器,从Web服务器接收到的任何响应都将传递给手机模拟器。

您可以从诺基亚网站下载它

安装WAP手机模拟器

互联网上有许多WAP模拟器可用,因此下载其中任何一个并安装到您的PC上,您将将其用作WAP客户端。以下是下载模拟器的常用链接

**注意:**如果您有支持WAP的手机,则无需安装此模拟器。但在开发过程中,使用模拟器更方便经济。

WAP模型

我只是为了您的参考提供本节内容,如果您不感兴趣,可以跳过本节。

下图显示了WAP编程模型。请注意它与Internet模型的相似之处。如果没有WAP网关/代理,这两个模型实际上将是相同的。

The WAP Model

WAP网关/代理是连接无线域和Internet的实体。您应该注意,从无线客户端发送到WAP网关/代理的请求使用无线会话协议(WSP)。本质上,WSP是HTTP的二进制版本。

无线标记语言(WML)已被采用以开发优化的WAP应用程序。为了节省无线网络中的宝贵带宽,WML可以编码为紧凑的二进制格式。编码WML是WAP网关/代理执行的任务之一。

WAP模型的工作原理?

在实际使用中,WAP的工作方式如下

  1. 用户选择其移动设备上的一个选项,该选项分配有包含无线标记语言 (WML) 内容的URL。

  2. 手机通过电话网络使用二进制编码的WAP协议将URL请求发送到WAP网关。

  3. 网关将此WAP请求转换为指定的URL的常规HTTP请求,并将其发送到Internet。

  4. 相应的Web服务器接收HTTP请求。

  5. 服务器处理请求,就像处理任何其他请求一样。如果URL引用静态WML文件,则服务器将交付该文件。如果请求CGI脚本,则会对其进行处理,并照常返回内容。

  6. Web服务器将HTTP标头添加到WML内容并将其返回给网关。

  7. WAP网关将WML编译成二进制形式。

  8. 然后,网关将WML响应发送回手机。

  9. 手机通过WAP协议接收WML。

  10. 微型浏览器处理WML并在屏幕上显示内容。

WML - 语法

WML程序通常分为两部分:文档序言和正文。请考虑以下代码

以下是WML程序的基本结构

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card id="one" title="First Card">
<p>
This is the first card in the deck

</p>
</card>

<card id="two" title="Second Card">
<p>
Ths is the second card in the deck
</p>
</card>

</wml>

WML文档序言

第一行文本说明这是一个XML文档,版本为1.0。第二行选择文档类型并给出文档类型定义(DTD)的URL。引用的DTD在WAP 1.2中定义,但此标题会随WML的版本而更改。必须精确复制标题,以便工具包自动生成此序言。

序言组件不是WML元素,不应关闭,即不应为它们提供结束标签或以/>结束它们。

WML文档正文

主体内容包含在`` 和``标签对中。WML文档的主体可以包含以下一项或多项:

  • Deck(牌组)

  • Card(卡片)

  • 要显示的内容

  • 导航指令

与HTML 4.01 Transitional不同,文本不能直接包含在<card>...</card>标签对中。因此,您需要像上面那样在<p>...</p>中放入内容。

测试您的程序

将以上代码放入名为test.wml的文件中,并将此WML文件保存在本地硬盘上,然后使用模拟器查看。

这是开发和测试WML文件的最高效方式。但是,由于您的目标是开发一项将提供给WAP手机用户的服务,因此您应该在本地开发完WML文件后将其上传到服务器,并通过真实的互联网连接进行测试。当您开始开发更复杂的WAP服务时,这就是您识别和纠正性能问题的方法,否则这些问题可能会导致您失去网站访问者。

将test.wml文件上传到服务器时,您将测试WML模拟器的外观和行为,并检查Web服务器是否已正确设置。现在启动您的模拟器并使用它访问test.wml的URL。例如,URL可能如下所示:

http://websitename.com/wapstuff/test.wml

注意:访问任何URL之前,请确保WAP网关模拟器正在您的PC上运行。

下载WAP程序后,您将在手机上只看到第一张卡片。以下是诺基亚手机浏览器4.0上上述示例的输出。这款手机支持水平滚动。您可以通过按下“左”或“右”按钮查看屏幕外的文本。

WAP Example 1

按下右按钮后,第二张卡片将可见,如下所示:

WAP Example 2

WML - 元素

WML由一组元素定义,这些元素指定WML牌组的所有标记和结构信息。元素由标签标识,每个标签都包含在一对尖括号中。

与HTML不同,WML严格遵守XML层次结构,因此,元素必须包含起始标签;任何内容,例如文本和/或其他元素;以及结束标签。元素具有以下两种结构之一:

  • `` 内容 ``:此形式与HTML相同。

  • ``:当元素不能包含可见内容或为空时使用,例如换行符。WML文档的序言部分没有任何具有结束元素的元素。

下表列出了大部分有效的元素。所有这些元素的完整详细信息在WML标签参考中给出。

Deck & Card 元素

WML 元素 用途
` 定义WML注释
` 定义WML牌组(WML根)
`` 定义头部信息
`` 定义元信息
`` 定义牌组中的一张卡片
`` 定义关于牌组访问控制的信息
`