查看: 1599|回复: 0

无线标记语言(WML)基础之WML基本知识

[复制链接]

该用户从未签到

发表于 2007-10-26 15:30:17 | 显示全部楼层 |阅读模式
分享到:
 
 
1WML的字符集及编码
  WML使用XML的字符集,即通用字符集ISO/IEC-1062.,也即统一字符编码标准Unicode 2.0
    同时,WML还支持其他系列的字符集子集,例如UTF-8ISO-8859-1UCS-2等。其中:
  UTF-8是指通用字符集UCS(Universal Character Set)的转换格式8(Transformation Format 8),主要传输国际字符集的转换编码。UTF-8采用了UCS字符的8位编码,提供了十分安全的编码格式,可以有效避免数据传输过程中的窃听、截取及非法解密。同时,UTF-87ACSII码完全兼容,不会影响此类编码实现的程序;它的编码规则十分严格,能够有效避免同步传输错误,而且还会支持其它字符集提供了足够的空间。
  ISO-8859-1字符集是国际标准化组织ISO(International Standardization Organization)制定的ACSII字符集的扩展集,能够表示所有西欧语言的字符。与ISO Latin-1一样,ISO-8859-1Windows环境中普遍使用的美国国家标准协会ANSI(American National Standards Institute)的字符集极为类似,绝大多数情况下无需区分。在不特别指明的情况下,HTTP协议均使用ISOLatin-1字符集。因此,为了WML页面中表示非ACSIInon-ACSII)字符,开发人员需要使用相应的ISO Latin-1编码的字符。
  UCS-2ISO 1062.标准中自定义的通用多8位编码字符集(Universal Multiple-Octer Coded Character Set)2字节(即16位)编码标准,其字符编码值与Unicode字符的标准编码值相等。
  WML文档可以采用HTML 2.0规范所定义的任何字符编码标准经编码处理。一般说来,WML文档的字符编码是需要转换为另外的编码格式,以与WAP用户的手机浏览器所用字符标准相适应,否则,手机浏览器就无法显示WML页面中的字符。然而,编码转换时可能会丢失一些字符信息,所以,如果在用户端进行WML文档的编码转换,那么就可能导致某些结果信息丢失而不能被用户所浏览。因此,如有必要,我们应当尽量在WML页面传送到用户浏览器之前完成编码转换。
  为了解决这一问题,一方面,我们需要为Web服务器补充定义WML的数据类型,以让服务器可以准确传输这些数据,另一方面,我们需要制订编码转换的原则。
  2WML字符使用基本规则
  WML是一种比较严格的语言,字符使用必须遵守相应的规则,这些基本规则主要包括以下几个方面:
  1)大小写敏感。在WML中,无论是标签元素还是属性内容都是大小写敏感的,这一点继承了XML的严格特性,任何大小写错误都可能导致访问错误。
  一般来说,WML的所有标签,属性,规定和枚举及它们的可接受值必须小写,Card的名字和变量可大写和小写,但它是区分大小写的。包括参数的名字和参数的数值都是大小写敏感的,例如variable1Variable1vaRiable1都是不同的参数。 2)空格。对于连续的空字符,程序运行时只需要一个空格。属性名、符号(=)和值之间不能有空格。
  3)标签。标签内属性的值必须使用双引号(")或单引号(’)括起来。对于不成对出现的标签,必须在大于号(>)前加上顺斜杠(/),比如换行标签必须写成
才正确。
  4)不显示的内容。在WML中,不显示的字符主要包括换行符、回车符、空格和水平制表符,它们的8位十六进制内码分别为1013329
  程序执行时,WML将忽视所有的多于一个以上的不显示字符,即WML会把一个或多个连续的换行、回车、水平制表符及空格转换成一个空个。
  5)保留字符。这是WML的一些特殊字符,如小于号()、单引号“’”、双引号“"”、和号(&)。
  6)显示汉字。如果希望WML程序执行时能够显示汉字,则只需要程序开头使用encoding指定汉字字符集即可。例如:
  注意:指定汉字字符集的形式和方法可能因为开发工具或WAP手机的不同而不同。
  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)替代是按照字符串替代的方式实现的。
  由于变量在语法中有最好的优先级,包含变量声明字符的字符串将被当作变量对待,所以如果要使程序显示“rdquo;符号,则需要连续使用两个“rdquo;进行说明。例如: Your acconut has $15.00 in it
一句显示的结果为:Your account has $15.00 in it
  ###adv###  2WML核心数据类型
  WML的核心数据类型均属于字符型数据,是根据XML的数据类型定义的,共有下述2.掷嘈停?1CDATA型。这种数据类型是WML用得最多的一种,可以是数字、字符串或包含数字的字符串。不过定义时,不论是数字或字符串,都必须以文本的形式定义,及数据用引号引起来。CDATA型的数据仅用于属性值。例如"$(value)"name="value"等。注意,这里的valueCDATA型的数据值。
  2PCDATA型。这是从CDATA中分解出来的一类数据,除了可以是文本形式的数字、字符串或两者的混合串外,还可以是WML的标签。PCDATA型的数据只能用于WML的元素表示。
  3NMTOKEN型。这是一类特殊的数据,凡是包含或部分包含数字、字母及标点符号的数据均属于NMTOKEN型数据。这种数据可以用标点符号开头,但不用于定义变量名或元素名。
  4id型。专门用于定义WML元素名称的数据类型。
  在这2.掷嘈椭校珻DATA型用起来比较灵活,它可以使变量或数据免于语法检查。这是因为,CDATA内的数据内容都会被当作文本来处理,从而可以避免WML的语法检查,直接作为文本显示出来。
  5WML数据值性质
  除了NMTOKEN型数据外,WML其他3种数据都必须以文本形式即加上引号进行定义。我们关心的问题是,这些类型的数据可以表示哪些数据值呢?或者说,它们所表示的数据值的性质是什么呢? 事实上,WML数据只在性质上可以是长度(Length)、宏变量(Vdata)、流(Flow)、内行(Inline)、布局(Layout)、文本(Text)、超链(Href)、布尔值(Boolean)、数据(Number)或增强方式(Emphasis)。
  6、卡片与卡片组
  前面我们分析了WML程序的结构时,曾将讲到WML文档的信息是通过卡片集和卡片组集的形式进行组织的。一个Deck是一个或多个Card的集合。当客户终端发出请求之后,WML即从网络上把Deck发送到客户的浏览器,Deck是服务器发送信息的最小单位。用户浏览器收到Deck后,可以浏览其中包含的所有CardCard用于表示或描述一个或多个用户交互单位。
  7、卡片组模板
  同一卡片组通常会含有许多卡片,这些卡片的定义、属性或格式通常都大同小异。如果我们逐一定义各个卡片,显然是十分麻烦的。为此,WML提供了卡片组模板的功能,模板内定义了一系列标准和参数,可以应用到同一卡片组的所有卡片中去,从而能够大大地提高我们的编程效率。有关卡片组模板的内容我们后面会专门介绍的。
 
8
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-27 00:16 , Processed in 0.113847 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.