XML、XSLT在B/S架构开发中的UI应用

转帖|其它|编辑:郝浩|2008-12-12 11:21:51.000|阅读 943 次

概述:我们利用JSP+Bean来开发用户界面,这里介绍一种利用XML+XSLT的方法来替代JSP。动机:1、JSP构造页面太痛苦。代码嵌入页面导致页面臃肿,逻辑复杂,不易编辑。2、 程序员和美工的接口必须精确定义。复杂的嵌套输出必须构造复杂的显示类作为接口。3、调试JSP必须等到前端程序结束才能看到效果。4、 调试JSP效率极低,一点点小的修改都会引起jsp的重新编译。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  传统上,我们利用JSP+Bean来开发用户界面,这里介绍一种利用XML+XSLT的方法来替代JSP。

  动机:

  1、JSP构造页面太痛苦。代码嵌入页面导致页面臃肿,逻辑复杂,不易编辑。

  2、程序员和美工的接口必须精确定义。复杂的嵌套输出必须构造复杂的显示类作为接口。

  3、调试JSP必须等到前端程序结束才能看到效果。

  4、调试JSP效率极低,一点点小的修改都会引起jsp的重新编译。

  新的XML的解决方案:

  1、一个servlet做统一管理。接受url请求,映射到对应的程序bean。

  2、程序bean只产生XML,由servlet统一用对应的XSL转换为html。

  好处:

  1、JDK1。4已经自带XML API和XSLT,并且支持XSLT 1。0标准。IE6也支持同样标准。

  2、开发前先制作接口用的demo XML,程序员的输出必须符合此格式。美工根据此格式制作XSL。接口可视化,明确定义。

  3、只要定义好接口XML,两边几乎不需要再联合调试。美工利用接口XML和IE6就可以直接看到效果。

  4、程序员只要保证输出的XML的是否符合接口,直观的做文字性对比。

  5、大量页面可重用的部分能方便的抽象出来,在XSL文件中include/import进来。高度重用,标准化。

  6、写XSL可大量采用template,结构清晰,修改方便,写页面变成搭积木,不再有jsp的层层嵌套。

  7、对于不同的终端设备,可以定制不同的XSL,很方便的就能够支持手机,pda

  8、在程序中利用支持XML的工具,比如sql2000,可以直接生成XML结果,无需复杂编程。

  坏处:

  1、因为要进行XSLT转换,服务器工作量稍微增大。

  以下是几个关键环节的简单示例:

  ◆servlet中的XML转换

  /**

  * XML是String

  * XSL从文件中读取

  * 直接写入response

  */

  //import javax.xml.transform.*;
  //import javax.xml.transform.stream.*;

  StreamSource xml = new StreamSource(new StringReader(xmlSource));

  StreamSource xsl = new StreamSource(xslFileName);

  response.setContentType("text/html; charset=UTF-8");

  StreamResult result = new StreamResult(response.getWriter());

  Transformer trans = TransformerFactory.newInstance().newTransformer(xsl);

  trans.setOutputProperty("encoding","UTF-8");

  trans.transform(xml, result);
 
  ◆接口XML文件样本

  < ?xml version="1.0" encoding="UTF-8"?>
  < ?xml:stylesheet type="text/xsl" href="xxx.xsl"?>

  < page>

  < output>

  < info>推广UNICODE, 解决多语言问题.< /info>

  < /output>

  < /page>
 
  ◆XSL文件样本

  < ?xml version="1.0" encoding="UTF-8"?>
  < xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  < xsl:template match="/">

  < html>

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

  < /head>

  < body>

  < p align="center">

  < xsl:value-of select="page/output/info"/>

  < /p>

  < /body>

  < /html>

  < /xsl:template>

  < /xsl:stylesheet>
 
  考虑:

  1、可以把XSLT转换放在IE进行,IE6以下版本要安装MSXML3,对客户端限制太多。

  2、在客户端的XSLT转换必须完全读入XML+XSL,在网速不高或者内容很多的时候反应相当迟钝。

  3、手机,pda等设备不能进行XSLT转换,所以XSLT转换还是放在服务器上比较合适。

  4、因为一般提交内容都比较简单,所以没有采用XML处理,在程序中也尽量少用XML,避免影响速度。

  5、可以在servlet判断特定参数,比如发现有xml-view参数时,不做XSLT转换,直接输出XML到浏览器,供程序调试用。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP