WAP初级教程(4)—WML基本结构
    上一节我们知道了wap的基本工作原理,也介绍了使用EasyPad软件可以快速简便的创建和编辑和调试WAP页面。今天我们就正式的认识一下WML文件的基本格式。
一、             WML的基本格式
WML的页面通常叫做桌面(DECK,由一组互相链接卡片(CARD组成。当移动电话访问一个WML页面的时候,页面的所有CARD都会从WAP服务器下载到设备里。CARD之间的切换由电话内置的计算机处理,不需要再到服务器上取信息了。CARD里可以包含文本、标记、链接、输入控制、任务(TASK)、图像等等。CARD之间可以互相链接
文档的实体包含在<wml>...</wml>标记中,文档里每个CARD又包含在<card>...</card>标记中,然后实际的文字段落则包含在<p>...</p>标记中。
 
简单例子:
 
<?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">
 <p>
 Hello world!
 </p>
</card>
</wml>

显示结果如下:
------ HELLO ------



Hello World!

DECK里面各个组成部分的具体解释在本教程的其他部分有说明。
 
二、             WML格式化:
WML字符集
WMLXML的子集,继承了XML的字符集设置。WML文档缺省的字符集是UTF-8
要显示中文,有两种办法。最简单的办法就是在文档头使用encoding,即把第一行改为:
<?xml version="1.0" encoding="gb2312"?>
然而令人丧气的是,这种方法有些手机和模拟器并不支持(将来会的),所以目前第2种方法更普遍:将编辑好的.wml文件用记事本打开然后:文件—另存为—文件编码方式选择unicode方式保存覆盖原来的文件,这样你的WAP页面就能够很好的显示中文了。
这里第一种方式更为简便,在手机支持的情况下推荐使用第一种方式。
 WML元素:标记(Tag)和属性

    WML的主要内容是文本,由于标记会降低与手持设备的通讯速度,所以WML标准里仅仅使用了很少一部分。用于表格和图像的的标记几乎都被排除了。
XML一样,在WML语言中,所有元素都放在符号"<" ">"中,并且包含一个开始标志、一个结束标志和一个内容标志,或者使用自身结束的控制标记。就象这样:
<tag>内容</tag>
例如:<p>Hello world!</p>


<tag/>
例如:<br/> <go href="#done"/>
WML同样支持在标志中标出属性。属性是标志的附加信息,与元素的内容不一样,它并不在屏幕上显示出来。属性通常在元素的开始标志后指定。如上面最后一个例子。
由于WMLXML的一种应用,因此所有的WML标记和属性都是大小写敏感的(<wml><WML>完全不同),而且所有的标记都必须正确地结束。WML要求属性的值必须放在双引号或单引号内。单引号可放在属性标志内或双引号内。字符亦可作为属性的值。


WML注释
XML
支持这样的注释格式:
<!这句话你在手机上看不到-->

这些注释在浏览器中并不显示出来。
WML
不支持嵌套元素注释。

链接(URL
WML
外部引用方式跟HTML相同
http://www.wap86.net/great.wml
http://www.wap86.net/great.wml#login

内部引用,如果next是当前DECK中的一个CARD时,可以用这种方式:
#next
提供链接功能的WML元素有2个:<go>(参见任务)和<anchor>(参见事件)。

Card
在手机上访问WML页面时,页面里所有的卡card都从WAP服务器上下载下了。Cardcard之间的转换是通过手机内置的手机计算机完成的,无须经过服务器。
<?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="no1" title="Card 1">
<p>Hello World!</p>
</card>
 
<card id="no2" title="Card 2">
<p>Welcome to our WAP Tutorial!</p>
</card>
</wml>
手机显示的结果也许会是这样(注意一次只显示一张card,默认显示第一个card的内容这里是no1):
 ------ Card 1 ------
 
 Hello World!
 
 
 

段落和行分隔符
WML
“card“可设置来显示WML的段落和行分隔符函数:
<?xml version="1.0"?>
 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
 
<wml>
<card title="Paragraphs">
<p>
This is a paragraph
</p>
 
<p>
This is another<br/>with a line break
</p>
</card>
</wml>
手机显示的结果也许会使这样:
 ------ Paragraphs ------
 
 This is a paragraph
 
 This is another
 with a line break
 
 
 
 
 

文本格式化
WML
card可通过设置显示WML的文本格式化函数
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
 
"http://www.wapforum.org/DTD/wml_1.1.xml">
 
<wml>
<card title="Formatting">
 
<p>
normal<br/>
<em>emphasized</em><br/>
 
<strong>strong</strong><br/>
<b>bold</b><br/>
<i>italic</i><br/>
<u>underline</u><br/>
 
<big>big</big><br/>
<small>small</small>
</p>
 
</card>
</wml>
 
WML提供了一系列文字样式的标记,如右表所示。不过WML鼓励大家尽量使用<strong><em>标记,因为某些WAP终端会忽略其他标记。
    手机显示的结果也许会是这样(不要认为所有的格式化标记会像预期的那样呈现出来)
标记
字体样式
<b>
粗体 
<big>
大字体
<em>
强调字体
<i>
斜体
<small>
小字体
<strong>
加重强调字体
<u>
下划线字体
  
----- Formatting -----

normal
emphasized
strong
bold
italic
underline
big
small