WAP教程 W3Shcook系列教程

【WAP 简介】

WAP 协议被设计用来在无线客户端(比如移动电话)上展示因特网内容。
您应当具备的基础知识

在继续学习之前,您需要对下面的知识有基本的了解:
WWW, HTML 以及有关网页构建的基础知识
JavaScript
XML

如果您希望首先学习这些项目,请在我们的首页访问这些教程。
什么是 WAP?

无线产品提出了 WAP 的理念。此标准的要点是在无线设备上展示因特网内容。
WAP 指无线应用协议
WAP 是一种应用程序通信协议
WAP 被用来访问服务及信息
WAP 继承于因特网标准
WAP 针对诸如移动电话的手持设备
WAP 是一种为微浏览器设计的协议
WAP 使创建针对移动设备的 web 应用程序成为可能
WAP 使用标记语言 WML(不是 HTML)
WAP 作为 XML 1.0 的一种应用被定义
无线应用协议(Wireless Application Protocol)

WAP 是一种用于在无线终端(比如数字移动电话)进行信息服务的主要的标准。

WAP 标准基于因特网标准(HTML、XML 以及 TCP/IP)。它包括 WML 语言规范、WMLScript 规范以及无线电话应用接口规范(WTAI)。

WAP 由 WAP 论坛(WAP forum )发布,被爱立信、摩托罗拉、诺基亚以及 Unwired Planet 创建于 1997 年。论坛的成员目前占据着超过 90% 的全球手机市场,同时又是领先的基础设施提供商、软件提供商及其他机构。您可以在我们的 WAP 论坛页面找到有关 WAP 论坛的更多信息。
WAP 微浏览器

为了适合小型无线终端,WAP使用了一种微浏览器。

微浏览器是一种小型软件,可向硬件、内存和 CPU 发布基本的指令。它可以显示用一种由被称为 WML 的受限标记语言编写的信息。

微浏览器也可翻译一种被称为 WMLScript 的 JavaScript 简化版。
什么是 WML?

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

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

WML 使用 WMLScript 在客户端运行简单的代码。WMLScript 是一种轻量级的 JavaScript 语言。不过,WML 脚本并不嵌在 WML 页面中。WML页面仅仅含有对脚本 URL 的引用。WML 脚本在 WAP 浏览器运行之前,需要先在服务器上被编译为字节编码。

请访问我们的 WMLScript 教程,以学习更多有关 WML 文档中的脚本的知识。
WAP 应用举例
查看列车时刻表信息
票务交易
航班登记
查看交通信息
查寻股票价格
查寻电话号码
查寻地址
查寻体育竞赛结果

【WAP 基础】

WAP 主页

WAP 的主页与 HTML 的主页非常不同。用于 WAP 的标记语言是 WML (Wireless Markup Language)。WML 使用标签 - 类似 HTML - 但是语法更严格且

遵守 XML 1.0 标准。

WML 页面的扩展名是 *.WML,就像 HTML 页面的扩展名是 *.HTML 一样。
WML 标签

WML 几乎都是关于文本的。会拖慢手持设备之间通信的标签不会成为 WML 标志的组成部分。表格和图像的使用被严格限制。

由于 WML 是一种 XML 应用,因此其标签对大小写敏感( 不同),且标签必须正确关闭。
WML Deck 和 Card

WML 页面叫作 DECK(卡片组)。DECK 是由一系列 CARD (卡片)构造的,卡片之间通过链接彼此联系。当从移动电话访问一张 WML 页面时,页面中的所有卡片都会从 WAP 服务器下载下来。卡片之间的导航是通过电话的计算机完成的 - 在电话内部 - 不需要对服务器的额外访问。
WML 文档实例:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Our HTML Tutorial is an award winning
tutorial from W3School.






Our XML Tutorial is an award winning
tutorial from W3School.






正如您从例子中看到的,WML 文档是一种 XML 文档。DOCTYPE 定义为 wml,并在 https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml 访问 DTD。

文档内容位于 ... 标签内。文档中的每个 card 位于 ... 标签内,实际的段落在

...

标签中。每个 card 元素都有一个 id 以及一个 title。

Deck 和 Card

WML 页面通常称为 "deck"。每个 deck 含有一系列的 card。card 元素可包含文本、标记、链接、输入字段、task、图像等等。卡片之间通过链接彼此相互联系。

当从移动电话访问一张 WML 页面时,页面中的所有卡片都会从 WAP 服务器下载下来。卡片之间的导航是通过电话的计算机完成的 - 在电话内部 - 不需要对服务器的额外访问:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">




Hello World!





Welcome to our WAP Tutorial!






请注意每次只显示一个。

WML 段落和换行

可以编写显示段落和换行的 WML 卡片:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





This is a paragraph



This is another
with a line break







WML 文本格式化

可以编写显示格式化文本的 WML 卡片:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





normal

emphasized

strong

bold

italic

underline

big

small







WML 表格

可以编写显示表格的 WML 卡片:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">











Cell 1Cell 2Cell 3






WML 链接

可以制作 WML 卡片来显示 WML 的锚功能。


标签总是要规定一个任务 ("go", "prev", 或 "refresh")。任务定义了当用户选择此链接时要做的事情。在本例中,当用户选择 "Next page",其任务是 "前往 test.wml":

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Next page








标签永远执行 "go" 任务,不带参数。下面的例子与那个 标签的例子起得作用是相同的:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Next page






WML 图像

可以制作 WML 卡片来显示图像:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





This is an image
stickman
in a paragraph








请注意,.wbmp 是唯一可以显示在 WAP 浏览器中的图像类型。

WML 输入字段

可以制作让用户可输入信息的 WML 卡片,正如这个例子演示的:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Name:

Age:

Sex:








WML 选择和选项

可以制作 WML 卡片来显示 WML 的选择和选项功能:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">














在下面的例子中,结果是一个用户可在其中选择多个项目的可选列表:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">













Fieldset

可以制作 WML 卡片来显示 WML 的 fieldset 函数:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">






Title:

Prize:






WML 任务 (task) 定义了事件发生时所执行的动作,比如在输入一个卡片或选择一个链接之类的时间发生时。

Go 任务

任务表示切换到一个新卡片的动作。

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Go To Test






Prev 任务

任务表示后退到前面的卡片的动作。

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Previous Page






Refresh 任务

任务会刷新一些指定的卡片变量。如果变量显示在屏幕上,任务也会刷新屏幕。

下面的例子使用 标签向卡片添加了一个 "Refresh this page" 链接。当用户点击该链接时,他或她会刷新页面,同时变量 x 的值将被设置为 30:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Refresh this page









Noop 任务

任务规定不做任何事(noop 指的是 "no operation")。此标签用于覆盖卡片组级别的元素。

标签用于在用户点击屏幕上的某个单词或短语时启动一个任务。

下面的例子使用 标签向卡片添加一个 "Back" 链接。当用户点击这个 "Back" 链接时,他或他被被带回前面的卡片。但是 标签阻止了这个操作;当用户点击 "Back" 时,不会发生任何事情:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">










任务元素开始标签 作用 WML
表示切换到新卡片的动作。 1.1
规定不做任何事情。用于覆盖卡片组级别的元素。 1.1
表示后退到前面的卡片的动作。 1.1
刷新一些指定的卡片变量。如果有变量显示在屏幕上,此任务也刷新屏幕。 1

WML 计时器 (Timer)

可以制作 WML 卡片来使用 WML 的计时器功能。计时器的

时间单位是一秒的十分之一。

下面的例子将用 3 秒来显示一条消息,然后切换到文件 "test.wml":

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">





Some Message






WML 变量

当用户在卡片组的卡片之间切换时,我们需要在变量中存储数据。WML 变量对大小写敏感。
通过 Setvar 命令规定变量

当用户执行任务时(比如 go, prev 或 refresh),可使用 Setvar 元素设置带有指定值的变量。

下面的例子将创建一个名为 i 的变量,值是 500:


name 和 value 属性是必需的。
为输入元素规定变量

可以为输入元素(比如input, select, option 等等)设置变量:

下面的例子将创建名为 schoolname 的变量:




使用上例中创建的变量:

You selected: $(schoolname)




WML 实例

Previous Page
Next Page

带有两个卡片的一个卡片组 - 一个供用户输入,一个供显示结果 - 正如本例中展示的:

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">














You selected: $(name)







第二张卡片看上也许类似这样:

例子解释
Prolog

"https://www.360docs.net/doc/523995827.html,/DTD/wml_1.1.xml">

WML 文档中的第一行称为 prolog。prolog 定义了文档是 XML 文档,然后它定义了 XML 的版本,以及要引用的 DTD。
Deck
.....

deck 是 WML 文档本身。它被嵌套在 >wml> 标签中。
Cards
.....

一次只显示一个卡片。这个 WML 卡片组包含两个卡片 - 一个供用户输入,一个供结果显示。
元素
...

第一个卡片拥有 元素,该元素定义了被触发的事件。 元素的 type="accept" 属性使 label="Answer" 显示在屏幕的左下角。
Event

当用户点击 标记时会触发 元素。 元素的 href="#card2" 属性使卡片二显示在屏幕上。
Variable

卡片二显示来自卡片一的 $(name) 变量,因为变量在卡片之间是有效的。

WML 参考手册

WAP 协议用于在无线客户端(比如移动电话)上展示因特网内容。
Deck

/ Card 元素开始标签 作用 WML
定义关于 deck 的访问控件的信息。 1.1
定义 deck 中的一个 card。 1.1
包含关于文档的信息。 1.1
定义有关文档的元信息。 1.1