用XSLT和XML改进Struts
http://tech.ddvip.com 2006年11月25日 社区交流
本文详细介绍用XSLT和XML改进Struts
输出
Model 2x架构的一个重要的特性就是能够动态改变输出的内容类型以及用户接口的风格。比方说,同样的应用项目可以针对老版本的浏览器生成HTML 3.2代码而同时又为新版本的浏览器生成HTML 4.0的代码。利用XSLT可以方便地获得各种输出格式: XHTML、XSL/FO、WML、简单的文本、CSV、PDF、SVG等等。
XSLT处理流程
Model 2x标志着Web框架在分离版面设计与风格逻辑以及引导样式表这两方面有了提高。Apache的Cocoon框架就表现出s了这两个优点。例如,某个样式表可以定义在整个站点中某类特定表格的显示样式,比如下面这张样式定义了用户信息表格的显示样式。这张样式表可能输出如下一个表格:
<xsl:template match="customer-info">
<table>
<tr>
<td>Name</td>
<td><xsl:value-of select="name"/></td>
</tr>
</table>
</xsl:template>而另一个样式表也可以通过创建一个如下的嵌入表来设计这个表格。
<xsl:template match="table">
<table cellpadding="0" cellspacing="0" border="0" bgcolor="red">
<tr>
<td valign="top">
<table cellpadding="4" cellspacing="1" border="0">
<xsl:apply-templates select="tr"/>
</table>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>性能
Model 2x当前的这个实现方案是动态的创建XML Dom树,然后把它交给XSLT转换器。通过使用SAX(Simple API for XML)显著地提高了性能,特别表现在等待时间和大文档的内存驻留上。此外,样式表的编译也提升了XSLT的处理次数。Xalan是Apache的一个XSLT处理器项目。它提供了一种把样式表编译成Java的class文件的机制,也就是是我们所说的translets。
客户端处理
目前,IE5/6、Mozilla这样的浏览器已经能够在客户端执行XSLT转换。如果要减轻Web服务器的负担,可以在客户端执行XSLT转换。XInclude(XML Inclusions)可以从服务器下载资源和其他的数据,并建立缓存。XInclude提供了一种通用的方法来识别和处理它的内含物,同时还能够提供很好的性能、更少的代码冗余。当然这种方法也存在问题。最大的一个缺陷就是开发人员必须确保传递给客户的XML、XSLT文档必须是客户有权看到的内容。
通过Model 2x来提升Struts的性能
总之,Model 2x中使用XML和XSLT来鼓励开发人员将业务逻辑和表现逻辑加以分离,这样web应用程序更接近MVC最基本的承诺。此外它还具有一些其它的优势比如输出的文档符合XML的文档格式、标准化的语言的使用、更好的表现层适应性,更短的开发周期。
责编:豆豆技术应用