三. xsl--在客户端的实现
1.javascript解决方案
在上面的章节中我们已经解释了xsl是如何将xml转换成html文件。方法就是在xml文档的头部加入一个xsl样式表信息,然后让浏览器执行转换过程。
这种方法在大部分情况下都做得很好,但是在不支持xml的浏览器中就无法正确显示了。
一个更好的更全面的解决方案是使用javascript来实现xml到html的转换。但是使用javascript必须得到以下功能支持:
a.允许javascript代替浏览器进行细节检测;
b.根据不同的需要和不同的浏览器使用不同的样式表。
对于xsl来说这是完全可行的。设计xsl的目标之一就是允许将一种格式转换成另一种格式,支持不同的浏览器,支持不同的用户需求。未来的浏览器的重要任务就是在客户端执行xsl的转换工作。
2.一个具体的实例
下面是我们上面提到的一个xml文档(cd_catalog.xml)例子的部分代码:
<?xml version="1.0" encoding="iso8859-1" ?>
<catalog>
<cd>
<title>empire burlesque</title>
<artist>bob dylan</artist>
<country>usa</country>
<company>columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
.
下面是完整的xsl文件(cd_catalog.xsl):
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/wd-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>title</th>
<th>artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
注意,现在xml文件还没有加入xsl样式表,还没有被转换成html文件。
下面是用javasript来实现最后转换的html代码:
<html>
<body>
<script language="javascript">
// load xml
var xml = new activexobject("microsoft.xmldom")
xml.async = false
xml.load("cd_catalog.xml")
// load the xsl
var xsl = new activexobject("microsoft.xmldom")
xsl.async = false
xsl.load("cd_catalog.xsl")
// transform
document.write(xml.transformnode(xsl))
</script>
</body>
</html>
上面代码中使用了javascript,如果你不知道如何写javascript,您最好专门学习一下。
第一段代码建立一个microsoft parser(xmldom)解析的对象,并将xml文档读入内存;第二段代码建立另外一个对象并导入xsl文档;最后一行代码将xml文档用xsl文档转换,并将结果输出到html文件中。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器