XML在B/S架构开发中的应用
以下是几个关键环节的简单示例:==============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到浏览器, 供程序调试用.
说明: 1. 这里只是利用XSLT的功能来解决网站建设中最头痛的界面和逻辑分开问题, 不是基于XML的内容处理. 2. 如果你想赶时髦, 用XML来全副武装, 可以参考cocoon2, http://xml.apache.org/cocoon/. 但是请记住, cocoon
还不完善, 你将碰到乱码, 速度, 文档不足的问题, 但是它的思想的确值得学习. 3. 在tomcat, resin中有用filter实现的xslt转换,可参考。 4. 有什么好的建议请告诉我: phpme@citiz.net (谢绝垃圾邮件:) qq:7461522