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

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

为使不同浏览器的用户都能正确显示 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。