XSLT怎么转换XML?XSLT将XML转换为HTML教程

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

XSLT是可扩展样式表转换语言的缩写,它的核心作用就是读取XML文件的内容,按照预设的规则将XML数据转换为其他格式,最常见的场景就是把XML转换为HTML,方便在网页中展示结构化的数据。

XSLT怎么转换XML?XSLT将XML转换为HTML教程

XSLT转换的核心原理

XSLT转换需要两个核心文件配合:一个是存储原始数据的XML源文件,另一个是定义转换规则的XSLT样式表文件。转换引擎会解析XSLT样式表中的模板规则,匹配XML中的对应节点,将节点的内容按照规则嵌入到输出的HTML结构中。

基础概念说明

  • XML源文件:存储需要转换的原始结构化数据,标签和属性由业务需求定义
  • XSLT样式表:以<xsl:stylesheet>为根标签,内部定义转换的模板和规则
  • 模板匹配:使用<xsl:template>标签的match属性指定匹配XML中的哪个节点
  • 节点取值:使用<xsl:value-of>标签获取XML节点的文本内容

准备工作:编写XML源文件

首先我们需要准备一个待转换的XML文件,这里以学生信息列表为例,文件名为students.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="students.xsl"?>
<students>
    <student>
        <id>1001</id>
        <name>张三</name>
        <age>20</age>
        <major>计算机科学</major>
    </student>
    <student>
        <id>1002</id>
        <name>李四</name>
        <age>21</age>
        <major>软件工程</major>
    </student>
    <student>
        <id>1003</id>
        <name>王五</name>
        <age>19</age>
        <major>人工智能</major>
    </student>
</students>

这里的<?xml-stylesheet?>指令是可选的,用于指定关联的XSLT文件,浏览器解析XML时会自动加载对应的XSLT完成转换。

编写XSLT样式表文件

接下来编写XSLT样式表,文件名为students.xsl,作用是把上面的学生信息转换为带表格的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根节点students -->
    <xsl:template match="/students">
        <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>
                    <!-- 遍历所有student节点 -->
                    <xsl:for-each select="student">
                        <tr>
                            <td><xsl:value-of select="id" /></td>
                            <td><xsl:value-of select="name" /></td>
                            <td><xsl:value-of select="age" /></td>
                            <td><xsl:value-of select="major" /></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

这个样式表中,<xsl:for-each>标签用于遍历所有student子节点,<xsl:value-of>分别获取每个子节点的文本内容,填充到HTML表格的对应单元格中。

运行转换的两种方式

方式一:浏览器直接解析

如果XML文件中已经通过<?xml-stylesheet?>指定了XSLT文件路径,只需要用浏览器打开students.xml文件,浏览器会自动加载XSLT完成转换,直接展示渲染后的HTML页面。

方式二:使用编程语言执行转换

实际开发中更多是通过后端代码执行转换,这里以Python为例,使用内置的lxml库实现转换:

from lxml import etree

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

运行上述代码后,会生成students.html文件,打开即可看到和浏览器直接解析一致的表格页面。

常见问题说明

  • 如果转换后HTML样式不生效,检查XSLT中<xsl:output>的编码是否和文件编码一致
  • XML和XSLT文件的路径需要正确对应,否则解析时会报文件找不到的错误
  • 如果需要对转换结果做排序,可以在<xsl:for-each>中添加<xsl:sort>标签,比如按年龄升序排序可以添加<xsl:sort select="age" order="ascending" />

XSLTXMLHTMLXML转换样式表修改时间:2026-07-09 20:51:33

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