基于XML/XSLT的客户端应用程序
在这里,我们假定你已经对XML有了基本的理解,我将重点讨论其前端应用程序的开发。与XML相关的用户界面开发的一个主要特征是内容和表达方法之间互不干涉。简单地说,就是数据被保存为XML文档,而不再负责数据的使用和显示,根据决定数据格式和在网页上输出方式的样式表(XSLT)在HTML、WML、XHTML和其他表达形式中选择一种数据表达形式。通过使各层之间保持相对的独立,让每个层处理各自的任务,这种方法的优点是非常明显的。
尽管XML提供了很好的数据发布模式,可以生成不同的表达模式,它仍然不能解决所有的问题。XML值得称道的是让开发人员专注于数据的处理,而让设计人员和艺术家来处理数据的表达形式。应用程序则把生成的XML文件保存在内存或存储在磁盘上,为得到指定的表达类型,例如HTML,可以通过适当的XSLT类型表对内容进行转换,该类型表可以将XML文档转换为HTML文档。类型表与判断文档中的内容应当如何分布在网页上的模板类似。它还可以转换数据,执行传统的命令和循环来处理数据,进行决策,因此它也可能变得非常复杂。
类型表的优点之一是,如果要从一部移动电话上访问同一个应用程序,所需要作的全部工作就是再创建一个新的WML类型表。从理论上说,这个应用程序的所有其他部分都无需作任何改变,这使得服务器端的编程工作变得非常高效。采用XML实现一个前端应用程序将使一些任务变得简单,因为显示的数据和处理这些数据的代码都无需改变。开发应用程序各部分的开发小组可以独立工作,从而加快开发进程。
然而,我曾经在基于XML的前端应用程序开发中吃过苦头,它的二个最主要的缺点是缺乏帮助生成XML以及类型表开发方面的工具和处理速度,第一个因素对那些使用DreamWeaver和FrontPage等可视化HTML开发工具创建HTML网页的开发人员的影响更大。就我本人而言,我还是喜欢使用DreamWeaver,但我实在不能从在文本编辑器中编写HTML代码中得到什么乐趣。毕竟,现在已经是21世纪了,我们来看一个将XML文档转换为HTML的非常简单的XSLT类型表:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="page">
<html>
<head>
<title><xsl:value-of select="title"/></title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="title">
<h1><xsl:apply-templates/></h1>
</xsl:template>
</xsl:stylesheet>
如果所选的XSL类型表适当的话,上面的代码会生成如下所示的HTML代码:
<html>
<head>
<title>My first page</title>
</head>
<body>
<h1>Hello, world</h1>
</body>
</html>
我们会发现,上面的代码与我们用HTML开发工具得到的代码不大相同。不幸地是,我们必须用手工的方式对它进行编辑,在一个可以生成HTML文档的工具中对它进行处理后,然后在浏览器中打开生成的文档。如果仅仅是为了美观而改变字体的大小,那么就无需这么作了。
第二个问题是在运行时完成所有的任务需要许多时间。如果数据格式不是XML,还需要生成XML文档,在类型表对XML进行转换处理后,才能生成HTML代码。与在Servlet或JSP应用程序中向内存缓存中写文件相比,速度和简洁性实在不是基于XML的前端应用程序的优点。
总而言之,如果需要动态地生成不同版面和窗体的表达形式时,就需要使用XML。如果表达形式需要经常变化或需要非常灵活,就应该让设计人员重新设计新的类型表。需要记信的是,设计人员只要掌握XML和XSLT就万事大吉了。
另一个需要使用基于XML的UI的场合是你需要处理的资料是XML文档,而不是Java对象或关系数据库。XML是一种在未来颇有前途的新技术,然而,目前使用JSP开发前端应用不是比较方便的,尤其是HTML是唯一一种前端开发工具时更是如此。使用JavaBeans和JSP标识库等一些著名的设计模式则能够使数据的内容和表达形式很好的分离。随着自动对XML/XSLT进行编辑的工具的出现,这些技术在使用方面将更加简单方便。
结论
具体到你自己的Java应用程序,这三种前端技术各有利弊,任何一种技术都不能在所有方面超过其他二种。针对具体的应用程序,我们必须对需求、用户的期望进行详细分析,对这三种技术进行评估。下面是一些基本的准则:
使用HTML/JSP:
━━适合于由大量图形和美术作品组成的静态内容。
━━前端应用程序的界面面向使用所有平台的用户。
━━用户所使用的互联网连接较慢。
━━希望快速地构建功能比较单一的应用程序。
使用Java Swing:
━━适合创建具有内置、与界面相关的逻辑的GUI。
━━可以减轻网络流量,提供尽可能的即时响应。
━━如果用户对界面的质量和功能有较高的期望。
━━如果UI的功能比其美感更重要时。
使用XML/XSLT
━━需要支持许多不同的而且经常变化的窗体。
━━数据是XML格式。
━━需要个性化。
━━计划提供无线访问等不同的访问方式。