日期:2014-3-20 浏览次数:20294次

  WML Script是属于无限使用协议WAP使用层的一部分,使用它可以向WML卡片组和卡片中添加客户端的处理逻辑,目前最新的版本是1.1版。WML Script1.1是在欧洲计算机制造商协议会制定的ECMAScript脚本言语的基础上,经过修正和优化而指定的。它能够更好的支持诸如挪动电话类的乍带宽通信设备,在WML编程中使用WML Script可以无效的加强客户端使用的灵活性,而且,我们也可以把WML Script作为一个工具使用,开发出功用强大的WAP网络使用和无限网页。本章我们将详细讲解WML Script1.1编程的基础预法制时,如基本规则、变量预数据类型、操作赋予表达式等。为了叙说上的简便,当前我们将“WML Script1.1”简称“WMLScript ”。   4.1 WML 程序中调用WML Script函数

  经过前两章的学习,熟悉C言语的读者可能会认识到,WML 的函数功用、逻辑运算功用等都是十分无限的。而WMLScript提供了丰富的函数功用,我们在WAP使用开发可以使用WMLScript来加强WML编程。因此,WMLScript成为扩展WML编程能力的次要开发工具。

  4.2 WMLScript的次要优点及其字节码解释器

  WMLScript具有一套定义好的字节码和一个解释器参考结构。无线网络传输中WMLScript的数据均以二进制格式进行传输,所以,用户可以使用乍带宽通信信道,从而能够保持客户端手机只需求最小限制的内存。ECMAScript修正后得到的WMLScript能够更快、更小、更容易的编译程序为字节码方式。所有这些特点,是WMLScript具备了WML所不能具备的很多优点和功用。

  4.2.1 使用WMLScript的次要优点

  WMLScript的设计宗旨是为WMLScript系统提供普通的脚本处理能力,使用WMLScript我们可以进一步补充基于XML的WML言语的编程功用,开发针对乍带宽的网络使用及内容,如文本、图像、选择列表等,我们可以使用简单的格式编写出更灵活和更具可读性的用户界面。WMLScript具备的WML所不能具备的优点和功用,次要包括如下几个方面:

  (1)检查用户输入的合法性:

  (2)扩展用户浏览器的功用,比如允许程序员开发手机的电话呼叫、发送短信息、存储电话号码、管理电话簿或SIM卡等;

  (3)生成用户端的确认、提示、警告信息或操作对话框,并使之快速显示在浏览器上;

  (4)在用户浏览器的更改后,能够对浏览器端的软件和参数进行扩展与配置;

  (5)最大程度克服客户端的乍带宽通信连接限制,并提供丰富的程序功用;

  (6)补充WML并使之实现针对微型挪动终端设备的多种服务,如支持高级用户界面、添加客户端智能型、提供用户浏览器外围功用的访问能力,以及在服务器与客户端浏览传输数据是减少带宽占用等。

  4.2.2 WMLScript的字节码解释器

  在WMLScript的字节码解释器解释之前,WMLScript言语编写的文本格式的程序将被首先编译为二进制格式的代码。编译时,编译器通常先将WMLScript程序分成若干个编辑单位,每个单位的程序都包含一定数量的语句行和WMLScript函数,然后,WMLScript的编译器将按照这些编译单位,逐一将WMLScript程序作为输入内容,而把对应的字节码作为输出内容。当用户通过WAP手机调用WMLScript程序时,编译器的编码功用即被激活、执行。

  4.3 WMLScript基本规则

  WMLScript在许多基本规则方面沿用了WML的做法。不过,由于WMLScript是以C言语为蓝本而指定的,所以它的语法特征和C言语非常相像。如果大家对C言语比较熟悉,那么学习和掌握这部分内容该当是比较容易的。

  4.3.1 WMLScript与URL

  与WML一样,WMLScript也沿用了WWW和HTML访问资源的URL、HTTP等规范,并扩大了URL使用的范围。在WMLScript中,不只超链接、文件路径即文件名可以作为URL处理,外部函数、访问控制信息等也可以作为URL处理。

  为此,WMLScript采用了WML的变通方法,即改进HTML命名资源为值的方式,采用程序段锚点(Fragment Anchor)的方式来处理资源定位。程序段锚点依据文档URL规则进行定义,并按照程序段标识符前加井字号(#)的方式书写。使用程序段锚点,WMLScript程序可以在WMLScript编译单位内可任意指定的函数,并可在调用该函数的同时传递所需的参数。

  4.3.2 词法结构

  WMLScript编程中的词法结构并不复杂,我们下面就从大小写敏感、空格、换行、注释即保留字等方面讲解相关的具体规则。

  (1)内容类型。WMLScript的内容类型次要针对文件方式和二进制方式两种情况,类型结构可以在服务器端进行指定,具体方式为:

  文本方式:text/vnd.wap.wmlscript;

  二进制方式:application/vnd.wap.wmlscriptc。

  具体指定方法我们在第4章曾经引见过,这里不再重述。

  (2)大小写敏感。WMLScript1.1是一种大小写敏感的脚本言语。它所设计的各种关键字、变量和函数名都必须合理的使用大小写。

  (3)空格和换行。普通情况下,WMLScript程序值方式将忽略所有的空格、制表符合换行符等。但如果把这些特殊字符通过代码进行表述,或者作为字符串进行处理时,WMLScript将不再忽略它们。了如,字符串"Oct 28,2001"中含有空格,该空格在执行时就不会被忽略,它与不含空格的字符串"Oct28,2001"是不同的。

  (4)注释。与WML编程一样,在WMLScript脚本程序中也可以加入注释内容。注释内容不被程序执行,且注释不能嵌套。WMLScript的注释方法有两种:

  其一,行注释。即便用双斜行号(//)引导以一行内容,这一行内容全部作为注释内容。如:

//这是以行注释,由双斜杠号开始到结束都是注释。

  其二,块选择。即以符号“/*”开始,而以符号“/*”结束的期间所有内容都是注释内容。如:

/*这就是块注释,加在两头的内容就是注释内容*/

  (5)数据类型与直接编码。WMLScript允许将4品种型的数据直接编码并可嵌套并可嵌如在程序之中。直接编码的4中数据类型为:整数、浮点数、字符串和布尔值。另外,“无效性”值也可直接编码” 1. 整数。当以十进制、十六进制或八进制方式使用整数时,可对这类整数进行直接编码。

  编程序时,十进制的数字均不以0开头,只包含0~9的数值串;十六进制的数据以OX或者Ox开头,只包含0~9、a~f或者A~F的字符串;八进制的数均以0开头,只包含0~7的数字串。

  2.浮点数。浮点数通常定义为含有小数点的数字,可以包含小数和指数部分。浮点数的方式较多,可以使十进制的整数或浮点数,可以是分数,也可以是指数;但一个浮点数必须至少有一个数。

  指数是以e或E开头,后面跟着一个整数。指数是以10为底幂。例如:e0时10的零次幂,例如:e0时10的另次幂,e-2时10的负2次幂集等于0.01。指数可以带符号,正好(+)或者减号(-),它们分别代表是正指数和负指数。

  3.字符串。字符串是指定义在成对的双引号("")或单引号(‘ ’)之间的内容。

  由于WMLScript只允许使用成对的双引号或但引号来定义字符串,所以程序中使用一个单引号或一个双引号时就会出现编译错误。

  考虑到有些特殊字符不能在字符串中直接显现出来,所以WMLScript提供了转译序列来表示这些特殊字符。

  4.布尔型。它只是ture和false两个数值,用于表示WMLScript中的“真值”或“假值”。布尔型数据可参与异、或等运算,具体规则我们后面引见。

  5.无效型。也称为“空类型”,它是WMLScript支持的一个表示无效值的量,以invalid表示。该两与C言语中的NULL类似。

  4.保留字。WMLScript中定义有一个保留字集合,含有一些表示特殊意义的单词这些次不能另外定义,也不能最为其他标识符。WMLScript中的保留字如下:

acces http agent if break isvalid continue meta header

div name div= path domain return else typeof while

equiv url extern use for user function var

  另外,WMLScript还为将来的版本预留了一些保留字,次要有:

case finally catch import class private const public debugger

sizeof default struct