xml在b/s架构开发中的应用

  • 作者:未知 来源:未知 添加时间:2006年7月3日 字体:

  • 传统上, 我们利用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="/1fanwencom/xxx.xsl"@>
    <page>
    <output>
    <info>推广unicode, 解决多语言问题.</info>
    </output>
    </page>

    ==================xsl文件样本=============
    <@xml version="1.0" encoding="utf-8"@>
    <@xml:namespace prefix = xsl /><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0">
    <xsl:template match="/">

    <p align=center>
    <xsl:&#118alue-of select="page/output/info"></xsl:&#118alue-of>

    </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到浏览器, 供程序调试用.

      说明:

      1. 这里只是利用xslt的功能来解决网站建设中最头痛的界面和逻辑分开问题, 不是基于xml的内容处理.
      2. 如果你想赶时髦, 用xml来全副武装, 可以参考cocoon2, http://xml.apache.org/cocoon/. 但是请记住, cocoon

      还不完善, 你将碰到乱码, 速度, 文档不足的问题, 但是它的思想的确值得学习.
      3. 在tomcat, resin中有用filter实现的xslt转换,可参考。

  • 上一篇:教您使用xml封装数据库操作语句的实现
  • 下一篇:使用SQL Server 2000创建临时Job异步执行SQL脚本
  • 最后更新时间:2024年12月22日
  • 返回页面顶端
ppdesk