WML语法大全.docx
《WML语法大全.docx》由会员分享,可在线阅读,更多相关《WML语法大全.docx(18页珍藏版)》请在冰点文库上搜索。
WML语法大全
WML语法大全
WML是一种基于XML(扩展标记语言)的一种标记语言。
这种语言是为无线设备用户提供交互界面而设计的。
这些无线设备包括电话、呼机和个人数字助理(PersonalDigitalAssistants)等等。
WML是为具有以下特点的设备而设计的:
体积小(相对于个人计算机)。
有限的内存和CPU大小。
通讯带宽窄和时延长。
现在支持WML的设备大致分为两大类:
电话其特点就是只有4~10行的文本屏幕。
用户通过电话的按钮进行输入。
个人数字助理(PDA)其特点就是能支持100×100分辨率(或者更好)。
用户能够通过键盘、鼠标或者手写输入。
现在正期待着其他的手持设备同样能支持WML。
因为WML支持许多功能不同的设备,因此文档中列出了这些设备至少应有的功能或者是参考设备。
参考设备有以下的特点:
有一个显示屏幕,能显示4行字符,每行12个字符。
包括保留给功能按钮的那一行。
支持ASCII的可打印码。
支持数字和字符的输入。
支持使用箭头或者数字按钮进行选择。
两个可编程功能键,ACCEPT和OPTIONS,并且显示在接近键盘的屏幕下。
一个PREV导航键。
支持垂直滚动的箭头按键。
支持水平滚动(不是使用自动换行)。
--------------------------------------------------------------------------------
字符集 WML使用XML的字符集?
也就是当前使用的通用的字符集ISO/IEC-10646(Unicode2.0)并且支持其他系列的子集(例如:
US-ASCII、ISO-8859-1或者UTF-8)。
不必使用整个Unicode(UCS-4)编码,除非正在使用的不是UTF-8编码。
大小写敏感 不象HTML,WML是一种大小写敏感的语言。
所有的标签、属性和枚举属性都必须使用小写。
在编写WML页面的时候,必须注意到大小写。
包括参数的名字和参数的数值都是大小写敏感的。
例如:
variable1、Variable1和vaRiable1都是不同的参数。
不显示的字符 表3-2中包括了在WML中不显示的字符:
表3-2不显示的字符
字符 8位十进制值
换行 10
回车 13
空格 32
水平制表符 9
除非特别的指定,WML将一个或多个连续的换行、回车、水平制表和空格转换成一个空格。
换句话说,忽略所有的多于一个以上的不显示字符。
例子1:
Sometext
例子2:
Sometext
上面的例子中,手工地使用换行和回车保证程序的可读性,但不是很必要。
文件开场白 所有的WML页面必须在文件的开头处声明XML文件类型:
xmlversion="1.0"?
>
DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http:
//www.wapforum.org/DTD/wml_1.1.xml">
为了将这个开场白自动地加入到页面中,读者可以使用函数调用来实现。
注意:
为了确定WAP浏览器的类型和版本,可以通过捕获HTTP头中的USER_AGENT来进行。
ContentType 为了建立一个有效的WML信息实体(MIMEtype),必须在文件的开场白之前指定文件的类型:
Content-type:
text/vnd.wap.wml
注意:
必须(至少)在ContentType和XML文件声明之前保留一段空行。
如果省略,将造成编译器错误。
过多空行同样会造成错误。
属性 许多WML标记有一个或多个属性标记,有些是必须的,有些是可选择的。
属性可以指定附加的信息,用来确定设备如何解释这些标签。
WML标记有以下两种使用方式:
content
必须使用成对的单引号或者双引号将属性值包含在内,每个属性之间使用空格分开。
引用变量 很像UNIX下的Shell变量,可以在格式化的文本、URL、选择文本等等文本内容中使用变量。
使用变量的语法如下:
$(myvar)。
特殊字符 WML的保留字符:
“<”、“>”、“'”、“"”和“&”。
为了在文本中显示这些字符,必须按照表3-3中规定的方式指定。
表3-3指定特殊字符
字符 指定方式
< <
> >
‘ '
" "
& &
$ $$
连续空格
-
分号是字符标签的一个部分,不能省略。
如果省略了,将可能会造成WML编译器错误。
注意:
与HTML不同的是,当在URL中使用&的时候必须使用&来代替字符&。
WML使用XML文档字符集,目前支持Unicode2.0。
与HTML不同,WML的所有标签、属性和规定的枚举值必须小写。
卡片的名字和变量也是区分大小写。
和HTML一样,对于连续的空字符,只显示一个空格。
标签内属性的值必须用双引号或者单引号括起来。
属性名、等号和值之间不能有空格。
对于不成对出现的标签,必须在“>”前加“/”。
比如:
。
在对变量的引用上和HTML基本相同,有以下三种形式:
$(var1:
esc)
$(var1:
noesc)
$(var1:
unesc)
三种形式,具体含义可参见HTML的相关部分。
在对保留字符的处理上也基本相同,对应的替代字符请详见“字符实体”。
这里要指出的是在URL的传递过程中,用来连接参数的&必须转化为&。
wml文件的一般格式:
xmlversion="1.0"?
>
DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http:
//www.wapforum.org/DTD/wml_1.1.xml">
Somecontents...
结构看上去和HTML文件很类似,对于每一个页面,在其文档开头必须指明以下的类型声明:
xmlversion="1.0"?
>
DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http:
//www.wapforum.org/DTD/wml_1.1.xml">
千万注意字母的大小写。
对于一个页面,其文件大小最好不要超过1.2K。
标签和HTML中的标签一样,用来表明这是一个WML的页面。
它有一个可选的“xml:
lang”属性来制定文档的语言,比如lang="zh">表示文档语言为中文。
和HTML一样
标签包含了该页面的相关信息。
标签之间可以包含一个
标签和多个标签。相当于HTML中的标签,指定该页面的访问控制信息。
它用两个可选的属性,domain用来指定域,默认值为当前域;path用来指定路径,默认值为“/”,即根目录。
由于单独使用,所以要用“/”结尾,以后对于类似的情况不再赘述。
和HTML中的类似,提供了该页面的meta信息。
属性是必选的,包括以下三种情况:
name="name"UP.LinkServer忽略meta数据。
http-equiv="name"UP.LinkServer将meta数据转为HTTP响应头(同HTML)。
user-agent="agent"UP.LinkServer直接将meta数据传给手机设备。
content属性也是必选的,其内容根据属性而定。
scheme属性目前尚不支持。
forua为可选属性,指定在该wml文件传到客户端之前,标签是不是被中间代理删除(因为传输的协议可能改变),默认值为false。
目前支持的meta数据:
指定页面在手机内存缓存中的存储时间段,默认的为30天(除非内存耗尽)。
在此期间,手机对于访问过的页面直接从缓存里调用。
如果信息是对时间敏感的,可以用max-age指定页面在缓存里的生存期,最小单位是秒。
如果指定为0,则每次都需通过连接服务器来调用该页面
类似于普通浏览器的书签功能。
当用户将一个卡片做了书签后,手机浏览器首先用一个标记记录该卡片。
这个标记默认的是标签中的title属性(以后会讲到)。
然后当用户选择了该书签以后,浏览器就会打开被记录的URL。
但是因为在默认的情况下,手机会记录所有的页面。
所以,一般被用来使手机不要记录当前的URL,即。
此外,如果要为书签指定不同于当前页面的URL,用。
一个页面可以包含多个卡片,每个卡片的内容可能不止一屏显示,注意页面、卡片和屏幕显示范围的关系。
一个卡片用和包含。
可以包含以下可选的属性:
id属性用来指定卡片的名字,可用来在卡片间跳转,相当于在HTML中在页内跳转时用。
title属性用来作为书签的标记,该属性一般不会显示在屏幕上。
newcontext属性(默认值为false)用来指示当跳转到本卡片时,手机是不是要清除以前保留的信息。
包括变量、堆栈里的历史记录、重新设置手机状态等。
ordered属性(默认值是true)表明该卡片里的内容是按固定的顺序显示,还是按用户的选择顺序来显示。
这点和HTML不同,卡片里的内容可以按一定的顺序显示。
默认的是按线性顺序显示,即按代码的顺序。
但是,要注意的是,以下三个标签必须按以下顺序来写:
、、(这和以后要讲的“事件”有关)。
这样做是为了方便填表单,当ordered设置为true时,如果一个表单的内容不能在一屏里显示完,就分成多屏显示;当ordered设置为false时,手机可以显示一个概要卡片来总结有效的选项,用户可以从中选取表单选项来填写。
onXXXX属性,类似于HTML标签中的onXXXX属性,用来捕捉事件。
当事件被触发时执行指定的操作(任务),在这里是转向某个URL。
在文本的显示上WML基本和HTML相同。
文字段落包含在和
之间。align属性指定该段文字的对齐方式,默认的是left。
其他可选择right和center;mode属性指定当一行显示不下所有的文字时是否自动换行。
默认的是自动换行wrap。
如果选nowrap,则在一行中显示,浏览器会通过类似于水平滚动条的机制来显示所有文字。
换行标签也一样为
。
这里先提一下,在表单中如果有多个或者
文字的修饰标签有、、、、、和,意义和HTML里的相同。
表格的显示标签也和HTML相近,使用、和来显示。的title属性用来给表格取个名字,columns属性指定表的列数,不能为0。可选的align属性和前面提到的一样是对齐方式。 表格中可以包含文字和图片。 请看下面的例子: xmlversion="1.0"? > DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml">
Hello World! 1-1 | 1-2 | 2-1 | 2-2 | 显示图片(1位黑白BMP图片)的标签一样类似于HTML。
属性alt和src是必须要有的,其他可选。 另外要注意的是要放在 里,不能放在和 alt属性用来指定当手机不支持图片显示时用来显示的文字。 src属性指定图片的URL,但当有了以下的localsrc属性时,手机浏览器就忽略src属性。 localsrc属性用来指定显示存在手机ROM中的图标,如果找不到,则到UP.LinkServer上去找。 可选的align属性用来表明图片同当前行文本的对齐方式,默认值为bottom,可选to和middle。 height、width、vspace、hspace属性分别指定图片的长宽和距环绕文字的间距,目前不是所有的WAP手机都支持这些属性。 请看下面的例子程序: xmlversion="1.0"? > DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml">
)"src="xxx.bmp"localsrc="smileyface"/> 链接是HTML页面里最基本的功能,在WML里也一样用和来包括用来建立链接的文字。 必选属性href指定了要打开的URL;可选的title属性给该链接取个标记名字,这个名字将作为软按钮之一的ACCEPT键的标记显示在屏幕的软按钮区,所以通常可以将属性作为提示文字使用。 然而,以上的链接在WML里只是任务的一种情况。 为了能够使用其他任务,所以引进了新的标签任务标签文本。 其实是当任务标签为时的简单表示方式。 xmlversion="1.0"? > DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http: //www.wapforum.org/DTD/wml_1.1.xml">
News
Sports WML里的任务标签有以下几种,除了用于,还可以用在事件中: 用来指示浏览器显示指定的URL,包括页面的第一个卡片或者指定的卡片。 语法如下:
其中href属性为必选,其他属性为可选。 sendreferer属性表示是否传递调用href所指定的URL的页面的URL。 也就是当前页的URL,即HTTP头中的HTTP_REFERER。 默认值为false,可选值为true。 method和HTML中的表单FORM的method属性一样,指定表单是以get的方式还是post的方式递交,以便CGI处理。 默认的值为get,但如果未指定method但与间存在,手机自动以post方式传递。 accept-charset属性可以覆盖HTTP头里指定的字符集。 可以写多个字符集,如accept-charset="UTF-8,US-ASCII,ISO-8859-1"。 可以看作是HTML表单FORM中的,通过它可以向指定的URL传递以“变量名/值”形式的数据。 name和value属性都是必选的。 注意只有这里的变量是用来递交给CGI程序的。 除了,还可以在和之间加入一句或者多句。 该语句的意思是,当触发某一事件时,给变量赋值。 要注意的是: 当和之间没有任何语句时,要用的形式,这点比较特别。 比如: News。 用来将当前页面的URL压入URL历史堆栈,并打开此前的URL。 若该URL不存在,则无效。 语法类似:
和之间可加入一句或多句。 若不加,则必须变成的形式。 用来刷新当前的页面,从而使得页面内的变量刷新,语法为:
表示什么也不做。 该标签不能用在中,一般用在覆盖页面级的事件模板。 类似于HTML的
|