|
1.基本规则
2.基本格式和文件头
3.显示文本
4.显示图片
5.锚和任务
6.显示表单
7.事件
8.CGI编程
这里介绍WAP协议标准组织所制定的标记语言WML,由于和以前介绍的HDML在手机浏览器专用网页的特征上基本一致,所以概念部分就略去了,直接讲述语言。
1。基本规则 * WML使用XML文档字符集,目前支持Unicode 2.0,和HDML不同,WML的所有标签,属性和规定的可接收值必须小写,CARD的名字和变量也是区分大小写的。和HDML一样,对于连续的空字符,只显示一个空格。标签内属性的值必须用”或者’括起来,属性名,=和值之间不能有空格。对于不成对出现的标签,必须在 > 前加 / ,比如 。在对变量的引用上和HDML基本相同,有: $(var1:esc) $(var1:noesc) $(var1:unesc) 三种形式,具体含义参见前面HDML的相关部分。在对保留字符的处理上也基本相同,对应的取代字符有: < < > > ? ’ ‘ ” “ & & $ $$ 空格 - 这里要指出的是在URL的传递过程中,用来连接参数的 & 必须转化为 & 。
2。基本格式和文件头
wml文件的一般格式:
wapforum.org/DTD/wml_1.1.xml”> Some contents…
结构看上去和HTMl文件很类似,对于每一个DECK,在其文档开头必须指明以下的类型声明。 wapforum.org/DTD/wml_1.1.xml”> 千万注意字母的大小写。对于一个DECK,其文件大小最好不要超过1.2K。
标签和HTML中的标签一样,用来表明这是一个WML的DECK,它有一个可选的xml:lang属性来制定文档的语言,比如 表示文档语言为中文。
和HTML一样标签包含了该DESK的相关信息。标签之间可以包含一个 标签和多个 标签。
相当于HTML中的 标签,指定该DECK的访问控制信息,它用两个可选的属性,domain用来指定域,默认值为当前域,path用来指定路径,默认值为”/”,即根目录。由于 单独使用,所以要用/结尾,以后对于类似的情况不再赘述。
和HTML中的类似,提供了该DECK的meta信息。属性是必选的,包括一下三种情况 name=”name” UP.Link Server忽略meta数据 http-equiv=”name” UP.Link Server将meta数据转为HTTP响应头(同HTML) user-agent=”agent” UP.Link Server直接将meta数据传给手机设备 content属性也是必选的,其内容根据属性而定。scheme属性目前尚不支持。forua为可选属性,指定在该wml文件传到客户端之前, 标签是不是被中间代理删除(因为传输的协议可能改变),默认值为false。
目前支持的meta数据: 指定DECK在手机内存缓存中的存储时间段,默认的为30天(除非内存耗尽),在该期间,手机对于访问过的DECK直接从缓存里调用。如果信息是对时间敏感的,可以用max-age指定DECK在缓存里的生存期,最小单位是秒,如果指定为0,则每次都需通过连接服务器来调用该DECK。
和 类似于普通浏览器的书签功能。当用户将一个CARD做了书签后,手机浏览器首先用一个标记记录该CARD,这个标记默认的是 标签中的title属性(以后会讲到),然后当用户选择了该书签以后,浏览器就会打开被记录的URL。但是因为在默认的情况下,手机会记录所有的DECK,所以,一般 被用来使手机不要记录当前的URL,即 。此外,如果要为书签指定不同于当前DRECk的URL,用 。
一个DECK可以包含多个CARD,每个CARD的内容可能不止一屏显示,注意DECK,CARD和屏幕显示范围的关系。一个CARD用 和 包含。 可以包含以下可选的属性: *id属性用来指定CARD的名字,可用来在CARD间跳转,相当于在HTML中在页内跳转时用 。 *title属性用来作为书签的标记,该属性一般不会显示在屏幕上。 *newcontext属性,默认值为false,用来指示当跳转到本CARD时,手机是不是要清除以前保留的信息,包括变量,堆栈里的历史记录,重新设置手机状态等。 *ordered属性,默认值是true,表明该CARD里的内容是按固定的顺序显示,还是按用户的选择来显示。这点和HTMl不同,CARD页面里的内容可以按一定的顺序显示,默认的是按线性顺序显示,即按代码的顺序,但是,要注意的是,以下三个标签必须按以下顺序来写 ,(这和以后要讲的“事件”有关)。这样做是为了方便填表单,当ordered设置为true时,如果一个表单的内容不能在一屏里显示完,就分成多屏显示;当ordered设置为false时,手机可以显示一个概要CARD来总结有效的选项,用户可以从中选取表单选项来填写。 *onXXX属性,类似于HTML标签中的onXXX属性,用来捕捉事件,当事件被触发时执行指定的操作(任务),在这里是转向某个URL。
3。显示文本
在文本的显示上WML基本和HTML相同。文字段落包含在
和
之间,align属性指定该段文字的对齐方式,默认的是left,其他可选择right和center;mode属性指定当一行显示不下所有的文字时是否自动换行,默认的是自动换行wrap,如果选nowrap,则在一行中显示,浏览器会通过类似于水平滚动条的机制来显示所有文字。
换行标签也一样为 ,这里先替一下,在标单中如果有多个或者
、
和
| 来显示,
的title属性用来给表格取个名字,columns属性指定表的列数,不能为0,可选的align属性和前面提到的一样是对齐方式。表格中可以包含文字和图片。test1.wml————–
4。显示图片
显示图片(1位黑白BMP图片)的标签一样类似于HTML, ,属性中alt和src是必须要有的,其他可选。另外要注意的是 要放在
里,不能放在 和
test2.wml —————

5。锚和任务
连接是HTML页面里最基本的功能,在WML里也一样用和来包括用来建立连接的文字,必选属性href指定了要打开的URL,可选的title属性给该连接取个标记名字,这个名字将作为软按钮之一的ACCEPT键(详见以前的HDML入门文章)的标记显示在屏幕的软按钮区,所以通常可以将属性作为提示文字是用。
然而,以上的连接在WML里只是任务的一种情况,为了能够使用其它任务,所以引进了新的标签 任务标签 文本 ,其实是当任务标签为 时的简单表示方式。
test3.wml —————
News
Sports
WML里的任务标签有以下几种,除了用于 ,还可以用在事件中:
1) 用来指示浏览器显示指定的URL,包括DECK的第一个CARD或者指定的CARD。语法如下: 其中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 。
2) 用来将当前页面的URL压入URL历史堆栈,并打开此前的URL,若该URL不存在,则 无效。语法类似 : , 和 之间可加入一句或多句 ,若不加,则必须变成 的形式。
3) 用来刷新当前的页面,从而使得页面内的变量刷新,语法为 。
4) ,表示什么也不做,该标签不能用在 中,一般用在覆盖DECK级的 (以后会说明)。 6。显示表单
类似于HTML的
|
|