XSL 在服务器端的实现原理与实例

季宁
季宁
发布时间:2026-10-16 | 5人浏览过
原创

为使不同浏览器的用户都能正确显示 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 实现:

  1. 加载 XML 数据:创建 Microsoft.XMLDOM 对象,禁止异步加载以确保数据读取完成,并将 XML 文件路径映射到服务器内存。
  2. 加载 XSL 样式表:创建另一个 XMLDOM 对象,同样禁止异步加载,并导入上述定义的 XSL 文件。
  3. 执行转换并输出:使用 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 处理技术的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表