`
jojol_zhou
  • 浏览: 345450 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

转: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地址放入历史推栈。通过推栈,用户即可实现历史浏览的回潮及其它操作。
分享到:
评论

相关推荐

    WAP建站进阶-WML标记语言和WMLScript脚本语言

    通过上述内容,我们可以了解到WAP建站的基础知识,包括主流的WAP工具包介绍、WML标记语言和WMLScript脚本语言的特性及应用。这些知识对于希望从事WAP应用开发的人来说是非常宝贵的。通过对WAP工具包的学习和实践,...

    wap开发使用手册入门

    **WAP开发使用手册入门** WAP(Wireless Application Protocol,无线应用协议)是一种在移动设备上实现互联网访问的技术标准,它使得用户可以通过手机等移动设备浏览网页、发送电子邮件、下载数据等内容。本《WAP...

    WAP开发常用资料入门学习

    本篇内容将围绕“WAP开发常用资料入门学习”展开,详细介绍WAP的基本概念、主要技术以及开发实践。 1. **WAP基础知识**: WAP是为了解决移动设备的屏幕小、带宽有限等问题而设计的。它使用一种称为WML(Wireless ...

    vs2005wap开发入门.pdf

    《VS2005 WAP开发入门》 Visual Studio 2005(VS2005)是微软推出的一款强大的集成开发环境,它支持多种开发任务,包括创建WAP(Wireless Application Protocol)网站。WAP是一种标准协议,用于在移动设备上提供...

    WAP建站基础教程--WAP(wml)开发教程【CSDN精品推荐】

    本教程详细讲解了WAP建站的基础知识,包括WAP协议、WML语言的学习以及WAP建站的全过程。无论是初学者还是有经验的开发者,都能从中获得宝贵的知识和实践经验。通过深入学习和实践,你可以掌握构建适应移动设备的网页...

    WAP网站前端开发.doc

    ### WAP网站前端开发知识点详解 #### 一、WAP技术概述 WAP(Wireless Application Protocol...随着技术的进步,WAP开发也在不断演进,掌握这些基础知识将有助于开发者紧跟技术前沿,开发出更加优秀的移动互联网应用。

    WAP开发教程、很适于入门学习

    ### WAP开发教程知识点概述 #### 第一章:WAP Server = Web Server + Configuration **1.1 WAP Server Configuration** - **WAP Server的概念**:WAP Server是指能够为移动设备提供WAP服务的服务器。它通过HTTP...

    wap系统开发 之 快速入门

    在本文中,我们将深入探讨WAP系统开发的基础知识,帮助初学者快速入门。 **一、WAP协议栈** WAP协议栈由四层组成:无线应用环境(WAE)、无线传输层(WTP)、无线会话层(WSP)和无线网络层(WNLP)。这四层协议...

    新手利用PHP开发WAP技术入门教程

    ### 新手利用PHP开发WAP技术入门教程 #### WAP技术概述 WAP(Wireless Application Protocol,无线应用协议)是一种允许移动设备访问互联网资源的标准协议。它最初是为了弥补传统互联网技术在移动通信领域的不足而...

    wml编程

    1. **《WAP编程全书》**:这本书全面介绍了WAP技术和WML编程,包括WAP协议的基础知识、WML语言的使用方法、WAP应用的开发流程等,适合初学者入门。 2. **《wap编程》**:该书可能更专注于实践操作,提供具体的编程...

    wap应用完全版(有关wap开发者使用教材)

    描述“wap开发应用详解,主要讲解有关wap开发中的应用技术和有关平台搭建”进一步细化了内容重点。它强调了教程会详细解释WAP开发中的具体应用技术,包括但不限于协议栈、数据传输、用户界面设计等,并且会涉及平台...

    wap入门源码(c#)

    学习WAP开发,可以参考.NET Compact Framework的官方文档,以及C#和WML的相关教程。此外,通过模仿和修改提供的源码,可以加深对WAP应用开发的理解。最后,参与开源项目或社区讨论,可以获取更多实践经验和最新资讯...

    wap教程-入门必看的文章

    4. **WAP开发工具**:介绍如何使用WAP开发工具,如WAP模拟器,进行测试和调试。 5. **WAP优化**:讨论如何提高WAP页面的加载速度和用户体验,包括压缩内容、优化图片尺寸等技巧。 6. **实践案例**:提供实际的WAP...

    get started with wap2.0

    本文将详细介绍 WAP 的基础知识,特别是 WML 和 WMLScript 语言,以及与之相关的协议。 #### 一、WAP 简介 **定义:** WAP 是一种全球性的开放协议标准,用于移动设备访问和交互互联网服务。它由多个不同的协议和...

    WAP建站入门教程(最适初学者)

    3. **WAP开发环境与工具** - **编辑器**:如Notepad++、Visual Studio Code等,用于编写WML代码。 - **模拟器**:如Nokia WAP Toolkit、Opera Mobile Emulator等,用于预览和测试WAP页面在不同设备上的效果。 4. ...

    WAP建站入门教程

    通过这个WAP建站入门教程,初学者可以对移动互联网早期的建站技术有基本的认识,并以此为基础,进一步学习和掌握现代移动Web开发的技能。无论是出于历史兴趣还是职业需求,深入理解和实践WAP都将对你的IT知识体系...

Global site tag (gtag.js) - Google Analytics