当前位置: 编程技术>移动开发
本页文章导读:
▪WAP开发入门与拔高之时间元素 WAP开发入门与提高之时间元素
第三部分:WML主要语法 -- 时间元素3.3 时间及其元素WML提供了几个元素,专门用于处理用户浏览器的导航和事件。利用这些元素用户可以给某任务制定关联事.........
▪ WAP开发入门与拔高之预编译 WAP开发入门与提高之预编译
转自:http://bbs.xml.org.cn/dispbbs.asp?boardID=77&ID=590885.3 预编译WML Script的预编译主要用于在编译阶段控制编译器的行为。与编译头一般在文件开头和函数声明之前.........
▪ WAP开发入门与增高之用户输入处理元素 WAP开发入门与提高之用户输入处理元素
第三部分:WML主要语法 -- 用户输入处理元素3.5 用户输入处理元素通过WAP手机的按键,用户可以向浏览器显示的卡片中输入数据信息或操作信息。WML.........
[1]WAP开发入门与拔高之时间元素
来源: 互联网 发布时间: 2014-02-18
WAP开发入门与提高之时间元素
第三部分:WML主要语法 -- 时间元素
3.3 时间及其元素
WML提供了几个元素,专门用于处理用户浏览器的导航和事件。利用这些元素用户可以给某任务制定关联事件。那么当事件触发时,
浏览器就会执行相应的任务,比如URL导航就是通过事件实现的。而且,事件可以和一个需要完成的任务捆绑在一起。事件捆绑时一
般是通过几种元素及其标签声明来实现的,如go、do和onevent等元素。下面我们就讲解WML的事件元素及事件。
3.3.1 do元素
do元素提供了一个通用的事件处理机制,使得用户可以参与当前卡片的事件处理。通过<do>和</do>标签将用户交互和某一个任务联
系在一起。用户交互可以是用户按下的功能键、选择的菜单项,也可以是用户的声音提示。当用户激活这些交互功能时,用户浏览器
就会执行与do元素相关的任务。其语法格式如下:
<do type="type" label="label" name="name" optional="boolean">
任务(task)
</do>
其中tast是与do元素关联的动作,也是条件激活时浏览器即将执行的内容。在do元素中,用户必须绑定且只能绑定go、prev、noop和
refresh四种元素所实现任务中的一个任务(task)。go元素用于定位制定的URL地址,prev元素用于定位并打开前一操作或任务,
doop为空操作,refresh用于刷新当前卡片组或任务,有关他们的详细用法我们后面会陆续介绍。
do元素可以用于卡片一级,也可用于卡片组一级。当用于卡片一级时,do元素必须包含在card元素中;而用于卡片组一级时,do元素
必须包含在template元素中,由此定义的do元素将同时应用于当前卡片组的所有卡片。此时如果某个卡片不想应用模板中的do元素及
其任务,则需采用我们前面介绍的方法,使用同名事件处理来替代模板中的do元素的事件处理。而且,不论事件关联的任务是否相同
,当do元素定义的事件名称相同时,卡片的do元素将忽视卡片组一级do元素的影响,及卡片一组的do元素将被优先执行。
另外,含有空操作任务的do元素,不论它是否被激活,它都不会传送或显示到用户的浏览器中,这在一定程度上可以加快浏览器的工
作效率,因为服务器端体它抛弃了一些空任务的判断。 do元素各个属性的功能及用法讲解如下:
1)type。用于指定do元素的类型(type),也即需要关联、绑定的用户交互事件,是必选属性。用户浏览器接到这些事件后,就会
激活它们并执行相应的操作与处理。如果在一个卡片中定义了多个do元素并拥有同样type,那么用户必须为每个do指定不同的事件名
才行,否则就会发生判断混乱的错误。
do元素典型的类型(type)及执行条件介绍如下:
1、accept。当用户选择或按下相应功能键时(accept)、选项、命名或按钮时,浏览器接收或激活当前所作选择。 2、prev。激活
prev键时,浏览器将导航到历史记录中的前一个卡片。
3、help。激活HELP功能键或相应按钮、命名时,浏览器显示与当前内容相关的帮助信息。
4、reset。激活reset功能键或相应按钮、命名时,清除或重置当前卡片组或浏览器的状态。
5、options。激活options功能键或相应按钮、命名时,浏览器显示与当前内容有关的选项或附加操作。
6、delete。激活delete功能键或相应按钮、命名时,删除当前项目或选择。
7、unknown。如果给出的类型不能为do元素所识别,则一律按照unknown型处理,相当于类型为空,即type=""。
8、vnd.*。vnd.*及其它不同大小写组合[Vv][Nn][Dd].*。这种类型定义的都是vnd.cotype,用于激活供应商或用户浏览器自定义的
某个特定功能,其中co为公司(company)名的缩写。
9、X-*与X-*。扩展类型,目前WML中还没有使用。
2)label。该属性指定的文本字符串可以表示用户的交互事件。例如,当把某一个任务绑定在accept键上之后,并设置了label属性
,比如label="gone",那么浏览器就会将label的值“gome”显示在屏幕上;如果不指定,浏览器则会显示默认的“ok”字符串。为
了保证能在较小的手机上显示出来,label的属性值最多不超过6个字符。不过这可能因WAP手机品牌、型号不同而稍有不同,有的手
机最多不能超过5个字符。而且,如果手机浏览器不支持动态标签显示,那么它就会忽视label属性。
3)该属性用于指定do元索所绑定事件的名称。如果多个do元素制定了相同的name,那么他们绑定的事件统属一个。如果卡片一般与
卡片组一级中do元素制定了相同的事件名,那么卡片一级的时间将被优先执行,卡片组一级的事件将被忽视。
WML规定,在同一卡片或在同一模板中,不得指定具有相同事件名(name)的两个或两个以上的do元素。
另外,如果name属性值为空,则相当于没有指定name属性,这时do元素执行的事件或操作由type的属性值决定。
4)optional。指定浏览器是否忽视do元素及其包含的任务。有两个可选值:true和false。如果值为true,则浏览器将忽视当前do元
素,即不执行它所绑定的任务。反之,若值为false,则执行do元素。
3.3.2 ontimer事件
ontimer用于指定一个事件。当<timer/> 标签指定的时间到期后,浏览器就执行ontimer所指定的这个事件。ontimer的时间可以是一
个URL地址,一个卡片组,一个WML网页,一幅图像或其他符合URL定位的规则的文件。<timer/>标签指定的时间为正整数,单位大小
为1/10秒。
ontimer时间只能包含在card元素或template元素的标签中进行定义,其语法形式如下:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onenterbackward="href" ontimer="href">
内容(content)
</template>
ontimer事件只有一个属性,即ontimer。它用于指定一个超链(href)的URL地址,指定时间timer过期的时候,用户浏览器就会按照
超链(href)的URL打开相应的卡片。
3.3.3 onenterforward事件
onenterforward事件仅当用户使用go任务或类似于go任务的任务来定位和浏览卡片时才可发生。设置onenterforward事件后,当用户
进入当前卡片组时,浏览器就会定位onenterforward属性或<go/>标签中指定超链(href)的URL地址,并打开URL指定的卡片。
onenterforward事件需要包含在card元素、template元素或onevent元素的标签中进行定义,其语法格式为:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onterbackward="href" ontimer="href">
内容(content)
</template>
或:
<onevent type="onenterforward">
<go href="/blog_article/href/index.html"/>其他任务(task)
</onevent>
前两种格式中,onenterforward事件作为card元素或template元素标签中的一个属性进行定义的,该属性即为onenterforward,它制
定了一个超链(href)的URL地址,当用户进入当前卡片时,浏览器就据此打开URL指定的卡片。这种格式制定的任务相当与go任务。
3.3.4 onenterbackward事件
当用户使用prev任务或类似的任务来导航至某一卡片时,onenterbackward事件才可发生。换句话说,当用户从历史堆栈中选取URL地
址,并通过浏览器打开这一地址对应的卡片时,onenterbackward事件才可能发生。
与onenterforward事件类似,onenterbackward事件也需要包含在card元素、template元素或onevent元素的标签中进行定义。其具体
语法格式如下:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onterbackward="href" ontimer="href">
内容(content)
</template>
或:
<onevent type="onterbackward">
<go href="/blog_article/href/index.html"/>其他任务(task)
</onevent>
前两种格式中,onterbackward事件是作为card元素或template元素标签中的一个属性进行定义的,该属性即为onterbackward,它指
定了一个超链(href)的URL地址,当用户使用prev等任务项回到地址时,浏览器就会打开URL指定的卡片。
后一种格式中,onterbackward事件作为onevent元素的一给类型值,并结合<go/>标签指定事件激活时浏览器需要打开的卡片的URL地
址。
3.3.5 onpick事件
onpick事件在定义时一般通过onpick属性指定一些项目,当用户选择或取消这些项目时,即可触发onpick事件,执行onpick属性所指
定的项目,如打开卡片、卡片组或其他事件等。onpick事件通常在option元素的标签中进行定义,其语法格式如下:
<option value="value" onpick="href">
内容(content)
</opiton>
可以看出onpick时间作为option元素的一个属性来定义具体的动作。这个属性即onpick,它指定了事件触发时浏览器需要定位的超链
的URL地址。
3.3.6 onevent元素
onevent元素通过<onevent>和</onevent>标签可以把包含的任务与特定的时间捆绑在一起。当用户激活这一特定事件时,onevent元
素所绑定的任务就会被立即执行。onevent元素的语法格式如下:
<onevent type="type">
任务(task)
</onevent>
其中task是与onevent元素关联的动作,也是条件激活时浏览器即将执行的内容。与do元素一样,onevent元素中用户也必须绑定且只
能绑定go、prev、noop和refresh四种元素所实现任务中的一个任务,go元素用于定位指定URL地址、prev元素用于定位并打开前一操
作或任务,noop为空操作,refresh用于刷新当前卡片组或任务。
onevent元素只有一个属性,即type属性,它是必选属性,主要用于定义特定事件的名称。该属性值的数据类型为CDATA型。
3.3.7 postfield元素
postfield元素用于指定当浏览器接到URL请求时,向原服务器(origin server)传送的域名其域值。传输时,传输域及传输值的实
际编码方式主要依赖于浏览器与原服务器的通信方式。postfield元素是通过单独?lt;postfield/>标签进行定义的,其语法格式如下:
<postfield name="name" value="value">
它共有两个属性:name与value,它们的取值均属于VDATA型数据。其中,name属性用于指定传输域的名称,value属性用于定义传输
的值。这两个属性均为必选属性。
第三部分:WML主要语法 -- 时间元素
3.3 时间及其元素
WML提供了几个元素,专门用于处理用户浏览器的导航和事件。利用这些元素用户可以给某任务制定关联事件。那么当事件触发时,
浏览器就会执行相应的任务,比如URL导航就是通过事件实现的。而且,事件可以和一个需要完成的任务捆绑在一起。事件捆绑时一
般是通过几种元素及其标签声明来实现的,如go、do和onevent等元素。下面我们就讲解WML的事件元素及事件。
3.3.1 do元素
do元素提供了一个通用的事件处理机制,使得用户可以参与当前卡片的事件处理。通过<do>和</do>标签将用户交互和某一个任务联
系在一起。用户交互可以是用户按下的功能键、选择的菜单项,也可以是用户的声音提示。当用户激活这些交互功能时,用户浏览器
就会执行与do元素相关的任务。其语法格式如下:
<do type="type" label="label" name="name" optional="boolean">
任务(task)
</do>
其中tast是与do元素关联的动作,也是条件激活时浏览器即将执行的内容。在do元素中,用户必须绑定且只能绑定go、prev、noop和
refresh四种元素所实现任务中的一个任务(task)。go元素用于定位制定的URL地址,prev元素用于定位并打开前一操作或任务,
doop为空操作,refresh用于刷新当前卡片组或任务,有关他们的详细用法我们后面会陆续介绍。
do元素可以用于卡片一级,也可用于卡片组一级。当用于卡片一级时,do元素必须包含在card元素中;而用于卡片组一级时,do元素
必须包含在template元素中,由此定义的do元素将同时应用于当前卡片组的所有卡片。此时如果某个卡片不想应用模板中的do元素及
其任务,则需采用我们前面介绍的方法,使用同名事件处理来替代模板中的do元素的事件处理。而且,不论事件关联的任务是否相同
,当do元素定义的事件名称相同时,卡片的do元素将忽视卡片组一级do元素的影响,及卡片一组的do元素将被优先执行。
另外,含有空操作任务的do元素,不论它是否被激活,它都不会传送或显示到用户的浏览器中,这在一定程度上可以加快浏览器的工
作效率,因为服务器端体它抛弃了一些空任务的判断。 do元素各个属性的功能及用法讲解如下:
1)type。用于指定do元素的类型(type),也即需要关联、绑定的用户交互事件,是必选属性。用户浏览器接到这些事件后,就会
激活它们并执行相应的操作与处理。如果在一个卡片中定义了多个do元素并拥有同样type,那么用户必须为每个do指定不同的事件名
才行,否则就会发生判断混乱的错误。
do元素典型的类型(type)及执行条件介绍如下:
1、accept。当用户选择或按下相应功能键时(accept)、选项、命名或按钮时,浏览器接收或激活当前所作选择。 2、prev。激活
prev键时,浏览器将导航到历史记录中的前一个卡片。
3、help。激活HELP功能键或相应按钮、命名时,浏览器显示与当前内容相关的帮助信息。
4、reset。激活reset功能键或相应按钮、命名时,清除或重置当前卡片组或浏览器的状态。
5、options。激活options功能键或相应按钮、命名时,浏览器显示与当前内容有关的选项或附加操作。
6、delete。激活delete功能键或相应按钮、命名时,删除当前项目或选择。
7、unknown。如果给出的类型不能为do元素所识别,则一律按照unknown型处理,相当于类型为空,即type=""。
8、vnd.*。vnd.*及其它不同大小写组合[Vv][Nn][Dd].*。这种类型定义的都是vnd.cotype,用于激活供应商或用户浏览器自定义的
某个特定功能,其中co为公司(company)名的缩写。
9、X-*与X-*。扩展类型,目前WML中还没有使用。
2)label。该属性指定的文本字符串可以表示用户的交互事件。例如,当把某一个任务绑定在accept键上之后,并设置了label属性
,比如label="gone",那么浏览器就会将label的值“gome”显示在屏幕上;如果不指定,浏览器则会显示默认的“ok”字符串。为
了保证能在较小的手机上显示出来,label的属性值最多不超过6个字符。不过这可能因WAP手机品牌、型号不同而稍有不同,有的手
机最多不能超过5个字符。而且,如果手机浏览器不支持动态标签显示,那么它就会忽视label属性。
3)该属性用于指定do元索所绑定事件的名称。如果多个do元素制定了相同的name,那么他们绑定的事件统属一个。如果卡片一般与
卡片组一级中do元素制定了相同的事件名,那么卡片一级的时间将被优先执行,卡片组一级的事件将被忽视。
WML规定,在同一卡片或在同一模板中,不得指定具有相同事件名(name)的两个或两个以上的do元素。
另外,如果name属性值为空,则相当于没有指定name属性,这时do元素执行的事件或操作由type的属性值决定。
4)optional。指定浏览器是否忽视do元素及其包含的任务。有两个可选值:true和false。如果值为true,则浏览器将忽视当前do元
素,即不执行它所绑定的任务。反之,若值为false,则执行do元素。
3.3.2 ontimer事件
ontimer用于指定一个事件。当<timer/> 标签指定的时间到期后,浏览器就执行ontimer所指定的这个事件。ontimer的时间可以是一
个URL地址,一个卡片组,一个WML网页,一幅图像或其他符合URL定位的规则的文件。<timer/>标签指定的时间为正整数,单位大小
为1/10秒。
ontimer时间只能包含在card元素或template元素的标签中进行定义,其语法形式如下:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onenterbackward="href" ontimer="href">
内容(content)
</template>
ontimer事件只有一个属性,即ontimer。它用于指定一个超链(href)的URL地址,指定时间timer过期的时候,用户浏览器就会按照
超链(href)的URL打开相应的卡片。
3.3.3 onenterforward事件
onenterforward事件仅当用户使用go任务或类似于go任务的任务来定位和浏览卡片时才可发生。设置onenterforward事件后,当用户
进入当前卡片组时,浏览器就会定位onenterforward属性或<go/>标签中指定超链(href)的URL地址,并打开URL指定的卡片。
onenterforward事件需要包含在card元素、template元素或onevent元素的标签中进行定义,其语法格式为:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onterbackward="href" ontimer="href">
内容(content)
</template>
或:
<onevent type="onenterforward">
<go href="/blog_article/href/index.html"/>其他任务(task)
</onevent>
前两种格式中,onenterforward事件作为card元素或template元素标签中的一个属性进行定义的,该属性即为onenterforward,它制
定了一个超链(href)的URL地址,当用户进入当前卡片时,浏览器就据此打开URL指定的卡片。这种格式制定的任务相当与go任务。
3.3.4 onenterbackward事件
当用户使用prev任务或类似的任务来导航至某一卡片时,onenterbackward事件才可发生。换句话说,当用户从历史堆栈中选取URL地
址,并通过浏览器打开这一地址对应的卡片时,onenterbackward事件才可能发生。
与onenterforward事件类似,onenterbackward事件也需要包含在card元素、template元素或onevent元素的标签中进行定义。其具体
语法格式如下:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onterbackward="href" ontimer="href">
内容(content)
</template>
或:
<onevent type="onterbackward">
<go href="/blog_article/href/index.html"/>其他任务(task)
</onevent>
前两种格式中,onterbackward事件是作为card元素或template元素标签中的一个属性进行定义的,该属性即为onterbackward,它指
定了一个超链(href)的URL地址,当用户使用prev等任务项回到地址时,浏览器就会打开URL指定的卡片。
后一种格式中,onterbackward事件作为onevent元素的一给类型值,并结合<go/>标签指定事件激活时浏览器需要打开的卡片的URL地
址。
3.3.5 onpick事件
onpick事件在定义时一般通过onpick属性指定一些项目,当用户选择或取消这些项目时,即可触发onpick事件,执行onpick属性所指
定的项目,如打开卡片、卡片组或其他事件等。onpick事件通常在option元素的标签中进行定义,其语法格式如下:
<option value="value" onpick="href">
内容(content)
</opiton>
可以看出onpick时间作为option元素的一个属性来定义具体的动作。这个属性即onpick,它指定了事件触发时浏览器需要定位的超链
的URL地址。
3.3.6 onevent元素
onevent元素通过<onevent>和</onevent>标签可以把包含的任务与特定的时间捆绑在一起。当用户激活这一特定事件时,onevent元
素所绑定的任务就会被立即执行。onevent元素的语法格式如下:
<onevent type="type">
任务(task)
</onevent>
其中task是与onevent元素关联的动作,也是条件激活时浏览器即将执行的内容。与do元素一样,onevent元素中用户也必须绑定且只
能绑定go、prev、noop和refresh四种元素所实现任务中的一个任务,go元素用于定位指定URL地址、prev元素用于定位并打开前一操
作或任务,noop为空操作,refresh用于刷新当前卡片组或任务。
onevent元素只有一个属性,即type属性,它是必选属性,主要用于定义特定事件的名称。该属性值的数据类型为CDATA型。
3.3.7 postfield元素
postfield元素用于指定当浏览器接到URL请求时,向原服务器(origin server)传送的域名其域值。传输时,传输域及传输值的实
际编码方式主要依赖于浏览器与原服务器的通信方式。postfield元素是通过单独?lt;postfield/>标签进行定义的,其语法格式如下:
<postfield name="name" value="value">
它共有两个属性:name与value,它们的取值均属于VDATA型数据。其中,name属性用于指定传输域的名称,value属性用于定义传输
的值。这两个属性均为必选属性。
[2] WAP开发入门与拔高之预编译
来源: 互联网 发布时间: 2014-02-18
WAP开发入门与提高之预编译
转自:http://bbs.xml.org.cn/dispbbs.asp?boardID=77&ID=59088
5.3 预编译
WML Script的预编译主要用于在编译阶段控制编译器的行为。与编译头一般在文件开头和函数声明之前指定,WML Script规定所有的预编译头都是一关键词use加上指定的预编译属性进行指定。
在大多数的编程中,我们比较长用的预编译行为主要涉及外部文件声明、访问权和Meta信息设置。
5.3.1 外部文件
我们知道,使用URL地址可以定位一个WML Script文件。利用该URL地址;在WML Script编程中我们可以通过预编译来调用WML Script的外部文件,外部文件预编译头的声明方法是use url,其语法格式如下:
use url外部文件名 "URL"地址
这样,我们在当前文件的编程中就可以使用该预编译头声明的外部文件,从而可以调用该外部文件的函数。其语法格式为:
外部文件名#函数名(参数列表);
例如,我们希望在当前的WML Script程序中调用OtherScript外部文件中的check()函数,而且我们知道OtherScript文件的URL地址为http://www.host.com/app/script。因此,我们可以使用use url来声明这一外部文件:
use url OtherScript"http://www.host.com/script"
随后,我们就可以在程序中调用OtherScript中的check()函数了:
function test(par1,par2)
{
return OtherScript#check(par1,parr2);
};
其中调用执行的过程如下:
(1)找到WML Script外部文件的URL地址;
(2)当前函数从指定的URL地址值装载外部文件;
(3)检测外部文件的内容,并执行其中的check()函数。
ure url 预编译头指定的外部文件名在当前程序中必须唯一,用户不能指定不同URL地址的同名外部文件,否则在调用外部文件时就会发生混乱。
另外,use url预编译头中的URL地址也可以是相对URL地址。相对URL的起始位置是当前程序文件所在的位置,并在此基础上根据URL进行定位。
如果URL地址中的字符包含有转义字符,则WML Script将根据转义要求进行转义。不过,程序在编译的时候编译器并不会对他们进行转义,而是在程序执行时完成,检查URL格式和URL地址的有效性。
5.3.2 访问权限
我们可以使用访问权限预编译设保护文件的内容,实现访问控制。WML Script编程中,必须在调用外部函数之前使用访问权限预编译头声明外部文件的访问权限。不过,WML Script访问权限检查的缺省值是不进行检查,即disabled.但访问权限一经声明,以后当调用外部函数的时候,编译器就会检查外部文件的访问权限,以决定调用这是否有权使用该文件及其内含函数。
访问权限预编译头的声明方法是use access,其语法格式如下:
use access domain操作域名 path操作路径:
访问权限预编译头通过指定domain和path属性来决定编译器将要进行什么样的检查工作。如果文件有domain或者path属性,那么文件所在的URL就必须和属性中的值一致。比较时,域和路径都依据URL大写规则进行比较。具体的比较预则如下:
(1)操作域与URL中的域后缀相匹配。与后缀匹配是值所有的子域从后向前都必须一致。例如www.wapforum.org和wapforum.org相匹配,而与forum.org并不匹配。
(2)操作路径和URL中的路径前缀相匹配。路径前缀匹配是值从前向后必须一致。例如:“/X/Y”与“/X”相匹配,而不是和“/XZ”相匹配。
(3)却省的domain数行为当前的文件域,就是“/”。
不过,为了简化编程,有时WMLScript并不需要直到外部文件的绝对路径,我们只需提供文件的相对URL即可,用户浏览器执行程序是卡相对路径自动转换为绝对路径,根据路径属性进行匹配。例如:如果访问权限预编译头及其指定属性为:
use access domain"wapforum.org"path"/finance";
则可以使用以下的路径来调用指定文件中的外部函数,它们都符合相对URL地址匹配规则:
http://wapforum.org/finance/money.cgi
http://www. wapforum.org/finance/money.cgi
http://www. wapforum.org/finance/demos/packages.cgi?x+123&y+456
而以下的路径调用则非法的,因为它们或者操作域不对,或者URL地址不能与指定的相对URL相匹配:
heep//www.test.net/finance
http//www.qapforum.org/internal/foo.wml
需要强调指出的是,WML Script规定,同一程序中只能定义一个访问权限与编译头,否则就会导致编译错误。
5.3.3 Meta 信息
我们还可以通过与编译头的形式声明WML Script文件的Meta信息。Meta信息主要用于指定文件所需Mete属性的属性名(Property name)、属性值(Content)以及文件的配置(信息),属性都属于字符串类型的数据。Mate信息域编译头使用use meta声明,其语法格式为:
usr meta 属性 该属性Meta信息:
Meta的属性主要包括Name、HTTP Equiv和User Agent三种,下面我们分别讲解它们的声明方法:
(1)Name。该属性用于指定服务器使用的Meta信息。这些信息仅供服务使用,用户浏览器并不理会这些信息。
例如,以下Name属性的Meta信息指定了服务器的创建时间:
use meta name "Created""26-June-2000";
该信息只会作用于服务器,而不会影响用户浏览器的操作。
(2)HTTP Equiv。该属性用于指定需要解释为HTTP头的Meta信息。对于已经编译的文件来说,当它到达用户浏览器前,WML Script将根据HTTP Equiv属性指定的Meta信息将文件转换为WSP或HTTP的响应头,进行文件的解释和执行。
例如,以下声明的http equiv属性指定按照脚本语言的关键字来解释当前文件:
use meta http equiv"Keywords""Script,Language";
(3)User Agent。该属性用于定义用户浏览器使用的数据类型。例如:
use meta user agent"Type""Test";
它指定当前数据必须立即发送给用户浏览器,然后马上清除掉。
转自:http://bbs.xml.org.cn/dispbbs.asp?boardID=77&ID=59088
5.3 预编译
WML Script的预编译主要用于在编译阶段控制编译器的行为。与编译头一般在文件开头和函数声明之前指定,WML Script规定所有的预编译头都是一关键词use加上指定的预编译属性进行指定。
在大多数的编程中,我们比较长用的预编译行为主要涉及外部文件声明、访问权和Meta信息设置。
5.3.1 外部文件
我们知道,使用URL地址可以定位一个WML Script文件。利用该URL地址;在WML Script编程中我们可以通过预编译来调用WML Script的外部文件,外部文件预编译头的声明方法是use url,其语法格式如下:
use url外部文件名 "URL"地址
这样,我们在当前文件的编程中就可以使用该预编译头声明的外部文件,从而可以调用该外部文件的函数。其语法格式为:
外部文件名#函数名(参数列表);
例如,我们希望在当前的WML Script程序中调用OtherScript外部文件中的check()函数,而且我们知道OtherScript文件的URL地址为http://www.host.com/app/script。因此,我们可以使用use url来声明这一外部文件:
use url OtherScript"http://www.host.com/script"
随后,我们就可以在程序中调用OtherScript中的check()函数了:
function test(par1,par2)
{
return OtherScript#check(par1,parr2);
};
其中调用执行的过程如下:
(1)找到WML Script外部文件的URL地址;
(2)当前函数从指定的URL地址值装载外部文件;
(3)检测外部文件的内容,并执行其中的check()函数。
ure url 预编译头指定的外部文件名在当前程序中必须唯一,用户不能指定不同URL地址的同名外部文件,否则在调用外部文件时就会发生混乱。
另外,use url预编译头中的URL地址也可以是相对URL地址。相对URL的起始位置是当前程序文件所在的位置,并在此基础上根据URL进行定位。
如果URL地址中的字符包含有转义字符,则WML Script将根据转义要求进行转义。不过,程序在编译的时候编译器并不会对他们进行转义,而是在程序执行时完成,检查URL格式和URL地址的有效性。
5.3.2 访问权限
我们可以使用访问权限预编译设保护文件的内容,实现访问控制。WML Script编程中,必须在调用外部函数之前使用访问权限预编译头声明外部文件的访问权限。不过,WML Script访问权限检查的缺省值是不进行检查,即disabled.但访问权限一经声明,以后当调用外部函数的时候,编译器就会检查外部文件的访问权限,以决定调用这是否有权使用该文件及其内含函数。
访问权限预编译头的声明方法是use access,其语法格式如下:
use access domain操作域名 path操作路径:
访问权限预编译头通过指定domain和path属性来决定编译器将要进行什么样的检查工作。如果文件有domain或者path属性,那么文件所在的URL就必须和属性中的值一致。比较时,域和路径都依据URL大写规则进行比较。具体的比较预则如下:
(1)操作域与URL中的域后缀相匹配。与后缀匹配是值所有的子域从后向前都必须一致。例如www.wapforum.org和wapforum.org相匹配,而与forum.org并不匹配。
(2)操作路径和URL中的路径前缀相匹配。路径前缀匹配是值从前向后必须一致。例如:“/X/Y”与“/X”相匹配,而不是和“/XZ”相匹配。
(3)却省的domain数行为当前的文件域,就是“/”。
不过,为了简化编程,有时WMLScript并不需要直到外部文件的绝对路径,我们只需提供文件的相对URL即可,用户浏览器执行程序是卡相对路径自动转换为绝对路径,根据路径属性进行匹配。例如:如果访问权限预编译头及其指定属性为:
use access domain"wapforum.org"path"/finance";
则可以使用以下的路径来调用指定文件中的外部函数,它们都符合相对URL地址匹配规则:
http://wapforum.org/finance/money.cgi
http://www. wapforum.org/finance/money.cgi
http://www. wapforum.org/finance/demos/packages.cgi?x+123&y+456
而以下的路径调用则非法的,因为它们或者操作域不对,或者URL地址不能与指定的相对URL相匹配:
heep//www.test.net/finance
http//www.qapforum.org/internal/foo.wml
需要强调指出的是,WML Script规定,同一程序中只能定义一个访问权限与编译头,否则就会导致编译错误。
5.3.3 Meta 信息
我们还可以通过与编译头的形式声明WML Script文件的Meta信息。Meta信息主要用于指定文件所需Mete属性的属性名(Property name)、属性值(Content)以及文件的配置(信息),属性都属于字符串类型的数据。Mate信息域编译头使用use meta声明,其语法格式为:
usr meta 属性 该属性Meta信息:
Meta的属性主要包括Name、HTTP Equiv和User Agent三种,下面我们分别讲解它们的声明方法:
(1)Name。该属性用于指定服务器使用的Meta信息。这些信息仅供服务使用,用户浏览器并不理会这些信息。
例如,以下Name属性的Meta信息指定了服务器的创建时间:
use meta name "Created""26-June-2000";
该信息只会作用于服务器,而不会影响用户浏览器的操作。
(2)HTTP Equiv。该属性用于指定需要解释为HTTP头的Meta信息。对于已经编译的文件来说,当它到达用户浏览器前,WML Script将根据HTTP Equiv属性指定的Meta信息将文件转换为WSP或HTTP的响应头,进行文件的解释和执行。
例如,以下声明的http equiv属性指定按照脚本语言的关键字来解释当前文件:
use meta http equiv"Keywords""Script,Language";
(3)User Agent。该属性用于定义用户浏览器使用的数据类型。例如:
use meta user agent"Type""Test";
它指定当前数据必须立即发送给用户浏览器,然后马上清除掉。
[3] WAP开发入门与增高之用户输入处理元素
来源: 互联网 发布时间: 2014-02-18
WAP开发入门与提高之用户输入处理元素
第三部分:WML主要语法 -- 用户输入处理元素
3.5 用户输入处理元素
通过WAP手机的按键,用户可以向浏览器显示的卡片中输入数据信息或操作信息。WML为此专门提供了处理用户输入的元素。
3.5.1 input元素
input元素用于定义文本实体对象,包含有对输入文本内容的格式、数据类型、长度、值、变量名等多种属性的具体规定。当用户输
入满足input元素的规定时,则接收输入信息,并赋给指定的变量灵活进行相应的操作、处理;否则,就通过浏览器给出具体的处理
意见,并进行是单个输入处理或变量初始化操作,比如刷新卡片以让用户重新输入,或给用户指出输入错误所在并等待进一步的处理
指令等。input元素是WML编程中处理用户交互活动的重要元素,它通过单独的<input/>标签进行定义,其语法格式如下:
<input name="variable" title="label" type="type" value="value" default="default" format="specifier"
emptyok="false|true" size="n" maxlength="n" tabindex="n"/>
其中除了name属性是必选的以外,其他属性都是可选的。这些属性的功能和用法介绍如下: 1)name。该属性用于指定用来保存用户
输入文本的变量和名称。定义name属性后WML将根据该属性也即变量名,为即将输入的文本实体对象与之存储空间,以便接收用户输
入。
2)title。该属性用于input元素的标签,通常是位于输入框前的提示信息。
3)type。用于指定文本输入区的类型,有text和password两种选择。默认值为text,指定的用户可以输入文本,而且输入的文本会
同时逐渐响应并显示在浏览器中。如果选择password,则指定用户输入的文本作为密码文本处理,WML程序按文本实体接收输入的数
据,而浏览器上响应用户输入显示时逐渐均为星号(*),由此起到保密的目的。
4)value。该属性用于指定name属性所定义变量的值,它将显示在输入框中。
5)default。该属性用于指定name属性所定义变量的默认值。
6)format。该属性用于格式化输入的数据。
7)maxlength。该属性用于指定用户可输入字符串的最大长度。该属性的上限为256,最多不能超过256个字符。
8)emptyok。用于指定用户是否可以不在输入框内输入内容。
9)size。该属性用于指定输入框的宽度,宽度值为字符个数。
10)tabindex。用于指定多个输入框存在时,类似于HTML中Tab键的具体位置。
3.5.2 select元素
选择列表属于输入元素,允许用户从选项列表中选择需要的项目。WML不仅支持单选列表,及单选项,而且支持多选列表,也就是复
选项。select元素允许用户从选列表中选择所需的项目。列表中的选项采用后面我们就要讲到的option元素进行定义,一般是一行格
式化的文本。编程时,我们可以使用optgroup元素将option元素的情况项目分成不同级别或层次的选项组,为用户选择提供方便。
select元素是通过<select>和</select>标签进行定义的,语法格式如下:
<select title="label" multiple="false|true" name="variable" default="default" iname="index_var" ivalue="default"
tabindex="n">
内容(content)
</select>
其中所有属性都是可选的。select元素各个属性的功能和用法介绍如下:
1)multiple。该属性用于指定选择列表是否可以使用复选框。
2)name。该属性用于指定接收选项值的变量的名称,变量值由value属性预设定。
3)value。用于制定name属性所定义变量的默认值。
4)iname。用于指定包含排序号的变量的名称。
5)ivalue。用于指定选择列表中被选中选项的值,是一个具有排序号性质的值。 6)title。用于指定选择列表的标题。
7)tabindex。用于指定当前选择光标在选择列表中的具体位置,该位置即为当前选择操作将要选择的选项所在的位置。
3.5.3 option元素
option元素用于定义select元素中的一组单选项。它通过<option>和</option>标签进行定义,并可包括事件和单选项的显示文本等
信息,其语法格式如下:
<option title="label" value="value" onpick="href">
内容(content)
</option>
option元素的属性均为可选,各属性功能及用法说明如下:
1)value。该属性用于设置键值。当用户选到该选项之后,option元素就会将该值赋给selet元素的name属性所指定的变量。
2)title。用于option元素制定的一个标题,以便提示用户操作。
3)onpick。该属性用于指定用户选到该项并按accept键后所打开卡片组的L。
3.5.4 optgroup元素
optgroup元素用于将多个相关的option元素进行分组,用户浏览器可以借助这种分组来安排选项列表的显示布局,以方便用户选择。
optgroup元素是通过<optgroup>和</optgroup>标签进行定义的,其语法格式如下:
<optgroup title="label">
内容(content)
</optgroup>
它所包含的内容中需要包含至少一次option元素或其他的optgroup元素。
optgroup元素只有一个属性,即title属性,用于定义optgroup元素的标题,以便提示用户操作。
3.5.5 fieldset元素
fieldset元素用于设定输入框和相应的说明文本,从而用户就可以利用input元素等借助该输入框输入所需的数据信息。fieldset元
素的语法格式如下:
<fieldset title="label">
内容(content)
</fieldset>
由于fieldset元素和输入有关,所以它们的内容中可以包含与输入有关的其他元素。 其语法格式可以看出,fieldset元素只有一个
属性,即title属性,用于定义fieldset元素的标题,以便提示用户操作。
第三部分:WML主要语法 -- 用户输入处理元素
3.5 用户输入处理元素
通过WAP手机的按键,用户可以向浏览器显示的卡片中输入数据信息或操作信息。WML为此专门提供了处理用户输入的元素。
3.5.1 input元素
input元素用于定义文本实体对象,包含有对输入文本内容的格式、数据类型、长度、值、变量名等多种属性的具体规定。当用户输
入满足input元素的规定时,则接收输入信息,并赋给指定的变量灵活进行相应的操作、处理;否则,就通过浏览器给出具体的处理
意见,并进行是单个输入处理或变量初始化操作,比如刷新卡片以让用户重新输入,或给用户指出输入错误所在并等待进一步的处理
指令等。input元素是WML编程中处理用户交互活动的重要元素,它通过单独的<input/>标签进行定义,其语法格式如下:
<input name="variable" title="label" type="type" value="value" default="default" format="specifier"
emptyok="false|true" size="n" maxlength="n" tabindex="n"/>
其中除了name属性是必选的以外,其他属性都是可选的。这些属性的功能和用法介绍如下: 1)name。该属性用于指定用来保存用户
输入文本的变量和名称。定义name属性后WML将根据该属性也即变量名,为即将输入的文本实体对象与之存储空间,以便接收用户输
入。
2)title。该属性用于input元素的标签,通常是位于输入框前的提示信息。
3)type。用于指定文本输入区的类型,有text和password两种选择。默认值为text,指定的用户可以输入文本,而且输入的文本会
同时逐渐响应并显示在浏览器中。如果选择password,则指定用户输入的文本作为密码文本处理,WML程序按文本实体接收输入的数
据,而浏览器上响应用户输入显示时逐渐均为星号(*),由此起到保密的目的。
4)value。该属性用于指定name属性所定义变量的值,它将显示在输入框中。
5)default。该属性用于指定name属性所定义变量的默认值。
6)format。该属性用于格式化输入的数据。
7)maxlength。该属性用于指定用户可输入字符串的最大长度。该属性的上限为256,最多不能超过256个字符。
8)emptyok。用于指定用户是否可以不在输入框内输入内容。
9)size。该属性用于指定输入框的宽度,宽度值为字符个数。
10)tabindex。用于指定多个输入框存在时,类似于HTML中Tab键的具体位置。
3.5.2 select元素
选择列表属于输入元素,允许用户从选项列表中选择需要的项目。WML不仅支持单选列表,及单选项,而且支持多选列表,也就是复
选项。select元素允许用户从选列表中选择所需的项目。列表中的选项采用后面我们就要讲到的option元素进行定义,一般是一行格
式化的文本。编程时,我们可以使用optgroup元素将option元素的情况项目分成不同级别或层次的选项组,为用户选择提供方便。
select元素是通过<select>和</select>标签进行定义的,语法格式如下:
<select title="label" multiple="false|true" name="variable" default="default" iname="index_var" ivalue="default"
tabindex="n">
内容(content)
</select>
其中所有属性都是可选的。select元素各个属性的功能和用法介绍如下:
1)multiple。该属性用于指定选择列表是否可以使用复选框。
2)name。该属性用于指定接收选项值的变量的名称,变量值由value属性预设定。
3)value。用于制定name属性所定义变量的默认值。
4)iname。用于指定包含排序号的变量的名称。
5)ivalue。用于指定选择列表中被选中选项的值,是一个具有排序号性质的值。 6)title。用于指定选择列表的标题。
7)tabindex。用于指定当前选择光标在选择列表中的具体位置,该位置即为当前选择操作将要选择的选项所在的位置。
3.5.3 option元素
option元素用于定义select元素中的一组单选项。它通过<option>和</option>标签进行定义,并可包括事件和单选项的显示文本等
信息,其语法格式如下:
<option title="label" value="value" onpick="href">
内容(content)
</option>
option元素的属性均为可选,各属性功能及用法说明如下:
1)value。该属性用于设置键值。当用户选到该选项之后,option元素就会将该值赋给selet元素的name属性所指定的变量。
2)title。用于option元素制定的一个标题,以便提示用户操作。
3)onpick。该属性用于指定用户选到该项并按accept键后所打开卡片组的L。
3.5.4 optgroup元素
optgroup元素用于将多个相关的option元素进行分组,用户浏览器可以借助这种分组来安排选项列表的显示布局,以方便用户选择。
optgroup元素是通过<optgroup>和</optgroup>标签进行定义的,其语法格式如下:
<optgroup title="label">
内容(content)
</optgroup>
它所包含的内容中需要包含至少一次option元素或其他的optgroup元素。
optgroup元素只有一个属性,即title属性,用于定义optgroup元素的标题,以便提示用户操作。
3.5.5 fieldset元素
fieldset元素用于设定输入框和相应的说明文本,从而用户就可以利用input元素等借助该输入框输入所需的数据信息。fieldset元
素的语法格式如下:
<fieldset title="label">
内容(content)
</fieldset>
由于fieldset元素和输入有关,所以它们的内容中可以包含与输入有关的其他元素。 其语法格式可以看出,fieldset元素只有一个
属性,即title属性,用于定义fieldset元素的标题,以便提示用户操作。
最新技术文章: