WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章WAP教程WAP教程第二章 WML语言基础

第二章 WML语言基础
作者:佚名  来源:本站整理  发布时间:2005-7-13 8:54:52
 为了解决这一问题,一方面,我们需要为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.2. 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种规范:其一,统一资

上一页  [1] [2] [3] [4]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码