选择显示字体大小

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


  上一节我们介绍了wml程序的基本结构,接下来我们介绍wml语言的基本知识,主要包括wml的字符集、变量、数据类型及wml程序的基本组成部分等。

  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 8),主要传输国际字符集的转换编码。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、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手机的不同而不同。

  3、变量

  wml编程中可以使用变量,变量使用前必须进行定义。变量一旦在deck中的某一个card上定义过,其他card则可以不必重新定义就能直接调用该变量。

  定义变量的语法格式为:

&#36;identifier
&#36;(identifier)
&#36;(identifier:conversion)

  其中identifier指变量名,或说变量标示符;conversion指变量的替代。

  变量名是由us-acsii码、下划线和数字组成的,并且只能以us-acsii码开头。变量名严格区分大小写,也即,变量名是大小写敏感的。

  定义变量的语法在wml中享有最高的解释优先级。

  有关变量的使用说明如下:

  1)在wml中,变量可以在字符串中使用,并且在运行中可以更新变量的值。

  2)当变量等同于空字符串时,变量将处于未设置状态,也就是空(null)。

  3)当变量不等同于空字符串时,变量将处于设置状态,也就是非空(not null)状态。

  4)在“&#36;identifier”形式下,wml通常以变量名后面的一个空格表示该变量名的结束。如果在某些情况下空格无法表示一个变量名的结束,或者变量名中包含有空格,则必须使用括号将变量名括起来,即采用“&#36;(identifier)”的形式。

  wml程序中的变量是可以替代的,我们可以把变量的数值赋给card中的某一文本。有关变量替代说明如下:

  1)在wml程序中,只有文本部分才可以实现替代。

  2)替代一般在运行期发生,而且替代不会影响变量现在的值。

  3)任何标签是按照字符串替代的方式实现的。

  4)替代是按照字符串替代的方式实现的。

  由于变量在语法中有最好的优先级,包含变量声明字符的字符串将被当作变量对待,所以如果要使程序显示“&#36;”符号,则需要连续使用两个“&#36;”进行说明。例如:<p> your acconut has &#36;&#36;15.00 in it </p>一句显示的结果为:your account has &#36;15.00 in it。

###adv###  2、wml核心数据类型

  wml的核心数据类型均属于字符型数据,是根据xml的数据类型定义的,共有下述2.掷嘈停?1)cdata型。这种数据类型是wml用得最多的一种,可以是数字、字符串或包含数字的字符串。不过定义时,不论是数字或字符串,都必须以文本的形式定义,及数据用引号引起来。cdata型的数据仅用于属性值。例如"&#36;(value)"或name="value"等。注意,这里的value指cdata型的数据值。

  2)pcdata型。这是从cdata中分解出来的一类数据,除了可以是文本形式的数字、字符串或两者的混合串外,还可以是wml的标签。pcdata型的数据只能用于wml的元素表示。

  3)nmtoken型。这是一类特殊的数据,凡是包含或部分包含数字、字母及标点符号的数据均属于nmtoken型数据。这种数据可以用标点符号开头,但不用于定义变量名或元素名。

  4)id型。专门用于定义wml元素名称的数据类型。

  在这2.掷嘈椭校珻data型用起来比较灵活,它可以使变量或数据免于语法检查。这是因为,cdata内的数据内容都会被当作文本来处理,从而可以避免wml的语法检查,直接作为文本显示出来。

  5、wml数据值性质

  除了nmtoken型数据外,wml其他3种数据都必须以文本形式即加上引号进行定义。我们关心的问题是,这些类型的数据可以表示哪些数据值呢?或者说,它们所表示的数据值的性质是什么呢? 事实上,wml数据只在性质上可以是长度(length)、宏变量(vdata)、流(flow)、内行(inline)、布局(layout)、文本(text)、超链(href)、布尔值(boolean)、数据(number)或增强方式(emphasis)。

  6、卡片与卡片组

  前面我们分析了wml程序的结构时,曾将讲到wml文档的信息是通过卡片集和卡片组集的形式进行组织的。一个deck是一个或多个card的集合。当客户终端发出请求之后,wml即从网络上把deck发送到客户的浏览器,deck是服务器发送信息的最小单位。用户浏览器收到deck后,可以浏览其中包含的所有card。card用于表示或描述一个或多个用户交互单位。

  7、卡片组模板

  同一卡片组通常会含有许多卡片,这些卡片的定义、属性或格式通常都大同小异。如果我们逐一定义各个卡片,显然是十分麻烦的。为此,wml提供了卡片组模板的功能,模板内定义了一系列标准和参数,可以应用到同一卡片组的所有卡片中去,从而能够大大地提高我们的编程效率。有关卡片组模板的内容我们后面会专门介绍的。

  8、wml与url、程序段锚点

  我们知道,环球网www是各种信息和设备的网络,为保证全球范围内的交互,人们制定了3种规范:其一,统一资源定位器url提供所有网络资源的标准命名方式和定位方式;其二,标准协议,如http协议等,提供www资源的传输方式;其三。标准内容类型,如html、wml,提供www资源的内容形式及标准。wml沿用了这些规范,并扩大了url使用的范围。在wml中,不仅超连接、文件路径及文件名可以作为url处理,卡片名、宏变量名及各种内部资源名等也可作为url处理。

  为此,wml改进了html命名资源位置的方式,采用程序锚点(fragment anchor)的形式来处理wml程序中某段程序的地位。程序段锚点根据文档wml规则进行定义,并按照程序段表示符前加井字好(#)的方式书写。使用程序段锚点,wml程序可以在同一卡片组中定位不同的卡片。如果在程序中不指定程序段,那么程序中引用的url名称则指整个卡片组,而且卡片组的名称同时也是本卡片组内的第一个卡片的名称。

  9、浏览器操作历史

  为了在浏览器端管理wml程序的执行,wml使用“浏览器前后关系”的功能保存wml程序执行的状态及各种参数、变量等,这样可以用来记录用户的操作情况。同时,wml还提供了一个简单的导航历史模型,以url地址的形式记录了用户浏览时的各种操作,并把这些url地址放入历史推栈。通过推栈,用户即可实现历史浏览的回潮及其它操作。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons