完成wap服务器的建立和wap浏览器的安装之后,我们接下来就可以使用wml语言来编写wap网页或应用,并通过wap服务器及浏览器进行调试。从本章开始我们将系统地学习wml语言,本章主要讲解wml语言的基础知识,下一章全面讲解wml的语法、标签和规则。
2.1 wml的简单例子及编辑、测试方法
无限标记语言wml(wireless markup language)是一种基于扩展标记语言xml(extension markup language)的语言,是xml的子集。它可以显示各种文字、图像等数据,是由wap论坛(http://www.wapforum.org)提出并专为无线设备用户提供交互界面而设计的,目前版本为1.1版。这些无线设备包括移动电话,呼机和个人数字助理pda(personal digital assistants)等。
2.1.1 wml与wap设备
为了更好的了解和使用wml语言,开发人员应对wml使用的设备和支持wml的设备的特点、特征有个大概的了解。
一般而言,wml使用的无线设备通常具有以下特点:
与普通的个人计算机相比,体积较小;
设备的内存有限,且其cpu性能也有限;
通讯带宽较窄、时延较长。
以移动电话、pda为例来讲,支持wml的设备主要具有以下特征:
有一个显示屏幕,可显示2.凶址啃?2各字符;2.凶址型ǔ0ūa舾δ馨磁サ囊恍校?br>支持数字和字符的输入;
支持操作者使用箭头或数字按钮进行选择;
支持ascii的可打印码;
通常都有两个可编程功能键,即accpet键和options键,一般安排在接近键盘的屏幕下方;
通常有一个prev导航键。
我们介绍wml所使用wap设备的目的,是希望读者通过wap设备的特点、特征来了解wml语言的特点,进而对wml编程所要解决的问题有个大概的认识。
2.1.2 使用文本编辑器面写wml程序
使用wml语言编写wap网页或应用时,需要使用一个编辑器进行编辑。与html编程一样,wml编写的程序也是纯文件文本,可以使用任意文本编辑器进行编写,比如windows系统中的“记事本(notepad)”等。也可以使用比如nokia wap toolkie等软件(有关此具体的用法会在以后的学习过程中提起)。我们先介绍第一种方法,随后介绍第二种。
如果要使用"记事本(notepad)"来编写wml程序,则可以在windows系统中,单击“开始”按钮,然后从出现的菜单中,依次将光标指向“程序”、“附件”、“记事本”,启动“记事本”程序。屏幕上随后就会出现它的编辑窗口,从中就可以输入并编写wml程序了。
作为举例,我们可以输入如下简单的程序。
<?xml version="1.0"?>
<!doctype wml public "-//wapforun//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
<xml>
<card id="card1" title="title">
<p>
<!--write your card implementation here.-->
hello world!!
</p>
</card>
</xml>
输完后将它保存为hello.xml文件。保存时注意文件的扩展名应为xml而不是txt。
2.2 wml程序结构
上一节我们降解了一个简单的wml程序,具有html编程的读者可以看出,wml程序在结构上形式上与html程序有很多相似之处。下面我们就根据一个实例来分析一下wml程序的结构及组成。
2.2.1 wml的元素和标签
分析实例之前,我们有必要对wml的元素和标签予以简单说明。与html类似,wml的主要语法也是元素和标签。元素是符合dtd(文档类似定义)的文档组成部分,如title(文档标题)、img(图像)、table(表格)等等,元素名不区分大小写。wml使用标签来规定元素的属性和它在文档中的位置。标签使用小于号(<)和大于号(>)括起来,即采用“<标签名>”的形式。标签分单独出现的标签和成对出现的标签两种。大多数标签是成对出现的,由首标签和尾标签组成。首标签和尾标签又分别称为起始标签和终止标签。首标签的格式为“<元素名>”,尾标签的格式为“</元素名>”。成对标签用于规定元素所含的范围,比?lt;b>和</b>标签用于界定黑体字的范围,也就是说<b>和</b>之间包住的部分采用黑体字显示。单独标签的格式为“<元素名/>”,他的作用是在相应的位置插入元素。如〈br/〉标签表示在该标签所在位置插入一个换行符。
2.2.2 wml程序结构形式及组成的实例分析
了解了上述知识后,下面我们在分析一个实例程序。程序如下:
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapfourm.org/dtd/wml_1.1.xml">
<wml>
<card id="card1" ontimer="#card2" title="tookit demo">
<timer value="50"/>
<p aligh="center">
</br></br></br>
<big>
<!--write your card implementation here.-->
welcome to....
</big>
</p>
</card>
<card id-"card2" ontimer="#card 3"title="toolkit demo">
<timer value="50"/>
<p align="center">
<br/><br/>
<b>
the nokia<br/>
</b>
wireless application protocol
</u>
...
</p>
</card>
<card id="card3"title="toolkit demo">
<p align="center">
<br/><br/><br/>
<big>
<i>
toolkit
</i>
</big>
</p>
</card>
</xml>
该程序运行后将在wap手机屏幕依次显示3屏信息。先显示"welcome to ...",然后显示"the nokia wireless application protocol...",最后显示"tookit!"。显示时每屏都有标题"tookit demo",相邻两屏之间延时为50,其单位大小为1/10秒,延时50即5秒。
通过以上实例我们可以了解到wml程序的结构形式及组成:
1)语法。wml与html极为相似。仍然是一种标记语言,并且延续了xml的语法规则,具体的语法我们会以后的学习过程中遇到。
2)文件声明。所有的wml程序必须在文件的开头处声明xml文件类型,包括xml的版本,wml的文档类型、所用规范等。声明形式如下:
<?xml version="1.0">
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
3)标签。在wml语言中需要使用标签(tag),其使用形式与html和xml等标记语言中的形式是完全一致的。
4)元素。wml的元素(element)用于描述卡片组(deck)的标记信息即结构信息。一个元素通常有一个首标签、内容、其它元素及一个尾标签组成,具有下述两种结构之一:
<首标签>内容</尾标签>
或
<标签/>
元素包含的内容中还可以有元素,这些元素也是有首标签、相应内容、其它元素及尾标签组成。不包含内容的元素成为空元素。它为一个单独的标签。或者说,单独的标签也是一种元素。
5)属性。wml与xml一样,其标签可以包含很多属性。属性用于给标签提供必要的附加信息,且属性内容通常在起始标签内使用。不过,属性内容不会被浏览器显示,它至作为参数为标签提供必要的信息。
指明属性值的时候,需要把该值用引号扩起来,可以是单引号或者双引号,引号通常成对嵌套使用。属性名称必须小写。例如:<card id="card 1" ontimer="#card2" title="toolkit demo">
而且,单引号的属性中还可以包含双引号的属性。实体字符也可以作为属性值。实体字符是指诸如&、<、>、'、"的特殊字符,在wml程序中显示着类字符需要特殊处理,后面我们介绍具体方法。
6)注释。wml程序中也可以加入注释。注释内容用于给开发人员顺利阅读源代码提供方便,它不会被浏览器显示出来。注释内容在标签中用感叹号(!)引出,并用于<!--注释内容-->的形式。例如:<!-- write your card implementation here.-->。需要说明的是,xml程序中不支持注释的嵌套。
7)文档结构。wml文档是由“卡片(card)”和“卡片组(deck)”构成的,一个deck是一个或多个card的集合。当客户端发出请求之后,wml即从网络上把deck发送到客户浏览器,这是用户就可以浏览deck内包含的所有card,而不必从网上单独下载每一个card,程序中的第一个card是缺省得可见的card。
注意:deck是一副纸牌的意思,这里是指一叠卡片,所以我们在这里称之为它为“卡片组”。另外,card指的是wap手机屏幕大小的网页,尽管有时一个card可能需要多屏才能显示完,但我们也可以把它翻译成“页面”,不过这样与html中的页面容易混合。因此我们在这里称之为卡片。
2.2.3 wml程序的基本结构
以上我们简单分析了wml的程序结构及组成,由此大家可以对wml程序有个整体上的初步认识。下面我们给出wml程序的基本结构。
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1xml">
<wml>
<head>
<access/>
<meta..../>
</head>
<card>
some contents...
</card>
<wml>
该基本结构可以分为以下几个关键部分:
1)声明。wml程序有许多deck组成,对于每一个deck,在其文档开头必须进行xml的声明和文档类型doctype的声明。
xml声明总是在文件的第一行,注意前面最好不要有空格或者还行:
<?xml version="1.0"?>
2)紧跟着是doctype声明,注意声明是字母的大小写不要搞错:
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1xml">
3)<xml>标签。该标签用于包含和定义wml的一个deck。它有一个可选的xml:lang属性来制定文档的语言,比如<wml xml:lang="zh">表示文档语言为中文。
4)<head>标签。该标签用于包含和定义deck的相关信息。<head>标签之间可以包含一个<access>标签和多个<meta>标签。
5)<access/>标签。它的一般形式是<access domain="域" path="/路径"/>,主要用于制定当前deck的访问控制信息,有两个可选的属性。其中,domain用来制定域,默认值为当前域,path用来制定路径,默认值为“/”,即跟目录。由于<access>单独使用,所以要用“/”结尾,后面我们还会系统的讲解wml的各种标签,这里即使看不懂也没关系,主要有些感性的认识就可以了。
6)<meta...>标签。它的一般形式是<meta 属性 content="值" scheme"格式" forua="truefalse"/>,用于提供当前deck的meta信息,包括内存数据处理方式,以及数据传输方式和处理方式等。有关该标签的详细内容我们后面会专门给出。
7)<card>标签。一个deck可以包含多个card,每个card的内容可能不止一屏显示。对于每一个card,wml均使用<card>和</card>进行包含和定义。 <card>同时可以包含多个可选的属性,如<card id="name" title="label" newcontext="false" ordered="true" onenterforwand="url" pmemterbackward="url" ontimer="url">。至于这些属性的具体含义及功能,我们将在后面介绍。
2.3 wml语言的基本知识
上一节我们介绍了wml程序的基本结构,接下来我们介绍wml语言的基本知识,主要包括wml的字符集、变量、数据类型及wml程序的基本组成部分等。
[1] [2] 下一页
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器