XML和XSL结合是早期网页开发中常用的数据展示方案,核心思路是将页面数据和展示逻辑分离,XML负责存储结构化数据,XSL负责定义数据的渲染规则,最终通过XSLT转换生成标准HTML页面。下面我们通过一个展示图书列表的实例来完整演示实现过程。

第一步:准备XML数据文件
首先创建books.xml文件,用来存储图书的结构化数据,所有内容都放在自定义的bookstore根节点下,每本图书作为一个book节点,包含书名、作者、价格三个子节点:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title>XML入门指南</title>
<author>张三</author>
<price>49.9</price>
</book>
<book>
<title>XSLT实战教程</title>
<author>李四</author>
<price>59.9</price>
</book>
<book>
<title>网页开发基础</title>
<author>王五</author>
<price>39.9</price>
</book>
</bookstore>第二步:编写XSL样式文件
接下来创建books.xsl文件,定义XML数据到HTML的转换规则。首先需要声明XSL命名空间,然后通过<xsl:template>定义匹配规则,把bookstore节点转换为HTML的表格结构:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- 匹配根节点 -->
<xsl:template match="/">
<html>
<head>
<title>图书列表</title>
<style>
table { border-collapse: collapse; width: 600px; }
th, td { border: 1px solid #ccc; padding: 8px; text-align: left; }
th { background-color: #f5f5f5; }
</style>
</head>
<body>
<h2>图书列表</h2>
<table>
<tr>
<th>书名</th>
<th>作者</th>
<th>价格</th>
</tr>
<!-- 遍历所有book节点 -->
<xsl:for-each select="bookstore/book">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="author"/></td>
<td><xsl:value-of select="price"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>第三步:关联XML和XSL文件
需要在XML文件中添加样式表关联声明,告诉浏览器使用对应的XSL文件来转换当前XML数据。在books.xml的第二行添加以下处理指令:
<?xml-stylesheet type="text/xsl" href="books.xsl"?>
添加后完整的books.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="books.xsl"?>
<bookstore>
<book>
<title>XML入门指南</title>
<author>张三</author>
<price>49.9</price>
</book>
<book>
<title>XSLT实战教程</title>
<author>李四</author>
<price>59.9</price>
</book>
<book>
<title>网页开发基础</title>
<author>王五</author>
<price>39.9</price>
</book>
</bookstore>第四步:查看最终效果
将books.xml和books.xsl放在同一个目录下,用浏览器直接打开books.xml文件,浏览器会自动读取关联XSL文件,执行XSLT转换后展示成HTML表格页面。如果需要调整页面样式,只需要修改XSL文件中的CSS部分,不需要改动XML数据,实现了数据和展示的解耦。
核心逻辑说明
整个流程的核心是XSLT转换引擎,浏览器内置了XSLT处理器,当加载带样式关联声明的XML文件时,会自动完成以下操作:
- 解析XML文件,构建XML文档树
- 加载对应的XSL样式文件,解析转换规则
- 按照XSL中定义的模板,把XML节点映射为对应的HTML元素
- 输出最终的HTML内容渲染到页面上
这种方式的优势是数据更新时只需要修改XML文件,展示逻辑调整只需要修改XSL文件,适合数据结构和展示规则相对固定的静态页面场景。