开发无线应用程序面临着因其自身特殊性而带来的诸多挑战,其中就包括了信息显示和浏览器方面所存在的问题。本系列文章分为三个部分,主要解释Java APIs for XML Processing (JAXP)以及XML Stylesheet Language Transformation (XSLT)解决以上问题的途径以及创建无线设备可理解内容的方法。首先介绍一些基本概念,包括在开发无线应用程序时所遭遇的特殊问题以及利用JAXP/XML/XSLT的场合。
回溯过去的岁月(还能记得1994年发生的IT事件吗?),那时,所谓的尖端科技无非是用Visual Basic和PowerBuilder这类编程语言开发客户/服务器GUI界面等技术。早期GUI开发遇到的一个问题是你并不知道显示程序运行结果的显示器采用什么屏幕分辨率。如果程序界面按照800 x 600的屏幕分辨率设计,那么在具有比这个数字更低的屏幕分辨率的监视器上查看应用程序就不太适合了。如果监视器分辨率更高,那么你的应用程序又会显得界面太小而无法观看。
因特网开发部分地解决了这个问题。通过标注标签的使用来定义GUI,应用程序就可以采用相比绝对方式更具相对性的定位措施。这意味着,当用户缩放浏览器界面大小时,GUI也会随之改变大小。在缺省的情况下,Java小程序也采用这种相对定位系统。
但是,对手持设备来说屏幕分辨率可就是个大问题了。例如 Handspring Prism这类高端PDA(个人数字助理)的显示分辨率是160 x 160个象素,大致上是传统监视器屏幕分辨率的五分之一。另一方面则是更低屏幕分辨率的问题了。一部Nokia 6185i的显示分辨率只有5行。在这个小小的螺丝壳里你又该怎么摆道场呢?为各种设备单写不同的应用程序吗?那绝对是不可行的。但是,在这篇文章末尾,你将看到如何使用JAXP/XML/XSLT来调整设备所获取的内容。
无线应用程序几乎无一例外地在微浏览器内运行。这种浏览器在形状和大小各异但目的都是一样:联接因特网。因此微浏览器(microbrowser)同它体形更大、功能也更完整的同类(例如 Netscape Navigator 和 Internet Explorer)起到了同样的作用。而且,也象它的同类一样,微浏览器也对某些标注标签提供有差别的支持(或根本就不支持)。
结果呢,在这种微浏览器上可以运行的无线应用程序却可能无法在另一种微浏览器上运行。在这无比复杂的残酷世界里,目前就有数十种微浏览器被人们所使用。而你的工作就是保证你的无线应用程序能对它们都可用。这回又得靠JAXP/XML/XSLT大显神威了。
XML就是描述数据而非表示数据(用户之所见)的一整套标注标签。用户从来就没看见过纯粹的XML。XML是一种中介技术,最终会转换为WML或HTML这类可视的表示标签。XML从何而来?答案是XML不问出处,其来源到处都是。它可能象普通文本文件那般简单,也可能如同Java字节流一样精美。是的,XML 是一种崭新的技术,任何能编写文本文件的语言都可以产生XML代码(COBOL程序员这会可能在窃笑呢)。出于简洁的缘故,我就以普通ASCII 文件(可用Notepad程序编辑)的形式使用XML。
要查看XML首先得转换XML代码。代码转换指的是阅读原始XML文件然后用浏览器能理解的标注标签取代XML标签的过程。以常用的Internet Explorer浏览器为例,在这种情况下XML会被转换为HTML。而在微浏览器的情况下则可能转换为WML。把XML转换为所需要的标记语言的绝妙之处就在于一切仅仅依靠单一的XML文件。产生的数据则根据请求XML文件的浏览器进行不同的转换。
那么如何定义XML的转换过程呢?很简单,你自己负责定义转换的规则。具体的做法因人因事而异,出于简单起见,我们把代码转换的定位写在一个普通的 ASCII文件里。大多数代码转换都是以这种方式在服务器上执行的。定义转换规则的文件称为样式表单,通常具有.xsl或.xslt的文件扩展名。
到目前为止,你应该对无线设备编程所牵涉的技术问题有了一定的了解。在下一篇文章里,我将利用Jaguar服务器平台提供一些代码转换的简单例子,随着学习的深入,这些示例也会变得一个比一个复杂。在最后的文章里你将学到如何用Jaguar创建稳固的无线应用程序。