xslt带来的新选择

02-08-06 banq

最近我在做一个项目,项目计划采取XML+XSLT解决数据和显示模板的分离问题,这样不同的用户可以选择不同的页面显示模板。

兼顾到netscape浏览器,不直接输出xml,而是使用Jakarta的XSL taglib,这样通过这个taglib,将xml和xslt转换成html输出到浏览器端。

原来觉得这个方案在技术先进性方面,至少五年内是先进的。

但是在具体实施时,发现XML对存储html语法的文本有一定的限制,首先它要求必须是well-formed html,也就是符合XHTML语法的html,如有<br>必须要有</br>,否则XML分析器会报错。

这个问题可以使用Jtidy语法校正器来解决,Jtidy类似Tidy,在soourceforge.net上有下载,很好用,可以自动校正html中不规范的语法。

校正器解决后,就是XSLT对包含html语法的XML元素显示问题,这个可以通过xsl:copy-of 和xsl:template来解决,如:

<xsl:template match="html">

<xsl:copy-of select="*|text()"/>

</xsl:template>

<xsl:template match="book">

<tr>

<td>

<xsl:value-of select="title"/>

</td>

<td>

<xsl:apply-templates select="description"/>

</td>

</tr>

</xsl:template>

就在即将认为大功告成时,又出现致命问题:

项目中,这个带html语法的文本是由用户从form表单中输入,由于我采用了Castor技术,实现了O/R Map功能,但是Castor在存储html语法的文本时,自动将"<"符号转换成 <符号。

这样,上面准备的解决方案无用武之地了。

那就寻找XSLT如何将xml中元素包含 <的能直接变成html语法<输出,而不是文本形式的< 这个问题的解决似乎比较复杂,从国外deja新闻组的方案来看,书写很复杂。

至此,准备更换项目计划,显示不再使用xslt,而是使用Jsp解决,也就是实用XML+Jsp代替XML+XSLT

这样做有几个好处:

1.避免对Xslt不熟悉带来项目的技术风险,因为Xslt还在完善中的一个新技术,其实用性有待于考察和完善以及优化,就如一个简单html语法处理,变得很复杂,这不是普及性语言所具备的特征。

2.由于Jsp实际是html,这样可以让网页设计者直接通过dreamnwaver等设计工具方便设计出网页,不必想实用Xslt方案还要对html进行Xslt转换。节约工作量和成本。

3.Jsp技术也是一个新的技术,在技术先进性方面不会很落后于XSLT,只是兼容性方面差点,但是我们项目中间件基本是Java系统的,所以这个问题不是问题,更主要的是,使用Jsp,我们就可以使用J2EE的MVC架构来完成这个项目。

做一个模板Servlet控制程序,用来提供对不同用户适时更换不同的显示模板,这个配置是通过XML完成。这可以参考petstore的Servelt及其配置文件,这样可操作性大大增强,技术风险降低。

abnertan
2002-08-06 23:19

在实际项目中,我们经常处于选择新技术(风险大)还是采用成熟技术的艰难抉择中。虽然我们不停的学习新技术,但却承担不起项目失败的压力,所以在现实中,我也会像您一样选择自己熟悉的技术。

banq
2002-08-07 10:20

是啊,但是经常使用熟悉的技术,又容易陷入保守被淘汰的地步,所以具体实施时,我是 “大胆的想,小心的做”。

也就是规划大胆的用新技术规划,实施设计时发现无法克服或者要花费很多时间去克服问题时,再使用熟悉技术。

EchoD
2002-08-07 19:51

我现在刚毕业,在公司做一个MVC架构的程序,主要是用一个核心servlet处理javabean和分发jsp页面,我学过一阵EJB感觉如果用

EJB写的话代码量会少很多,我想知道究竟是否应该在这家公司继续

jsp/servlet/javabean的开发,还是去学j2EE的多层体系架构呢

望斑竹之点一二

banq
2002-08-07 22:28

当然先做好基础 将Javabean/jsp项目做好

3Go 1 2 3 下一页