XSL 在服务器端的实现原理与实例
为使不同浏览器的用户都能正确显示 XML 数据,最有效的方案是在服务器端将 XML 文档转换为纯 HTML 代码。本文将介绍这一过程的基本原理,并提供一个基于 ASP 和 VBScript 的具体实现案例。
XSL 服务器端实现的优势
在前端使用 JavaScript 调用浏览器内置的 XML 解析器进行转换存在局限性:并非所有浏览器都支持或安装了 XML 插件(尽管较新的 IE 版本已内置)。为了保证数据的广泛兼容性,采用服务器端转换是更稳妥的选择。这也是 XSL(可扩展样式语言)的重要设计目标之一:将一种格式转换为另一种格式,而不仅仅是用于展示。
实例数据结构
为了演示转换过程,我们定义一个简单的 XML 目录文件 cd_catalog.xml,包含唱片标题、艺术家等基本信息:
<?xml version="1.0" encoding="ISO8889-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>
</CATALOG>
定义转换规则 (XSL)
接下来编写 XSL 文件 cd_catalog.xsl,定义如何将 XML 标签映射为 HTML 表格元素。该样式表遍历 CATALOG/CD 节点,提取标题和艺术家信息:
<?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 对象并执行转换。以下示例使用 ASP (Active Server Pages) 结合 VBScript 实现:
- 加载 XML 数据:创建
Microsoft.XMLDOM对象,禁止异步加载以确保数据读取完成,并将 XML 文件路径映射到服务器内存。 - 加载 XSL 样式表:创建另一个
XMLDOM对象,同样禁止异步加载,并导入上述定义的 XSL 文件。 - 执行转换并输出:使用
transformNode方法,传入 XSL 对象作为参数,将转换后的 HTML 结果直接写入响应流。
完整的 ASP 代码如下:
<%
' Load the XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cd_catalog.xml"))
' Load the XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cd_catalog.xsl"))
Response.Write(xml.transformNode(xsl))
%>
关键点说明
Server.CreateObject("Microsoft.XMLDOM") 是微软环境下的标准 XML 解析接口。async = false 属性至关重要,它强制脚本等待文件完全加载后再继续执行,避免因网络延迟导致的空指针或内容缺失错误。transformNode 是核心方法,它在内存中完成 XSLT 变换,最终输出的纯粹 HTML 结构可以被任何现代浏览器毫无障碍地渲染。
以上就是在服务器端使用 XSL 转换 XML 为 HTML 的详细内容,更多关于 XML 处理技术的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













