• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:16来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

14.4 在服务器上生成WML
许多原因决定了小型产品上提供的服务一般是动态的。因此,你不能写一个静态的W M L文
档,而是通常要建立动态的W M L卡片。
646使用XML 高级编程
下载
当然,我们可以使用任何一种可以生成动态H T M L或X M L的技术,如A S P、J S P、C G I脚本
等。但一个理想的生成W M L文档的工具是X S L转换(X S LT)语言。
在服务器上我们可以用X S LT将任何X M L源文档转换成W M L文档。下面的X M L文档是从数
据库返回的查询结果:
程序清单1 4 - 2 8
我们假定移动电话上已经有文档m a i n . w m l—否则下载这个文档并将其放入到本地缓存中
—我们通过空中传输的只是一个设定变量b i o的最小化文档。在演示o n e n t e r f o r w a r d事件的应用
时已经用过这个文档。
下面是生成W M L文档的转换页:
程序清单1 4 - 2 9
图像可能已经被转换成W B M P或G I S格式了,具体的格式则取决于电话的功能。自然这个过
程需要一个可以完成图像转换的图形库。
第14章无线应用协议使用647 下载
讨论过WA P和W M L的基础理论和WA P产品的标记语言后,我们来看看如何将这些应用到实
践中去。
14.5 WROX的WML应用
这一部分将我们前面生成的应用程序小结一下,这些内容是W R O X网站的一个简化版。用
户可以完成如下功能:
• 得到关于W R O X的通常信息。
• 根据姓或名查询作者的生平。
• 根据分类和/或标题词语查询书的标题。
下面是W M L代码:
程序清单1 4 - 3 0
648使用XML 高级编程
下载
第14章无线应用协议使用649 下载
当用户查询作者时,服务器会返回一个简短的作者生平并显示在卡片b i o中,这一点我们前
面已经讨论过。在这张卡片中禁用B a c k,因为我们不想让用户返回到一张空白卡片上—“蹦
床”卡片,相关内容可以参阅1 4 . 3 . 11节“客户端模板”。为防止作者生平过长,我们在卡片开始
和结尾处各使用了一个D o n e标识。
如果用户在第一张卡片上处于休眠状态,应用程序将自动跳到卡片a b o u t上,并向用户显示
一些关于W R O X的商业信息。
当用户要寻找一本书并键入标题中的词语时,服务器将会反馈回一个匹配列表。例如:
程序清单1 4 - 3 1
650使用XML 高级编程
下载
这个匹配列表被拆分成两张卡片,从而便于用户浏览。注意在第一张卡片末尾处的M o r e . . .
选项。此外每一张卡片都为用户提供了返回到应用程序起始页的方法。通过使用模板,每张卡
片上也都有一个B a c k键。
讨论完如何为新一代移动产品提供标记文件后,接下来看看这些客户设备使用的脚本语言。
14.6 WML脚本
虽然W M L允许我们为带WA P功能的产品标记文档,但WA P规范中包括一种称为W M L S c r i p t
的脚本语言可以使网页增添更多的功能。W M L S c r i p t从E C M A S c r i p t语言(也叫J a v aSc r i p t或
JSc r i p t,也许后者人们更熟悉)演化而来,因此用过E C M A S c r i p t语言的人对它会很熟悉。虽然
W M L S c r i p t不是E C M A S c r i p t的一个完整子集,但它是大多数网络开发者所熟悉的通用脚本语言
的一个精简替代版。我们先讨论基本概念和如何调用脚本函数,然后再看看目前提供的脚本库。
第14章无线应用协议使用651 下载
14.6.1 基本概念
在这一部分中我们假定你已经知道E C M A S c r i p t。我们不再解释基本的脚本语言结构(如
I f和F o r语句),而是重点讲述WA P浏览器中提供的脚本函数库以及脚本和W M L如何一起使
用。
W M L脚本程序没有内嵌于W M L中(像H T M L中的元素< s c r i p t >一样),而是在独立文件中存
储,并可以通过U R L访问。
1. 函数
W M L S c r i p t脚本程序是面向函数的。一个文件可以有几个函数,所以每个函数要有一个唯
一的名称。要调用文件中某个特定的函数,需要用文件的U R L和函数名称的片段标识。函数之
间不能互相包含,因此不能在一个函数中定义另一个函数。虽然函数中的变量是局部变量,但
经常用这些函数管理W M L浏览器上的全局变量。
2. 变量
变量的数据类型取决于对它的最新赋值类型。可以使用操作符v a r来定义变量:
程序清单1 4 - 3 2
变量名称区分大小写,可以包括字母、数字和下划线字符,但不能用数字开头。如果变量
有初始值(如上例所示),则初始值的数据类型就是这个变量的初始数据类型。变量也可以有局
部范围。
14.6.2 字节码
脚本在传送给移动电话的途中要经过WA P网关,在网关上脚本被编译成字节码并以这种形
式传到电话上。这种字节码同J a v a程序中编译的字节码不同,但使用字节码的概念和原理是相同
的。字节码很容易理解而且需求的带宽也较小。
14.6.3 如何从WML上调用脚本函数
由于脚本函数可以用U R L定位,因此可以用W M L中的链接元素< g o >或< a >调用脚本函数:
程序清单1 4 - 3 3
当W M L浏览器执行上面的程序时,元素< g o >指向一个脚本函数作为其目标资源。脚本在与
W M L卡片独立的上下文中执行,因此W M L文档不能共享脚本中的变量。一旦脚本执行结束,
W M L文档将重新控制操作。脚本没有返回值,但脚本可以管理W M L文档中的变量(我们前面
提到过)。如果目标资源是一个普通的W M L文档,那么目标就会替换当前文档。
注意脚本函数不添加到历史记录列表中,所以你不能用< p r e v >回到一个脚本去。
652使用XML 高级编程
下载
14.7 脚本库
没有配套的标准库就无法用W M L S c r i p t做任何事情,但WA P浏览器可以支持6个标准库:
W M L B r o w s e r、D i a l o g s、L a n g、F l o a t、S t r i n g和U R L。
使用脚本库可以完成下列任务:
• 通过在W M L文档中设定和改变变量来设定W M L浏览器的状态。
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程下(47)