XSLT – 转换

XSLT 转换全流程(2025 年最实用版,一篇吃透)

一、什么是“XSLT 转换”?

用一个 XSLT 样式表(.xsl 文件)把一个 XML 文件 彻底变成 另一种格式的过程:

XML 输入  +  XSLT 样式表  →  执行转换  →  HTML / JSON / XML / 文本 / SVG …

二、4 种最常见的转换方式(2025 年真实使用场景)

场景输入输出推荐工具/方式一句话说明
1. 浏览器直接转换XML +HTMLFirefox、Safari最简单,但仅限 XSLT 1.0
2. 前端 JS 实时转换XML + XSLHTMLXSLTProcessor(所有浏览器)2025 年最主流做法
3. 命令行 / 后端批量转换XML + XSL任意格式Saxon、xsltproc、Java、Python、.NET企业级首选
4. 在线一键转换粘贴或上传任意格式xsltfiddle、freeformatter 等调试/学习专用

三、实战演示:同一个 XML,用 4 种方式分别转换

输入 XML(books.xml)

<?xml version="1.0" encoding="UTF-8"?>
<library>
  <book id="b1">
    <title>围城</title>
    <author>钱钟书</author>
    <price>38.00</price>
  </book>
  <book id="b2">
    <title>三体</title>
    <author>刘慈欣</author>
    <price>69.00</price>
  </book>
</library>

XSLT(style.xsl)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="/">
    <html>
      <body>
        <h2>书单</h2>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>书名</th><th>作者</th><th>价格</th>
          </tr>
          <xsl:for-each select="library/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>
方式 1:浏览器直接转换(Firefox/Safari)

把 XML 第一行改成:

<?xml-stylesheet type="text/xsl" href="style.xsl"?>

→ 直接用 Firefox 打开 books.xml 就能看到表格

方式 2:前端 JS 转换(兼容所有浏览器)
<!DOCTYPE html>
<html>
<body>
<button onclick="transform()">点我转换</button>
<div id="result"></div>

<script>
async function transform() {
  const xml = await fetch('books.xml').then(r => r.text());
  const xsl = await fetch('style.xsl').then(r => r.text());

  const xmlDoc = new DOMParser().XMLParser.parseFromString(xml, "text/xml");
  const xslDoc = new DOMParser.parseFromString(xsl, "text/xml");

  const xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(xslDoc);
  const resultDocument = xsltProcessor.transformToFragment(xmlDoc, document);

  document.getElementById("result").innerHTML = "";
  document.getElementById("result").appendChild(resultDocument);
}
</script>
</body>
</html>
方式 3:命令行一键转换(最快)
# 方法A:用 Saxon(推荐,功能最强)
java -jar saxon-he-12.5.jar -s:books.xml -xsl:style.xsl -o:output.html

# 方法B:用 xsltproc(Linux/macOS 自带)
xsltproc style.xsl books.xml > output.html

# 方法C:转成 JSON(XSLT 3.0 + Saxon)
java -jar saxon-he-12.5.jar -s:books.xml -xsl:to-json.xsl
方式 4:在线转换(最省事)

打开下面任一网站 → 粘贴 XML 和 XSLT → 点 Transform:

  • https://xsltfiddle.liberty-development.net/
  • https://www.freeformatter.com/xsl-transformer.html

四、一键转换神器(2025 推荐)

工具支持版本命令/链接
Saxon-HE1.0~3.0+免费,官网下载
xsltproc1.0brew install libxslt(macOS)
Oxygen XML全支持专业编辑器,带可视化转换
VS Code + XSLT1.0~3.0装 “XSLT/XPath” 插件即可右键转换

五、总结:你现在只需要记住这 3 句话

  1. 想让所有人(包括手机)都能看 → 用 JavaScript XSLTProcessor
  2. 想批量、性能高、转 JSON → 用 Saxon(XSLT 3.0)
  3. 只是快速看个效果 → 打开 Firefoxxsltfiddle

需要我现在就把你的某个 XML 立刻转换成 HTML、JSON、CSV 任意格式吗?
直接把 XML 贴出来,30 秒给你成品!

文章已创建 2732

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部