当前位置: 编程技术>移动开发
本页文章导读:
▪转:WAP开发入门与增高之WML语言的基本知识 转:WAP开发入门与提高之WML语言的基本知识
第二部分:WML基础概念 -- WML语言的基本知识2.3 WML语言的基本知识上一节我们介绍了WML程序的基本结构,接下来我们介绍WML语言的基本知识,主.........
▪ WAP开发入门与增高之WML Script介绍三 WAP开发入门与提高之WML Script介绍三
转自:http://bbs.xml.org.cn/dispbbs.asp?boardID=77&ID=590884.5 操作符与表达式在WMLScript中,表达式可以把变量、常量与操作符结合起来,经过运算能够产生一定.........
▪ WAP开发入门与增高之卡片、卡片组及其属型 WAP开发入门与提高之卡片、卡片组及其属型
第二部分:WML详解(二)-- 卡片、卡片组及其属型元素和标签是WML的主要语法,它们决定了WML编程的基本原则。本章我们将从WML的元素、标签、属.........
[1]转:WAP开发入门与增高之WML语言的基本知识
来源: 互联网 发布时间: 2014-02-18
转:WAP开发入门与提高之WML语言的基本知识
第二部分:WML基础概念 -- WML语言的基本知识
2.3 WML语言的基本知识
上一节我们介绍了WML程序的基本结构,接下来我们介绍WML语言的基本知识,主要包括WML的字符集、变量、数据类型及WML程序的基本组成部分等。
2.3.1 WML的字符集及编码
WML使用XML的字符集,即通用字符集ISO/IEC-1062.,也即统一字符编码标准Unicode 2.0。同时,WML还支持其他系列的字符集子集,例如UTF-8、ISO-8859-1或UCS-2等。其中:
UTF-8是指通用字符集UCS(Universal Character Set)的转换格式8(Transformation Format,主要传输国际字符集的转换编码。UTF-8采用了UCS字符的8位编码,提供了十分安全的编码格式,可以有效避免数据传输过程中的窃@听、截取及非法解密。同时,UTF-8与7位ACSII码完全兼容,不会影响此类编码实现的程序;它的编码规则十分严格,能够有效避免同步传输错误,而且还会支持其它字符集提供了足够的空间。
ISO-8859-1字符集是国际标准化组织ISO(International Standardization Organization)制定的ACSII字符集的扩展集,能够表示所有西欧语言的字符。与ISO Latin-1一样,ISO-8859-1与Windows环境中普遍使用的美国国家标准协会ANSI(American National Standards Institute)的字符集极为类似,绝大多数情况下无需区分。在不特别指明的情况下,HTTP协议均使用ISOLatin-1字符集。因此,为了 WML页面中表示非ACSII(non-ACSII)字符,开发人员需要使用相应的ISO Latin-1编码的字符。
UCS-2是ISO 1062.标准中自定义的通用多8位编码字符集(Universal Multiple-Octer Coded Character Set)的2字节(即16位)编码标准,其字符编码值与Unicode字符的标准编码值相等。
WML文档可以采用HTML 2.0规范所定义的任何字符编码标准经编码处理。一般说来,WML文档的字符编码是需要转换为另外的编码格式,以与WAP用户的手机浏览器所用字符标准相适应,否则,手机浏览器就无法显示WML页面中的字符。然而,编码转换时可能会丢失一些字符信息,所以,如果在用户端进行WML文档的编码转换,那么就可能导致某些结果信息丢失而不能被用户所浏览。因此,如有必要,我们应当尽量在WML页面传送到用户浏览器之前完成编码转换。
为了解决这一问题,一方面,我们需要为Web服务器补充定义WML的数据类型,以让服务器可以准确传输这些数据,另一方面,我们需要制订编码转换的原则。
2.3.2 WML字符使用基本规则
WML是一种比较严格的语言,字符使用必须遵守相应的规则,这些基本规则主要包括以下几个方面:
1)大小写敏感。在WML中,无论是标签元素还是属性内容都是大小写敏感的,这一点继承了XML的严格特性,任何大小写错误都可能导致访问错误。
一般来说,WML的所有标签,属性,规定和枚举及它们的可接受值必须小写,Card的名字和变量可大写和小写,但它是区分大小写的。包括参数的名字和参数的数值都是大小写敏感的,例如variable1、Variable1和vaRiable1都是不同的参数。 2)空格。对于连续的空字符,程序运行时只需要一个空格。属性名、符号(=)和值之间不能有空格。
3)标签。标签内属性的值必须使用双引号(")或单引号(')括起来。对于不成对出现的标签,必须在大于号(>)前加上顺斜杠(/),比如换行标签必须写成<br/>才正确。
4)不显示的内容。在WML中,不显示的字符主要包括换行符、回车符、空格和水平制表符,它们的8位十六进制内码分别为10、13、32及9。
程序执行时,WML将忽视所有的多于一个以上的不显示字符,即WML会把一个或多个连续的换行、回车、水平制表符及空格转换成一个空个。
5)保留字符。这是WML的一些特殊字符,如小于号(<)、大于号(>)、单引号“'”、双引号“"”、和号(&)。
6)显示汉字。如果希望WML程序执行时能够显示汉字,则只需要程序开头使用encoding指定汉字字符集即可。例如:<?xml version="1.0" encoding="gb2312">。
注意:指定汉字字符集的形式和方法可能因为开发工具或WAP手机的不同而不同。
2.3.3 变量
WML编程中可以使用变量,变量使用前必须进行定义。变量一旦在Deck中的某一个Card上定义过,其他Card则可以不必重新定义就能直接调用该变量。
定义变量的语法格式为:
$identifier
$(identifier)
$(identifier:conversion)
其中identifier指变量名,或说变量标示符;conversion指变量的替代。
变量名是由US-ACSII码、下划线和数字组成的,并且只能以US-ACSII码开头。变量名严格区分大小写,也即,变量名是大小写敏感的。
定义变量的语法在WML中享有最高的解释优先级。
有关变量的使用说明如下:
1)在WML中,变量可以在字符串中使用,并且在运行中可以更新变量的值。
2)当变量等同于空字符串时,变量将处于未设置状态,也就是空(Null)。
3)当变量不等同于空字符串时,变量将处于设置状态,也就是非空(Not Null)状态。
4)在“$identifier”形式下,WML通常以变量名后面的一个空格表示该变量名的结束。如果在某些情况下空格无法表示一个变量名的结束,或者变量名中包含有空格,则必须使用括号将变量名括起来,即采用“$(identifier)”的形式。
WML程序中的变量是可以替代的,我们可以把变量的数值赋给Card中的某一文本。有关变量替代说明如下:
1)在WML程序中,只有文本部分才可以实现替代。
2)替代一般在运行期发生,而且替代不会影响变量现在的值。
3)任何标签是按照字符串替代的方式实现的。
4)替代是按照字符串替代的方式实现的。
由于变量在语法中有最好的优先级,包含变量声明字符的字符串将被当作变量对待,所以如果要使程序显示“$”符号,则需要连续使用两个“$”进行说明。例如:<p> Your acconut has $$15.00 in it </p>一句显示的结果为:Your account has $15.00 in it。
2.3.4. WML核心数据类型
WML的核心数据类型均属于字符型数据,是根据XML的数据类型定义的,共有下述2.掷嘈停?1)CDATA型。这种数据类型是WML用得最多的一种,可以是数字、字符串或包含数字的字符串。不过定义时,不论是数字或字符串,都必须以文本的形式定义,及数据用引号引起来。CDATA型的数据仅用于属性值。例如"$(value)"或name="value"等。注意,这里的value指CDATA型的数据值。
2)PCDATA型。这是从CDATA中分解出来的一类数据,除了可以是文本形式的数字、字符串或两者的混合串外,还可以是WML的标签。PCDATA型的数据只能用于WML的元素表示。
3)NMTOKEN型。这是一类特殊的数据,凡是包含或部分包含数字、字母及标点符号的数据均属于NMTOKEN型数据。这种数据可以用标点符号开头,但不用于定义变量名或元素名。
4)id型。专门用于定义WML元素名称的数据类型。
在这2.掷嘈椭校珻DATA型用起来比较灵活,它可以使变量或数据免于语法检查。这是因为,CDATA内的数据内容都会被当作文本来处理,从而可以避免WML的语法检查,直接作为文本显示出来。
2.3.5 WML数据值性质
除了NMTOKEN型数据外,WML其他3种数据都必须以文本形式即加上引号进行定义。我们关心的问题是,这些类型的数据可以表示哪些数据值呢?或者说,它们所表示的数据值的性质是什么呢?
事实上,WML数据只在性质上可以是长度(Length)、宏变量(Vdata)、流(Flow)、内行(Inline)、布局(Layout)、文本(Text)、超链(Href)、布尔值(Boolean)、数据(Number)或增强方式(Emphasis)。
2.3.6 卡片与卡片组
前面我们分析了WML程序的结构时,曾将讲到WML文档的信息是通过卡片集和卡片组集的形式进行组织的。一个Deck是一个或多个Card的集合。当客户终端发出请求之后,WML即从网络上把Deck发送到客户的浏览器,Deck是服务器发送信息的最小单位。用户浏览器收到Deck后,可以浏览其中包含的所有Card。Card用于表示或描述一个或多个用户交互单位。
2.3.7 卡片组模板
同一卡片组通常会含有许多卡片,这些卡片的定义、属性或格式通常都大同小异。如果我们逐一定义各个卡片,显然是十分麻烦的。为此,WML提供了卡片组模板的功能,模板内定义了一系列标准和参数,可以应用到同一卡片组的所有卡片中去,从而能够大大地提高我们的编程效率。有关卡片组模板的内容我们后面会专门介绍的。
2.3.8 WML与URL、程序段锚点
我们知道,环球网WWW是各种信息和设备的网络,为保证全球范围内的交互,人们制定了3种规范:其一,统一资源定位器URL提供所有网络资源的标准命名方式和定位方式;其二,标准协议,如HTTP协议等,提供WWW资源的传输方式;其三。标准内容类型,如HTML、WML,提供WWW资源的内容形式及标准。WML沿用了这些规范,并扩大了URL使用的范围。在WML中,不仅超连接、文件路径及文件名可以作为URL处理,卡片名、宏变量名及各种内部资源名等也可作为URL处理。
为此,WML改进了HTML命名资源位置的方式,采用程序锚点(Fragment Anchor)的形式来处理WML程序中某段程序的地位。程序段锚点根据文档WML规则进行定义,并按照程序段表示符前加井字好(#)的方式书写。使用程序段锚点,WML程序可以在同一卡片组中定位不同的卡片。如果在程序中不指定程序段,那么程序中引用的URL名称则指整个卡片组,而且卡片组的名称同时也是本卡片组内的第一个卡片的名称。 2.3.9 浏览器操作历史
为了在浏览器端管理WML程序的执行,WML使用“浏览器前后关系”的功能保存WML程序执行的状态及各种参数、变量等,这样可以用来记录用户的操作情况。同时,WML还提供了一个简单的导航历史模型,以URL地址的形式记录了用户浏览时的各种操作,并把这些URL地址放入历史推栈。通过推栈,用户即可实现历史浏览的回潮及其它操作。
第二部分:WML基础概念 -- WML语言的基本知识
2.3 WML语言的基本知识
上一节我们介绍了WML程序的基本结构,接下来我们介绍WML语言的基本知识,主要包括WML的字符集、变量、数据类型及WML程序的基本组成部分等。
2.3.1 WML的字符集及编码
WML使用XML的字符集,即通用字符集ISO/IEC-1062.,也即统一字符编码标准Unicode 2.0。同时,WML还支持其他系列的字符集子集,例如UTF-8、ISO-8859-1或UCS-2等。其中:
UTF-8是指通用字符集UCS(Universal Character Set)的转换格式8(Transformation Format,主要传输国际字符集的转换编码。UTF-8采用了UCS字符的8位编码,提供了十分安全的编码格式,可以有效避免数据传输过程中的窃@听、截取及非法解密。同时,UTF-8与7位ACSII码完全兼容,不会影响此类编码实现的程序;它的编码规则十分严格,能够有效避免同步传输错误,而且还会支持其它字符集提供了足够的空间。
ISO-8859-1字符集是国际标准化组织ISO(International Standardization Organization)制定的ACSII字符集的扩展集,能够表示所有西欧语言的字符。与ISO Latin-1一样,ISO-8859-1与Windows环境中普遍使用的美国国家标准协会ANSI(American National Standards Institute)的字符集极为类似,绝大多数情况下无需区分。在不特别指明的情况下,HTTP协议均使用ISOLatin-1字符集。因此,为了 WML页面中表示非ACSII(non-ACSII)字符,开发人员需要使用相应的ISO Latin-1编码的字符。
UCS-2是ISO 1062.标准中自定义的通用多8位编码字符集(Universal Multiple-Octer Coded Character Set)的2字节(即16位)编码标准,其字符编码值与Unicode字符的标准编码值相等。
WML文档可以采用HTML 2.0规范所定义的任何字符编码标准经编码处理。一般说来,WML文档的字符编码是需要转换为另外的编码格式,以与WAP用户的手机浏览器所用字符标准相适应,否则,手机浏览器就无法显示WML页面中的字符。然而,编码转换时可能会丢失一些字符信息,所以,如果在用户端进行WML文档的编码转换,那么就可能导致某些结果信息丢失而不能被用户所浏览。因此,如有必要,我们应当尽量在WML页面传送到用户浏览器之前完成编码转换。
为了解决这一问题,一方面,我们需要为Web服务器补充定义WML的数据类型,以让服务器可以准确传输这些数据,另一方面,我们需要制订编码转换的原则。
2.3.2 WML字符使用基本规则
WML是一种比较严格的语言,字符使用必须遵守相应的规则,这些基本规则主要包括以下几个方面:
1)大小写敏感。在WML中,无论是标签元素还是属性内容都是大小写敏感的,这一点继承了XML的严格特性,任何大小写错误都可能导致访问错误。
一般来说,WML的所有标签,属性,规定和枚举及它们的可接受值必须小写,Card的名字和变量可大写和小写,但它是区分大小写的。包括参数的名字和参数的数值都是大小写敏感的,例如variable1、Variable1和vaRiable1都是不同的参数。 2)空格。对于连续的空字符,程序运行时只需要一个空格。属性名、符号(=)和值之间不能有空格。
3)标签。标签内属性的值必须使用双引号(")或单引号(')括起来。对于不成对出现的标签,必须在大于号(>)前加上顺斜杠(/),比如换行标签必须写成<br/>才正确。
4)不显示的内容。在WML中,不显示的字符主要包括换行符、回车符、空格和水平制表符,它们的8位十六进制内码分别为10、13、32及9。
程序执行时,WML将忽视所有的多于一个以上的不显示字符,即WML会把一个或多个连续的换行、回车、水平制表符及空格转换成一个空个。
5)保留字符。这是WML的一些特殊字符,如小于号(<)、大于号(>)、单引号“'”、双引号“"”、和号(&)。
6)显示汉字。如果希望WML程序执行时能够显示汉字,则只需要程序开头使用encoding指定汉字字符集即可。例如:<?xml version="1.0" encoding="gb2312">。
注意:指定汉字字符集的形式和方法可能因为开发工具或WAP手机的不同而不同。
2.3.3 变量
WML编程中可以使用变量,变量使用前必须进行定义。变量一旦在Deck中的某一个Card上定义过,其他Card则可以不必重新定义就能直接调用该变量。
定义变量的语法格式为:
$identifier
$(identifier)
$(identifier:conversion)
其中identifier指变量名,或说变量标示符;conversion指变量的替代。
变量名是由US-ACSII码、下划线和数字组成的,并且只能以US-ACSII码开头。变量名严格区分大小写,也即,变量名是大小写敏感的。
定义变量的语法在WML中享有最高的解释优先级。
有关变量的使用说明如下:
1)在WML中,变量可以在字符串中使用,并且在运行中可以更新变量的值。
2)当变量等同于空字符串时,变量将处于未设置状态,也就是空(Null)。
3)当变量不等同于空字符串时,变量将处于设置状态,也就是非空(Not Null)状态。
4)在“$identifier”形式下,WML通常以变量名后面的一个空格表示该变量名的结束。如果在某些情况下空格无法表示一个变量名的结束,或者变量名中包含有空格,则必须使用括号将变量名括起来,即采用“$(identifier)”的形式。
WML程序中的变量是可以替代的,我们可以把变量的数值赋给Card中的某一文本。有关变量替代说明如下:
1)在WML程序中,只有文本部分才可以实现替代。
2)替代一般在运行期发生,而且替代不会影响变量现在的值。
3)任何标签是按照字符串替代的方式实现的。
4)替代是按照字符串替代的方式实现的。
由于变量在语法中有最好的优先级,包含变量声明字符的字符串将被当作变量对待,所以如果要使程序显示“$”符号,则需要连续使用两个“$”进行说明。例如:<p> Your acconut has $$15.00 in it </p>一句显示的结果为:Your account has $15.00 in it。
2.3.4. WML核心数据类型
WML的核心数据类型均属于字符型数据,是根据XML的数据类型定义的,共有下述2.掷嘈停?1)CDATA型。这种数据类型是WML用得最多的一种,可以是数字、字符串或包含数字的字符串。不过定义时,不论是数字或字符串,都必须以文本的形式定义,及数据用引号引起来。CDATA型的数据仅用于属性值。例如"$(value)"或name="value"等。注意,这里的value指CDATA型的数据值。
2)PCDATA型。这是从CDATA中分解出来的一类数据,除了可以是文本形式的数字、字符串或两者的混合串外,还可以是WML的标签。PCDATA型的数据只能用于WML的元素表示。
3)NMTOKEN型。这是一类特殊的数据,凡是包含或部分包含数字、字母及标点符号的数据均属于NMTOKEN型数据。这种数据可以用标点符号开头,但不用于定义变量名或元素名。
4)id型。专门用于定义WML元素名称的数据类型。
在这2.掷嘈椭校珻DATA型用起来比较灵活,它可以使变量或数据免于语法检查。这是因为,CDATA内的数据内容都会被当作文本来处理,从而可以避免WML的语法检查,直接作为文本显示出来。
2.3.5 WML数据值性质
除了NMTOKEN型数据外,WML其他3种数据都必须以文本形式即加上引号进行定义。我们关心的问题是,这些类型的数据可以表示哪些数据值呢?或者说,它们所表示的数据值的性质是什么呢?
事实上,WML数据只在性质上可以是长度(Length)、宏变量(Vdata)、流(Flow)、内行(Inline)、布局(Layout)、文本(Text)、超链(Href)、布尔值(Boolean)、数据(Number)或增强方式(Emphasis)。
2.3.6 卡片与卡片组
前面我们分析了WML程序的结构时,曾将讲到WML文档的信息是通过卡片集和卡片组集的形式进行组织的。一个Deck是一个或多个Card的集合。当客户终端发出请求之后,WML即从网络上把Deck发送到客户的浏览器,Deck是服务器发送信息的最小单位。用户浏览器收到Deck后,可以浏览其中包含的所有Card。Card用于表示或描述一个或多个用户交互单位。
2.3.7 卡片组模板
同一卡片组通常会含有许多卡片,这些卡片的定义、属性或格式通常都大同小异。如果我们逐一定义各个卡片,显然是十分麻烦的。为此,WML提供了卡片组模板的功能,模板内定义了一系列标准和参数,可以应用到同一卡片组的所有卡片中去,从而能够大大地提高我们的编程效率。有关卡片组模板的内容我们后面会专门介绍的。
2.3.8 WML与URL、程序段锚点
我们知道,环球网WWW是各种信息和设备的网络,为保证全球范围内的交互,人们制定了3种规范:其一,统一资源定位器URL提供所有网络资源的标准命名方式和定位方式;其二,标准协议,如HTTP协议等,提供WWW资源的传输方式;其三。标准内容类型,如HTML、WML,提供WWW资源的内容形式及标准。WML沿用了这些规范,并扩大了URL使用的范围。在WML中,不仅超连接、文件路径及文件名可以作为URL处理,卡片名、宏变量名及各种内部资源名等也可作为URL处理。
为此,WML改进了HTML命名资源位置的方式,采用程序锚点(Fragment Anchor)的形式来处理WML程序中某段程序的地位。程序段锚点根据文档WML规则进行定义,并按照程序段表示符前加井字好(#)的方式书写。使用程序段锚点,WML程序可以在同一卡片组中定位不同的卡片。如果在程序中不指定程序段,那么程序中引用的URL名称则指整个卡片组,而且卡片组的名称同时也是本卡片组内的第一个卡片的名称。 2.3.9 浏览器操作历史
为了在浏览器端管理WML程序的执行,WML使用“浏览器前后关系”的功能保存WML程序执行的状态及各种参数、变量等,这样可以用来记录用户的操作情况。同时,WML还提供了一个简单的导航历史模型,以URL地址的形式记录了用户浏览时的各种操作,并把这些URL地址放入历史推栈。通过推栈,用户即可实现历史浏览的回潮及其它操作。
[2] WAP开发入门与增高之WML Script介绍三
来源: 互联网 发布时间: 2014-02-18
WAP开发入门与提高之WML Script介绍三
转自:http://bbs.xml.org.cn/dispbbs.asp?boardID=77&ID=59088
4.5 操作符与表达式
在WMLScript中,表达式可以把变量、常量与操作符结合起来,经过运算能够产生一定的运算结果。表达式运算后产生的结果可以是整数型、浮点数型、字符串型或布尔型的数据。其实,对于表达式我们并不陌生,例如,1+2就是一个简单的表达式。
WMLScript的表达式主要有两种类型。一种是赋值表达式,即把数据赋给变量的一种表达式,例如,myBook=3,在这个表达式中,将3 赋给变量myBook,同时,这个表达式本身也有一个运算结果,那就是3。另外一种是运算表达式,它是指产生一个运算结果而不进行赋值操作的表达式,例如 1+2就是一个运算表达式,在这个表达式运算产生的结果是3, 但这个表达式并没有把运算结果赋给变量。
在表达式运算的过程中,表达式中操作一个或这两个数据产生运算的符号做操作符,被操作符操作的数据称作操作数,在WMLScript中我们会使用到各种操作符,下面就对操作符及有关的表达式进行详细讲解。
4.5.1 赋值操作符
赋值操作符用于赋值操作,即给变量指定所需的数值,它能把有操作数的运算结果给做操作数,最简单的赋值操作符就是“=”,例如x=2,就是将2赋值给变量x。在如以下几行语句都是赋值操作:
var="abc";
var b=a;
b="def";
赋值操作符不需要指定使用对象,也不会改变赋值操作符右边变量的数值。WMLScript的赋值操作符主要包括以下几种:
1.=。用于赋值操作,将有操作数赋给左操作。
2 +=。将有操作数与左操作数进行相见运算,然后把运算结果赋值给左操作数。例如,假设x=3,那么x+=2运算后的结果为x=5。
+=是比较特别的操作符,因为它可以将两个字符串相连,所以+=操作符也可以对字符串进行操作,然后将连接后的字符串赋给左操作数。例如,假设x="Happy",那么x+="new Year"运算后结果是x="Happy New Year"。
3.-=。将左操作数简取有操作数,然后把运算结果赋值给左操作数。例如,假设x=3那么x-=运算后的结果为x=1。
4*=。将左操作属于有操作符进行相乘运算,然后把运算结果赋值给左操作数。例如,假设x=6,那么x*=2运算后的结果为x=6。
5/=。将右操作属于右操作符进行相乘运算,然后把运算结果赋值给左操作数。例如,假设x=6,那么x*=2运算后的结果为x=6。
6div=。拥有操作数处理左操作数,然后把运算结果中的整数部分赋值给左操作数,例如x=7,那么xdiv=2运算后的结果为x=3。
7%=。功能是求余数并赋值,用右操作数除以做操作数,最后把运算得到的余数值给操作数。例如,假设x=7,那么x%=3运算后的结果为x=1。
8<<=。功能是带符号左位移并赋值,即将左操作和右操作数进行左位移操作,在将结果赋给左操作数。
9>>=。可将左操作和右操作进行右操作进行补零右位移操作,在将结果赋给左操作数。
4.5.2 数学运算操作符
数学运算操作符可以对数值类型的操作数进行运算,然后返回一个数值类型的运算结果。
1+。这是加运算操作等,它对应着数学运算中的加法运算,例如表达式1+2的运算结果为3。
加操作符还可以对字符串类型的操作数进行运算,然后将两个字符串相连起来作为运算
2- 。即检操作符,对应着速学运算中的减法运算,例如表达式2-1的运算结果为1。
同时,“-”还是一个取负操作符,当它作为取负操作符的是一个操作数,取负操作符的功能使返回操作数的相反数。
3*。这是乘操作符,它对应着数学运算中的乘法运算,例如表达式2*3的运算结果为6。
4/。即除操作符,对应着数学运算中的除法运算,但WMLScript中的除法运算有些特别,在WMLScript中,除法运算后的结果是一个浮点数,而不想C语言或者Java语言那样在整数进行除法运算式井运算结果强行转化整数。在WMLScript中,1/2=0.5,而在Jave中,1/2=0。
5div。这是整除操作符,对应着数学运算中的整数运算,运算后的结果一个整数,这一点与C语言或者Java语言中的情况是一样的,可以在整数进行除法运算式将运算结果强行转换整数。
6%。即取模操作符,它对应着数学运算中的取莫运算,也就是将两个操作相除,返回相除后的余数。
取模操作符主要用于判断一个数字是否能被另一个数字整除。
((the Year%3==0))&&(the Year%100!=0))||(the Year%400==0)
其中&&代表的是逻辑运算中的与运算,||代表的是逻辑运算中的或运算,关于逻辑运算,我们后面会详细介绍。
7++。这是递增操作符,它只有一个操作数,操作可以在操作符的左边,也可以在操作符的右边,它所完成的运算操作是将操作数加1。假设操作数名称为j,值为2,那么++j加1,然后返回j的值3;而j++则实现返回j的值2,然后将j加1。
在循环中,我们常常会用到递增操作符的作用正好相反。递减操作完成的运算操作是经操作数减1。例如,假设操作数名称为j,值为2,那么--j先将j减1,然后返回的值1;而j--是先返回j的值2,然后将j减1。
4.5.3 位操作符
为操作符在运算实现将操作转化32位的二进制数,然后对每个操作数分别按位进行运算,运算后在将二进制的结果按照标准WMLScript数值类型返回运算结束。
1&。这是为与操作符,它可以对两个操作数按位进行于操作,其运算规则是:
0&0=0,0&1=0,1&0=0,1&1=1
2|。这是位或操作符,它可以对两个操作数按位进行或操作,运算规则是:
0|0=0 ,0|1=1,1|0=1,1|1=1
3^。这是唯一或操作符,它可以对两个操作按位进行异或操作,其运算规则是:0^0=0,0^1=1,1^0=1,1^1=0
4~。这是位非操作符,它只有一个操作数,可对操作数按位进行非操作,运算规则是:~0=1,~=0
5<<。这是左移操作,它可以对左操作数进行向左一位的操作,由操作数给定了要移动的位数,在移动过程中,左操作数的最低为补充0。
6>>。这是右移操作符,它可以对左操作数进行向右移位的操作,由操作数给定要移动的位数,在移位的过程中,丢弃向右移的位。
7>>>。这是填0右移操作符,它与右移操作符相似。当对证正数进行操作时,它们的效果完全相同;不同之处在于,当进行负整数右移操作时,因为负责转化为二进制后,最高为1,所以在进行右移操作后,最高位仍然补充1,而在进行填0右移操作时,最高为补充的是0,因此,这是负数将转化为正数。
4.5.4 逻辑操作符
逻辑操作符可以将布尔类型的表达式组合起来,完成逻辑运算操作,然后返回逻辑运算的结果--真或假,这样就可以完成比较复杂的逻辑判断工作。逻辑操作共有3种;
1&&。即逻辑与操作符它只有在两个操作数都为ture的时候,返回结果为ture,在其他情况下,返回结果为false或者invalid。
2||。这是或操作符,它在两个操作数至少有一个为ture的时候,返回结果为ture,在其他情况下,返回结果为false或者invalid。
3!。即非操作符,它只有一个操作数。当操作数为ture时,返回结果为flase;返回结果为ture.
4.5.5 比较操作符
比较操作符可以把操作数进行比较,然后返回一个逻辑值,表明这个比较操作的结果是否为真。比较操作的操作数可以是数值类型或者字符串类型的数据。比较操作符也常被称为关系运算符。
WMLScript支持的比较操作符共有6种,下面被介绍一下。
1. ==。即等于操作符,它可以比较两个操作数是否相等。如果两个操作数相等,则返回ture,否则返回false
2. !=。即不等操作符。它可以比较两个操作数是否相等。如果两个操作数相等,则返回false,否则返回ture。
3. >。即大于操作等。其运算规则时,如果左操作数大于右操作数,则返回ture。
转自:http://bbs.xml.org.cn/dispbbs.asp?boardID=77&ID=59088
4.5 操作符与表达式
在WMLScript中,表达式可以把变量、常量与操作符结合起来,经过运算能够产生一定的运算结果。表达式运算后产生的结果可以是整数型、浮点数型、字符串型或布尔型的数据。其实,对于表达式我们并不陌生,例如,1+2就是一个简单的表达式。
WMLScript的表达式主要有两种类型。一种是赋值表达式,即把数据赋给变量的一种表达式,例如,myBook=3,在这个表达式中,将3 赋给变量myBook,同时,这个表达式本身也有一个运算结果,那就是3。另外一种是运算表达式,它是指产生一个运算结果而不进行赋值操作的表达式,例如 1+2就是一个运算表达式,在这个表达式运算产生的结果是3, 但这个表达式并没有把运算结果赋给变量。
在表达式运算的过程中,表达式中操作一个或这两个数据产生运算的符号做操作符,被操作符操作的数据称作操作数,在WMLScript中我们会使用到各种操作符,下面就对操作符及有关的表达式进行详细讲解。
4.5.1 赋值操作符
赋值操作符用于赋值操作,即给变量指定所需的数值,它能把有操作数的运算结果给做操作数,最简单的赋值操作符就是“=”,例如x=2,就是将2赋值给变量x。在如以下几行语句都是赋值操作:
var="abc";
var b=a;
b="def";
赋值操作符不需要指定使用对象,也不会改变赋值操作符右边变量的数值。WMLScript的赋值操作符主要包括以下几种:
1.=。用于赋值操作,将有操作数赋给左操作。
2 +=。将有操作数与左操作数进行相见运算,然后把运算结果赋值给左操作数。例如,假设x=3,那么x+=2运算后的结果为x=5。
+=是比较特别的操作符,因为它可以将两个字符串相连,所以+=操作符也可以对字符串进行操作,然后将连接后的字符串赋给左操作数。例如,假设x="Happy",那么x+="new Year"运算后结果是x="Happy New Year"。
3.-=。将左操作数简取有操作数,然后把运算结果赋值给左操作数。例如,假设x=3那么x-=运算后的结果为x=1。
4*=。将左操作属于有操作符进行相乘运算,然后把运算结果赋值给左操作数。例如,假设x=6,那么x*=2运算后的结果为x=6。
5/=。将右操作属于右操作符进行相乘运算,然后把运算结果赋值给左操作数。例如,假设x=6,那么x*=2运算后的结果为x=6。
6div=。拥有操作数处理左操作数,然后把运算结果中的整数部分赋值给左操作数,例如x=7,那么xdiv=2运算后的结果为x=3。
7%=。功能是求余数并赋值,用右操作数除以做操作数,最后把运算得到的余数值给操作数。例如,假设x=7,那么x%=3运算后的结果为x=1。
8<<=。功能是带符号左位移并赋值,即将左操作和右操作数进行左位移操作,在将结果赋给左操作数。
9>>=。可将左操作和右操作进行右操作进行补零右位移操作,在将结果赋给左操作数。
4.5.2 数学运算操作符
数学运算操作符可以对数值类型的操作数进行运算,然后返回一个数值类型的运算结果。
1+。这是加运算操作等,它对应着数学运算中的加法运算,例如表达式1+2的运算结果为3。
加操作符还可以对字符串类型的操作数进行运算,然后将两个字符串相连起来作为运算
2- 。即检操作符,对应着速学运算中的减法运算,例如表达式2-1的运算结果为1。
同时,“-”还是一个取负操作符,当它作为取负操作符的是一个操作数,取负操作符的功能使返回操作数的相反数。
3*。这是乘操作符,它对应着数学运算中的乘法运算,例如表达式2*3的运算结果为6。
4/。即除操作符,对应着数学运算中的除法运算,但WMLScript中的除法运算有些特别,在WMLScript中,除法运算后的结果是一个浮点数,而不想C语言或者Java语言那样在整数进行除法运算式井运算结果强行转化整数。在WMLScript中,1/2=0.5,而在Jave中,1/2=0。
5div。这是整除操作符,对应着数学运算中的整数运算,运算后的结果一个整数,这一点与C语言或者Java语言中的情况是一样的,可以在整数进行除法运算式将运算结果强行转换整数。
6%。即取模操作符,它对应着数学运算中的取莫运算,也就是将两个操作相除,返回相除后的余数。
取模操作符主要用于判断一个数字是否能被另一个数字整除。
((the Year%3==0))&&(the Year%100!=0))||(the Year%400==0)
其中&&代表的是逻辑运算中的与运算,||代表的是逻辑运算中的或运算,关于逻辑运算,我们后面会详细介绍。
7++。这是递增操作符,它只有一个操作数,操作可以在操作符的左边,也可以在操作符的右边,它所完成的运算操作是将操作数加1。假设操作数名称为j,值为2,那么++j加1,然后返回j的值3;而j++则实现返回j的值2,然后将j加1。
在循环中,我们常常会用到递增操作符的作用正好相反。递减操作完成的运算操作是经操作数减1。例如,假设操作数名称为j,值为2,那么--j先将j减1,然后返回的值1;而j--是先返回j的值2,然后将j减1。
4.5.3 位操作符
为操作符在运算实现将操作转化32位的二进制数,然后对每个操作数分别按位进行运算,运算后在将二进制的结果按照标准WMLScript数值类型返回运算结束。
1&。这是为与操作符,它可以对两个操作数按位进行于操作,其运算规则是:
0&0=0,0&1=0,1&0=0,1&1=1
2|。这是位或操作符,它可以对两个操作数按位进行或操作,运算规则是:
0|0=0 ,0|1=1,1|0=1,1|1=1
3^。这是唯一或操作符,它可以对两个操作按位进行异或操作,其运算规则是:0^0=0,0^1=1,1^0=1,1^1=0
4~。这是位非操作符,它只有一个操作数,可对操作数按位进行非操作,运算规则是:~0=1,~=0
5<<。这是左移操作,它可以对左操作数进行向左一位的操作,由操作数给定了要移动的位数,在移动过程中,左操作数的最低为补充0。
6>>。这是右移操作符,它可以对左操作数进行向右移位的操作,由操作数给定要移动的位数,在移位的过程中,丢弃向右移的位。
7>>>。这是填0右移操作符,它与右移操作符相似。当对证正数进行操作时,它们的效果完全相同;不同之处在于,当进行负整数右移操作时,因为负责转化为二进制后,最高为1,所以在进行右移操作后,最高位仍然补充1,而在进行填0右移操作时,最高为补充的是0,因此,这是负数将转化为正数。
4.5.4 逻辑操作符
逻辑操作符可以将布尔类型的表达式组合起来,完成逻辑运算操作,然后返回逻辑运算的结果--真或假,这样就可以完成比较复杂的逻辑判断工作。逻辑操作共有3种;
1&&。即逻辑与操作符它只有在两个操作数都为ture的时候,返回结果为ture,在其他情况下,返回结果为false或者invalid。
2||。这是或操作符,它在两个操作数至少有一个为ture的时候,返回结果为ture,在其他情况下,返回结果为false或者invalid。
3!。即非操作符,它只有一个操作数。当操作数为ture时,返回结果为flase;返回结果为ture.
4.5.5 比较操作符
比较操作符可以把操作数进行比较,然后返回一个逻辑值,表明这个比较操作的结果是否为真。比较操作的操作数可以是数值类型或者字符串类型的数据。比较操作符也常被称为关系运算符。
WMLScript支持的比较操作符共有6种,下面被介绍一下。
1. ==。即等于操作符,它可以比较两个操作数是否相等。如果两个操作数相等,则返回ture,否则返回false
2. !=。即不等操作符。它可以比较两个操作数是否相等。如果两个操作数相等,则返回false,否则返回ture。
3. >。即大于操作等。其运算规则时,如果左操作数大于右操作数,则返回ture。
[3] WAP开发入门与增高之卡片、卡片组及其属型
来源: 互联网 发布时间: 2014-02-18
WAP开发入门与提高之卡片、卡片组及其属型
第二部分:WML详解(二)-- 卡片、卡片组及其属型
元素和标签是WML的主要语法,它们决定了WML编程的基本原则。本章我们将从WML的元素、标签、属性等方面详细讲解WML的编程方法
。学习本章知识之前,读者应当了解WML元素与标签的区别。WML的元素通常有一个首标签、内容、其它元素及一个尾标签组成。也就
说,单独的标签是一个元素,成对出现的标签与其包含的内容也构成一个元素。由于元素牵涉及标签,标签又涉及属性。
3.1 卡片、卡片组及其属性
我们前面介绍了WML的卡片与卡片组,主要从概念和相互关系的角度进行了分析。我们这里则从卡片、卡片组的组成、相关元素、标
签技术性等编程角度进行分析和讲解。
3.1.1 共有属性
WML元素的共有属性主要有3个:id、class和xml:lang属性。
WML的所有元素都有两个核心属性,即标示(id)和类(class)属性。它们主要用于服务器方的信息传输。其中,id属性用于定义元
素在卡片组中的唯一标示,即它的名称;class属性用于给当前元素定义一个或更多的类(class)。与卡片组一样,类(class)也
是有名字的,而且多个元素可以使用一个类(class)名。具有相同类名的单一卡片组中的所有元素均可被看作相同类的一个部分。
类名是区分大小写的。如果在class属性列表中,一个元素多个唯一的类名,那么该元素可以看作这些类中的一部分。具有同一属性
的多个类名必须用两个以上的空格间隔,WML程序执行时将忽视其中多余的类名及其属性。
另外,在WML程序,所有包含文本的元素均具有“xml:lang”属性。该属性用于指定当前元素及其属性所用的描述语言,如英国英语
、美国英语、法语、德语等,并可以为用户浏览器选择显示文本的语言提供依据。
3.1.2 WML程序的文件头
合法的WML卡片组均属合法的WML文件,因此它必须包含WML的声明及文件类型的声明。典型的WML程序的文件头包括我们前面多次提到
的以下两行程序:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//wapforun//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
编写WML程序时,我们必须写入这两行程序,并放在程序的开始处。其中"-//wapforun//DTD WML 1.1//EN"是标准通用标记语言SGML
的公共标示;"http://www.wapforum.org/DTD/wml_1.1.xml"是WML程序文档类型的标示。文档类型标示也可以是"text/vnd.wap.wml"
或“application/vnd.wap.wmlc”,其中前者制定WML的原文类型,后者贫╓ML程序编译后代码类型。
3.1.3 WML元素
WML的WML元素用于定义一个卡片组,并通过<wml>与</wml>标签包含和封装该卡片组中的所有卡片及信息。它的语法格式如下:
<wml xml:lang="lang">
内容(content)
</wml>
其中xml:lang="lang"用于指定文档所用语言(前面已有介绍),语言"lang"的值属于NMTOKEN型数据。
wml元素中包含的内容(content)中除了文本、图像等信息之外,还可以包含head、template及card元素。其中head、template元素
如果包含的话则只可包含一次,而card元素必须至少包含一次。有关这些元素的用法我们后面介绍。
3.1.4 template元素
template元素用于为当前卡片组中的所有卡片定义一个模板,同一规定卡片的某些参数。模版中的事件处理功能则可将这些参数自动
应用于同一卡片组中的所有卡片。不过,我们也可以是其中某个或某几个卡片不采用模板规定的形式,方法是在该卡片中定义一个同
名的事件来替代模板块中相应的事件。template元素通过<template>和</template>标签含所需内容(content)而实现模板功能的,
其语法格式如下:
<template oneterforward="href" onenterbackwared="href" ontimer="href">
内容(content)
</template>
template元素包含的内容中,除了卡片的一般参数外,还可以包含任意多次的do元素和onevent元素。template元素属性的功能及用
法说明如下:
1)oneterforward。当用户在浏览器中进入当前卡片时,该属性将指定超链(href)的URL地址,浏览器将据此打开URL指定的卡片或
事件。
2)oneterbackward。与上一属性类似,该属性也可以指定其相应卡片或事件的URL地址。如果用户浏览时执行prev任务,那么浏览器
就会定位到该属性所指定超链(href)的URL地址,并打开URL指定的卡片或事件。
3)ontimer。当指定时间timer过期的时候,用户浏览器就根据ontimer属性指定的URL打开相应的卡片。
3.1.5 card元素
WML的卡片组是由一个或多个卡片(card)构成的,每个卡片都包含有一套用户和浏览器交互操作的配置及模式。用户对交互操作的
需求是多样性的,所以卡片定义时也必须是多样性的。为此,WML提供了card元素,通过<card>和</card>标签定义一个卡片的各种属
性、包含内容。它的语法格式如下:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
card元素中包含的内容(content)中除了文本、图像信息之外,还可以包含onevent、timer、do和p元素。其中,timer元素只可使
用一次,其余3种可使用多次。而且,如果card元素包含onevent元素或timer元素的话,那么onevent元素必须放在最前面,timer元
素放在onevent元素的后面,随后才可以使用do或p元素。这个优先顺序是不能乱的。
card元素属性的功能及用法介绍如下:
1)id。用于指定card的名字。改名字是程序导航定位的依据,可以用作程序段锚点,比如<go href="#cardname"/>。其中的
cardname便是由id指定的卡片名。
2)title。用于为卡片制订一个简单的标题或说明信息。
3)newcontext。用于指定WAP手机浏览当用户重新进入的时候是否需要初始化卡片中所有的内容。它有true和false两种选择,当指
定newcontext="ture"时,卡片的所有内容在用户重新进入时将进行初始化,也不清除历史纪录;否则,指定newcontext="false"时
,将不进行初始化设置,也不清除历史纪录。默认状态下的设置值为false。另外,newcontext仅当作为go任务的一部分时才可被执
行。
4)ordered。用于向用户手机的浏览器指明卡片内容的组织形式,以便让浏览器根据自身特点及卡片内容组织及时安排显示布局。它
有两种布尔值得设置,即true和false。
当ordered="true"时,浏览器将按照线性顺序显示卡片各区域的内容。这个线性顺序通常是大多数用户所习惯采用的信息浏览顺序,
比如发送E-mail信息时,我们依次需要E-mail首件人地址、主题及E-mail内容,这个逻辑顺序就数线性顺序。
当ordered="flase"时,浏览器将根据用户选择或指定的顺序来显示内容。这种情况主要是用于显示用户选项、无序组建或用户输入
的简单数据纪录等。
5)onenterforward。onenterforward事件仅当用户使用go任务或类似于go的任务位和浏览卡片时才可发生,即如果用户执行go任务
,则浏览器就会定位<go>标签中指定超链(href)的URL指定的卡片。card元素中的onenterforward属性是onevent元素的一个简单格式
,用于直接指定onenterforward事件的URL地址。
6)onenterbackward。该属性可以指定其响应时间的URL地址。如果用户浏览时执行prev任务,那么浏览器就会定位到该属性所制定
超链 (href)的URL地址,并打开URL指定的卡片。onenterbackward属性也属于onevent元素的一个简单格式。
7)ontimer。当指定时间timer过期的时候,用户浏览器就根据ontimer属性指定的URL打开相应的卡片。它也属于onevent元素的一个
简单格式。
3.1.7 access元素
access元素是由一个单独的的标签<access>标签实现的元素。用于定义WML整个卡片组的操作权限,即访问控制参数。access元素必
须在head元素内和其它的meta信息一起声明,而且每个卡片组只能有一个access元素。其语法格式如下:
<head>
<access domain="domain" path="path">
...
</head>
access元素属性的功能及用法如下:
1)domain。用于指定对卡片组进行操作的URL域,默认域是当前卡片组所在的域。domain的目的是限制访问,用户浏览时浏览器将根
据domain值所规定的值来得出与值匹配的地址,并访问该地址对应的卡片或事件。 2)path。用于指定卡片组操作的其它卡片组所在
的根目录。默认目录是“/”,即当前卡片组所在的根目录。默认目录的规定使得所有在domain域下的卡片组都可以操作当前卡片组
。path的值是访问时需要匹配的路径,它的工作原理与domain十分相似,需要与路径的每个子路径相匹配,否则均属无效。
3.1.8 meta元素
meta元素用于定义WML卡片组相关的通用meta信息。该元素是由一个单独的标签即<meta/>标签实现的元素,其语法格式如下:
<meta name="name"|http-equiv="name" content="value" forua="true|false" scheme="format"/>
其中,name属性和http-equiv属性只能选择使用一个;content属性是必选的,其值根据属性而定;scheme属性目前尚不支持;forua
属性为可选属性。各属性功能及用法说明如下:
1)content。该属性用于指定meta信息的性质的值,是不必选的。
2)name。用于指定meta信息性质的名称。用户浏览器通常忽略已经命名meta数据,网络服务企业拒绝发送包含该属性所指定meta数
据名称的内容。
3)http-equiv。该属性用于替代name属性,可将meta数据转为WSP或HTTP协议的响应头。
4)forua。该属性用于指定那些开发者希望传送值用户浏览器的性质。它有ture和fales两个取值,如果取false,则卡片组在发送往
客户端以前必须用中间代理去除meta元素信息,这是因为传输的协议可能改变;若取值为true,则meta数据必须如实送往用户的浏览
器。默认的状态下,该属性的值为false。
5)scheme。该属性用于指定解释meta信息性质值的形式或结构。具体的形式或结构因meta数据的类型不同而不同。
第二部分:WML详解(二)-- 卡片、卡片组及其属型
元素和标签是WML的主要语法,它们决定了WML编程的基本原则。本章我们将从WML的元素、标签、属性等方面详细讲解WML的编程方法
。学习本章知识之前,读者应当了解WML元素与标签的区别。WML的元素通常有一个首标签、内容、其它元素及一个尾标签组成。也就
说,单独的标签是一个元素,成对出现的标签与其包含的内容也构成一个元素。由于元素牵涉及标签,标签又涉及属性。
3.1 卡片、卡片组及其属性
我们前面介绍了WML的卡片与卡片组,主要从概念和相互关系的角度进行了分析。我们这里则从卡片、卡片组的组成、相关元素、标
签技术性等编程角度进行分析和讲解。
3.1.1 共有属性
WML元素的共有属性主要有3个:id、class和xml:lang属性。
WML的所有元素都有两个核心属性,即标示(id)和类(class)属性。它们主要用于服务器方的信息传输。其中,id属性用于定义元
素在卡片组中的唯一标示,即它的名称;class属性用于给当前元素定义一个或更多的类(class)。与卡片组一样,类(class)也
是有名字的,而且多个元素可以使用一个类(class)名。具有相同类名的单一卡片组中的所有元素均可被看作相同类的一个部分。
类名是区分大小写的。如果在class属性列表中,一个元素多个唯一的类名,那么该元素可以看作这些类中的一部分。具有同一属性
的多个类名必须用两个以上的空格间隔,WML程序执行时将忽视其中多余的类名及其属性。
另外,在WML程序,所有包含文本的元素均具有“xml:lang”属性。该属性用于指定当前元素及其属性所用的描述语言,如英国英语
、美国英语、法语、德语等,并可以为用户浏览器选择显示文本的语言提供依据。
3.1.2 WML程序的文件头
合法的WML卡片组均属合法的WML文件,因此它必须包含WML的声明及文件类型的声明。典型的WML程序的文件头包括我们前面多次提到
的以下两行程序:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//wapforun//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
编写WML程序时,我们必须写入这两行程序,并放在程序的开始处。其中"-//wapforun//DTD WML 1.1//EN"是标准通用标记语言SGML
的公共标示;"http://www.wapforum.org/DTD/wml_1.1.xml"是WML程序文档类型的标示。文档类型标示也可以是"text/vnd.wap.wml"
或“application/vnd.wap.wmlc”,其中前者制定WML的原文类型,后者贫╓ML程序编译后代码类型。
3.1.3 WML元素
WML的WML元素用于定义一个卡片组,并通过<wml>与</wml>标签包含和封装该卡片组中的所有卡片及信息。它的语法格式如下:
<wml xml:lang="lang">
内容(content)
</wml>
其中xml:lang="lang"用于指定文档所用语言(前面已有介绍),语言"lang"的值属于NMTOKEN型数据。
wml元素中包含的内容(content)中除了文本、图像等信息之外,还可以包含head、template及card元素。其中head、template元素
如果包含的话则只可包含一次,而card元素必须至少包含一次。有关这些元素的用法我们后面介绍。
3.1.4 template元素
template元素用于为当前卡片组中的所有卡片定义一个模板,同一规定卡片的某些参数。模版中的事件处理功能则可将这些参数自动
应用于同一卡片组中的所有卡片。不过,我们也可以是其中某个或某几个卡片不采用模板规定的形式,方法是在该卡片中定义一个同
名的事件来替代模板块中相应的事件。template元素通过<template>和</template>标签含所需内容(content)而实现模板功能的,
其语法格式如下:
<template oneterforward="href" onenterbackwared="href" ontimer="href">
内容(content)
</template>
template元素包含的内容中,除了卡片的一般参数外,还可以包含任意多次的do元素和onevent元素。template元素属性的功能及用
法说明如下:
1)oneterforward。当用户在浏览器中进入当前卡片时,该属性将指定超链(href)的URL地址,浏览器将据此打开URL指定的卡片或
事件。
2)oneterbackward。与上一属性类似,该属性也可以指定其相应卡片或事件的URL地址。如果用户浏览时执行prev任务,那么浏览器
就会定位到该属性所指定超链(href)的URL地址,并打开URL指定的卡片或事件。
3)ontimer。当指定时间timer过期的时候,用户浏览器就根据ontimer属性指定的URL打开相应的卡片。
3.1.5 card元素
WML的卡片组是由一个或多个卡片(card)构成的,每个卡片都包含有一套用户和浏览器交互操作的配置及模式。用户对交互操作的
需求是多样性的,所以卡片定义时也必须是多样性的。为此,WML提供了card元素,通过<card>和</card>标签定义一个卡片的各种属
性、包含内容。它的语法格式如下:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href"
ontimer="href">
内容(content)
</card>
card元素中包含的内容(content)中除了文本、图像信息之外,还可以包含onevent、timer、do和p元素。其中,timer元素只可使
用一次,其余3种可使用多次。而且,如果card元素包含onevent元素或timer元素的话,那么onevent元素必须放在最前面,timer元
素放在onevent元素的后面,随后才可以使用do或p元素。这个优先顺序是不能乱的。
card元素属性的功能及用法介绍如下:
1)id。用于指定card的名字。改名字是程序导航定位的依据,可以用作程序段锚点,比如<go href="#cardname"/>。其中的
cardname便是由id指定的卡片名。
2)title。用于为卡片制订一个简单的标题或说明信息。
3)newcontext。用于指定WAP手机浏览当用户重新进入的时候是否需要初始化卡片中所有的内容。它有true和false两种选择,当指
定newcontext="ture"时,卡片的所有内容在用户重新进入时将进行初始化,也不清除历史纪录;否则,指定newcontext="false"时
,将不进行初始化设置,也不清除历史纪录。默认状态下的设置值为false。另外,newcontext仅当作为go任务的一部分时才可被执
行。
4)ordered。用于向用户手机的浏览器指明卡片内容的组织形式,以便让浏览器根据自身特点及卡片内容组织及时安排显示布局。它
有两种布尔值得设置,即true和false。
当ordered="true"时,浏览器将按照线性顺序显示卡片各区域的内容。这个线性顺序通常是大多数用户所习惯采用的信息浏览顺序,
比如发送E-mail信息时,我们依次需要E-mail首件人地址、主题及E-mail内容,这个逻辑顺序就数线性顺序。
当ordered="flase"时,浏览器将根据用户选择或指定的顺序来显示内容。这种情况主要是用于显示用户选项、无序组建或用户输入
的简单数据纪录等。
5)onenterforward。onenterforward事件仅当用户使用go任务或类似于go的任务位和浏览卡片时才可发生,即如果用户执行go任务
,则浏览器就会定位<go>标签中指定超链(href)的URL指定的卡片。card元素中的onenterforward属性是onevent元素的一个简单格式
,用于直接指定onenterforward事件的URL地址。
6)onenterbackward。该属性可以指定其响应时间的URL地址。如果用户浏览时执行prev任务,那么浏览器就会定位到该属性所制定
超链 (href)的URL地址,并打开URL指定的卡片。onenterbackward属性也属于onevent元素的一个简单格式。
7)ontimer。当指定时间timer过期的时候,用户浏览器就根据ontimer属性指定的URL打开相应的卡片。它也属于onevent元素的一个
简单格式。
3.1.7 access元素
access元素是由一个单独的的标签<access>标签实现的元素。用于定义WML整个卡片组的操作权限,即访问控制参数。access元素必
须在head元素内和其它的meta信息一起声明,而且每个卡片组只能有一个access元素。其语法格式如下:
<head>
<access domain="domain" path="path">
...
</head>
access元素属性的功能及用法如下:
1)domain。用于指定对卡片组进行操作的URL域,默认域是当前卡片组所在的域。domain的目的是限制访问,用户浏览时浏览器将根
据domain值所规定的值来得出与值匹配的地址,并访问该地址对应的卡片或事件。 2)path。用于指定卡片组操作的其它卡片组所在
的根目录。默认目录是“/”,即当前卡片组所在的根目录。默认目录的规定使得所有在domain域下的卡片组都可以操作当前卡片组
。path的值是访问时需要匹配的路径,它的工作原理与domain十分相似,需要与路径的每个子路径相匹配,否则均属无效。
3.1.8 meta元素
meta元素用于定义WML卡片组相关的通用meta信息。该元素是由一个单独的标签即<meta/>标签实现的元素,其语法格式如下:
<meta name="name"|http-equiv="name" content="value" forua="true|false" scheme="format"/>
其中,name属性和http-equiv属性只能选择使用一个;content属性是必选的,其值根据属性而定;scheme属性目前尚不支持;forua
属性为可选属性。各属性功能及用法说明如下:
1)content。该属性用于指定meta信息的性质的值,是不必选的。
2)name。用于指定meta信息性质的名称。用户浏览器通常忽略已经命名meta数据,网络服务企业拒绝发送包含该属性所指定meta数
据名称的内容。
3)http-equiv。该属性用于替代name属性,可将meta数据转为WSP或HTTP协议的响应头。
4)forua。该属性用于指定那些开发者希望传送值用户浏览器的性质。它有ture和fales两个取值,如果取false,则卡片组在发送往
客户端以前必须用中间代理去除meta元素信息,这是因为传输的协议可能改变;若取值为true,则meta数据必须如实送往用户的浏览
器。默认的状态下,该属性的值为false。
5)scheme。该属性用于指定解释meta信息性质值的形式或结构。具体的形式或结构因meta数据的类型不同而不同。
最新技术文章: