Chapter 2 编写你的第一个 WML 页面
在上一章中,我们配置好了支持 wml 的服务器,现在,我们新建一个虚拟目录(例如 http://127.0.0.1/wml ),把我们编写的 wml 页面放在这个目录中发布。这样我们安装好 WAP 模拟器后,就可以输入 http://127.0.0.1/wap浏览自己做的 WAP 页面了。在这里我推荐大家使用 Nokia 的 WAP Toolkit 模拟器,这个比较真实。大家可以到 Nokia 的站点上去下载。
WML 其实是 XML 的一种特殊应用,让我们来看一个最简单的 WML 页面:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<template>
<do type="options" label="back">
<prev/>
</do>
</template>
<card id="card1">
<p>Hello World !
</p>
<do type="accept" label="Start">
<go href="#Welcome"/>
</do>
</card>
<card id="Welcome">
<p>You are welcome!
</p>
<do type="accept" label="Back">
<go href="#card1"/>
</do>
</card>
</wml>
第一行是说明这个文件是 xml1.0 标准的。我们可以看到,<wml> 和 </wml> 括起了整个 WML 页面的内容,我们成为一个 DECK ,在这个 DECK 中,又可以分成几个 <CARD> 和 </CARD> 括起的内容。记住,一个WML页面只能有一个 DECK ,一个 DECK 中可以由一个或多个 CARD ,而手机的一次就只显示一个 CARD 中的内容。
以上面的这个页面为例,打开这个页面时,只显示 Hello World ! 和一个 Start 的超连接,选择 Start 这个超连接后,就跳转到 id 为 Welcome 的那个 CARD ,屏幕上显示 You are welcome! 和一个 Back 连接,选择 Back 连接,则又跳回一开始显示的 id 为 card1 的那个 CARD 。
在这里,起连接作用的是这段代码:
<do type="accept" label="Back">
<go href="#card1"/>
</do>
<do> 中的 label 项,则是连接显示的内容,而连接指向则由 <go href=> 来指定。href 的值以 # 开头的话,则是页面中的 CARD 名(类似于 HTML 中的锚的概念);如果 href 的只是一个页面的地址,例如 <go href="a.wml"/> 则这个连接将指向另一个 WML 页面。
WML 的语法是遵循 XML 的,可以说 WML 是 XML 的一个子集,XML 是 WML 的超集。
在 WML 中其他常用的元素有:
<img src="1.wbmp" alt="1"/> 插入图像1.wbmp(在 WAP 中,只能使用 wbmp 格式的图像)
<option value="up" onpick="a.wml"> 选择,选中这一项后跳转到a.wml
<input type="text" name="id" format="*N"/>
<do type="accept" label="Check">
<go href="fivedays.asp">
<postfield name="id" value="$id"/>
</go>
</do>
上面的这一整段代码是一个表单,先由 <input> 标签负责将拥护输入的数字( format="*N" 只允许输入数字) ,放到变量 id 中,再当用户按下 Check 连接时,<postfield name="id" value="$id"/> 发生作用,把变量 id 中的值以 POST 方式传送给 fivedays.asp。$id 即代表变量 id 的值。这个连接相当于:fivedays.asp?id=$id 。
其他的一些常用的 WML 元素用户可以自行参考一下 WML 语法手册,在这里我就不多说了。
在上一章中,我们配置好了支持 wml 的服务器,现在,我们新建一个虚拟目录(例如 http://127.0.0.1/wml ),把我们编写的 wml 页面放在这个目录中发布。这样我们安装好 WAP 模拟器后,就可以输入 http://127.0.0.1/wap浏览自己做的 WAP 页面了。在这里我推荐大家使用 Nokia 的 WAP Toolkit 模拟器,这个比较真实。大家可以到 Nokia 的站点上去下载。
WML 其实是 XML 的一种特殊应用,让我们来看一个最简单的 WML 页面:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<template>
<do type="options" label="back">
<prev/>
</do>
</template>
<card id="card1">
<p>Hello World !
</p>
<do type="accept" label="Start">
<go href="#Welcome"/>
</do>
</card>
<card id="Welcome">
<p>You are welcome!
</p>
<do type="accept" label="Back">
<go href="#card1"/>
</do>
</card>
</wml>
第一行是说明这个文件是 xml1.0 标准的。我们可以看到,<wml> 和 </wml> 括起了整个 WML 页面的内容,我们成为一个 DECK ,在这个 DECK 中,又可以分成几个 <CARD> 和 </CARD> 括起的内容。记住,一个WML页面只能有一个 DECK ,一个 DECK 中可以由一个或多个 CARD ,而手机的一次就只显示一个 CARD 中的内容。
以上面的这个页面为例,打开这个页面时,只显示 Hello World ! 和一个 Start 的超连接,选择 Start 这个超连接后,就跳转到 id 为 Welcome 的那个 CARD ,屏幕上显示 You are welcome! 和一个 Back 连接,选择 Back 连接,则又跳回一开始显示的 id 为 card1 的那个 CARD 。
在这里,起连接作用的是这段代码:
<do type="accept" label="Back">
<go href="#card1"/>
</do>
<do> 中的 label 项,则是连接显示的内容,而连接指向则由 <go href=> 来指定。href 的值以 # 开头的话,则是页面中的 CARD 名(类似于 HTML 中的锚的概念);如果 href 的只是一个页面的地址,例如 <go href="a.wml"/> 则这个连接将指向另一个 WML 页面。
WML 的语法是遵循 XML 的,可以说 WML 是 XML 的一个子集,XML 是 WML 的超集。
在 WML 中其他常用的元素有:
<img src="1.wbmp" alt="1"/> 插入图像1.wbmp(在 WAP 中,只能使用 wbmp 格式的图像)
<option value="up" onpick="a.wml"> 选择,选中这一项后跳转到a.wml
<input type="text" name="id" format="*N"/>
<do type="accept" label="Check">
<go href="fivedays.asp">
<postfield name="id" value="$id"/>
</go>
</do>
上面的这一整段代码是一个表单,先由 <input> 标签负责将拥护输入的数字( format="*N" 只允许输入数字) ,放到变量 id 中,再当用户按下 Check 连接时,<postfield name="id" value="$id"/> 发生作用,把变量 id 中的值以 POST 方式传送给 fivedays.asp。$id 即代表变量 id 的值。这个连接相当于:fivedays.asp?id=$id 。
其他的一些常用的 WML 元素用户可以自行参考一下 WML 语法手册,在这里我就不多说了。