如何使用XSLT将XML转换为HTML?

来源:网站建设作者:葵司头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何使用XSLT将XML转换为HTML?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用XSLT将XML转换为HTML?》有用,将其分享出去将是对创作者最好的鼓励。

XSLT是可扩展样式表转换语言的简称,它可以通过定义转换规则,将XML文档的内容按照指定格式输出为HTML、其他XML或者文本等类型。在实际开发中,当我们有结构化的XML数据需要生成网页展示时,使用XSLT是最直接的解决方案之一。

如何使用XSLT将XML转换为HTML?

XSLT转换的核心原理

XSLT转换过程需要三个核心部分:原始的XML源文件、定义转换规则的XSLT样式表文件,以及执行转换的解析器。解析器会读取XSLT中定义的模板规则,匹配XML中的对应节点,然后将节点的内容按照规则输出为HTML标签和内容。

基础转换示例准备

我们首先准备一个简单的XML源文件,存储一些书籍信息,后续会用XSLT将其转换为HTML表格展示。

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="编程">
        <title>XSLT实战指南</title>
        <author>张三</author>
        <price>59.9</price>
    </book>
    <book category="文学">
        <title>散文精选</title>
        <author>李四</author>
        <price>39.8</price>
    </book>
</bookstore>

编写XSLT样式表

XSLT文件本身也是符合XML规范的文档,需要以<?xml?>声明开头,根元素是<xsl:stylesheet>,同时需要声明XSLT的命名空间。

基础XSLT结构

下面是一个能将上述XML转换为HTML页面的XSLT示例,它会生成一个包含书籍列表的HTML表格。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 输出格式设置为HTML -->
    <xsl:output method="html" encoding="UTF-8"/>
    
    <!-- 匹配XML根节点的模板 -->
    <xsl:template match="/">
        <html>
            <head>
                <title>书籍列表</title>
                <style>
                    table { border-collapse: collapse; width: 80%; margin: 20px auto; }
                    th, td { border: 1px solid #ccc; padding: 8px; text-align: center; }
                    th { background-color: #f5f5f5; }
                </style>
            </head>
            <body>
                <h2 style="text-align: center;">书店书籍列表</h2>
                <table>
                    <tr>
                        <th>分类</th>
                        <th>书名</th>
                        <th>作者</th>
                        <th>价格</th>
                    </tr>
                    <!-- 循环匹配所有book节点 -->
                    <xsl:for-each select="bookstore/book">
                        <tr>
                            <td><xsl:value-of select="@category"/></td>
                            <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>

执行XSLT转换的方法

编写好XML和XSLT文件后,需要通过解析器执行转换,常见的执行方式有两种,分别是浏览器端转换和服务器端转换。

浏览器端转换

现代浏览器原生支持XSLT转换,只需要在XML文件开头添加<?xml-stylesheet?>处理指令,指向XSLT文件的路径即可。

修改之前的XML文件,添加样式表引用:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="book.xsl"?>
<bookstore>
    <book category="编程">
        <title>XSLT实战指南</title>
        <author>张三</author>
        <price>59.9</price>
    </book>
    <book category="文学">
        <title>散文精选</title>
        <author>李四</author>
        <price>39.8</price>
    </book>
</bookstore>

将XML和XSLT文件放在同一目录下,用浏览器打开XML文件,就会自动渲染出转换后的HTML页面。

服务器端转换

如果需要在服务器端完成转换,可以使用对应编程语言的XSLT解析库,以Python为例,使用lxml库实现转换:

from lxml import etree

# 加载XML源文件
xml_tree = etree.parse("book.xml")
# 加载XSLT样式表
xslt_tree = etree.parse("book.xsl")
# 创建转换器
transformer = etree.XSLT(xslt_tree)
# 执行转换
result = transformer(xml_tree)
# 输出转换后的HTML内容
print(str(result))
# 也可以保存到HTML文件
with open("book.html", "w", encoding="utf-8") as f:
    f.write(str(result))

常用XSLT语法说明

在实际转换过程中,除了基础的<xsl:for-each>和<xsl:value-of>,还有一些常用语法需要掌握:

  • <xsl:template>:定义转换模板,通过match属性指定匹配的XML节点路径
  • <xsl:apply-templates>:应用匹配当前节点子节点的模板,实现模板的递归调用
  • <xsl:if>:条件判断,通过test属性设置判断条件,满足条件才输出内容
  • <xsl:sort>:排序,可放在<xsl:for-each>内部,对循环的内容进行排序

比如我们需要对书籍按价格从高到低排序,可以修改XSLT中的循环部分:

<xsl:for-each select="bookstore/book">
    <!-- 按price节点的值降序排序 -->
    <xsl:sort select="price" data-type="number" order="descending"/>
    <tr>
        <td><xsl:value-of select="@category"/></td>
        <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>

注意事项

在使用XSLT转换XML为HTML时,需要注意几个常见问题:

  1. XSLT文件必须符合XML规范,所有标签都需要正确闭合,属性值需要用引号包裹
  2. 如果XML中包含特殊字符,比如<、&等,需要先进行转义,否则会导致解析错误
  3. 不同浏览器的XSLT支持程度略有差异,如果需要兼容旧浏览器,建议优先使用服务器端转换的方式
  4. XSLT的版本选择,1.0版本兼容性最好,大部分解析器都支持,2.0和3.0版本功能更丰富,但部分环境可能不支持

XSLTXMLHTMLXML转换修改时间:2026-07-23 16:21:42

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。