XSLT 编辑 XML:从入门到实战的完整指南

发布时间:2026/8/29 4:49:52

XSLT 编辑 XML:从入门到实战的完整指南
1. 引言XSLTExtensible Stylesheet Language Transformations是一种用于将 XML 文档转换为其他格式如 HTML、纯文本或其他 XML 结构的声明式语言。它不仅是数据展示的利器更是 XML 数据编辑、清洗和重构的核心工具。本文将通过丰富的代码实例系统讲解如何使用 XSLT 对 XML 文档进行各种编辑操作。2. XSLT 基础概念在深入编辑技巧之前先了解 XSLT 的几个核心概念XSLT 处理器负责读取 XML 源文档和 XSLT 样式表并生成输出结果的引擎常见的有 Saxon、libxml2 等。模板规则通过xsl:template定义匹配 XML 树中的特定节点并指定输出内容。XPath 表达式用于在 XML 文档中定位节点是 XSLT 模板匹配和值提取的基础。样式表一个符合 XSLT 规范的 XML 文档以xsl:stylesheet或xsl:transform为根元素。3. 环境准备与第一个示例本文所有示例均基于 XSLT 1.0 和 2.0 标准可使用任意主流 XSLT 处理器运行。下面是一个最简单的转换示例将 XML 转换为 HTML 列表。源 XML 文件books.xml?xml version1.0 encodingUTF-8? catalog book idb1 titleXML 入门/title author张三/author price59.00/price /book book idb2 titleXSLT 实战/title author李四/author price79.00/price /book /catalog对应的 XSLT 样式表books.xsl?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xsl:template match/ html body h1图书列表/h1 ul xsl:for-each selectcatalog/book li xsl:value-of selecttitle/ 作者xsl:value-of selectauthor/ /li /xsl:for-each /ul /body /html /xsl:template /xsl:stylesheet使用命令行工具如 Saxon执行转换java -jar saxon9he.jar -s:books.xml -xsl:books.xsl -o:books.html输出结果books.htmlhtml body h1图书列表/h1 ul liXML 入门作者张三/li liXSLT 实战作者李四/li /ul /body /html4. 使用模板匹配编辑 XML模板匹配是 XSLT 最强大的编辑机制。通过定义多个模板规则可以精确控制每个节点的处理方式实现增删改查等编辑操作。4.1 修改元素内容下面的示例将所有图书价格上调 10%并保留两位小数?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform !-- 默认复制所有节点和属性 -- xsl:template match*|node() xsl:copy xsl:apply-templates select*|node()/ /xsl:copy /xsl:template !-- 修改价格元素 -- xsl:template matchprice price xsl:value-of selectformat-number(. * 1.1, 0.00)/ /price /xsl:template /xsl:stylesheet转换后price59.00/price变为price64.90/priceprice79.00/price变为price86.90/price。4.2 删除特定节点以下样式表删除所有价格超过 70 元的图书节点?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xsl:template match*|node() xsl:copy xsl:apply-templates select*|node()/ /xsl:copy /xsl:template !-- 删除价格大于 70 的图书 -- xsl:template matchbook[price 70]/ /xsl:stylesheet注意空模板规则表示匹配到的节点不产生任何输出从而实现删除效果。4.3 新增元素与属性下面的示例为每本图书添加一个category属性和一个discount子元素?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xsl:template match*|node() xsl:copy xsl:apply-templates select*|node()/ /xsl:copy /xsl:template xsl:template matchbook book xsl:copy-of select*/ xsl:attribute namecategory技术/xsl:attribute xsl:apply-templates/ discount0.85/discount /book /xsl:template /xsl:stylesheet5. 使用 XPath 精确定位与编辑XPath 是 XSLT 的查询语言掌握常用 XPath 表达式可以大幅提升编辑效率。以下是一些常用场景。5.1 按条件筛选节点只输出价格在 50 到 80 之间的图书xsl:template match/ result xsl:apply-templates selectcatalog/book[price 50 and price 80]/ /result /xsl:template5.2 使用位置索引选取第一本和最后一本图书xsl:template match/ result xsl:copy-of selectcatalog/book[1]/ xsl:copy-of selectcatalog/book[last()]/ /result /xsl:template5.3 使用通配符与轴选取所有子元素和所有属性xsl:template match/ result xsl:copy-of selectcatalog/book/*/ xsl:copy-of selectcatalog/book/*/ /result /xsl:template6. 高级编辑技巧6.1 使用变量与参数通过xsl:variable和xsl:param实现可复用的编辑逻辑。下面的示例使用参数控制是否包含折扣信息?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xsl:param nameshowDiscount selectfalse/ xsl:template match*|node() xsl:copy xsl:apply-templates select*|node()/ /xsl:copy /xsl:template xsl:template matchbook book xsl:copy-of select*/ xsl:apply-templates/ xsl:if test$showDiscount true discount0.85/discount /xsl:if /book /xsl:template /xsl:stylesheet运行时传入参数java -jar saxon9he.jar -s:books.xml -xsl:books.xsl -o:books_out.xml showDiscounttrue6.2 使用排序与分组按价格降序排列图书并按作者分组输出?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xsl:template match/ result xsl:for-each selectcatalog/book xsl:sort selectprice>?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xsl:template nameformatPrice xsl:param namevalue/ xsl:value-of selectformat-number($value, ¥#,##0.00)/ /xsl:template xsl:template matchprice price xsl:call-template nameformatPrice xsl:with-param namevalue select./ /xsl:call-template /price /xsl:template /xsl:stylesheet7. 处理命名空间处理带命名空间的 XML 时需要在样式表中声明相同的命名空间。以下示例处理 SOAP 风格的 XML?xml version1.0 encodingUTF-8? xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ xmlns:ordhttp://example.com/orders xsl:template match/ result xsl:apply-templates select//ord:order/ /result /xsl:template xsl:template matchord:order order id{id} xsl:value-of selectord:total/ /order /xsl:template /xsl:stylesheet8. 常见问题与调试技巧输出空白过多在样式表根元素上添加xsl:strip-space elements*/可去除源文档中的空白节点。模板不生效检查 XPath 表达式是否匹配目标节点注意命名空间前缀是否正确声明。属性值模板在属性值中使用{表达式}语法可以动态生成属性值如book id{id}。调试输出使用xsl:message在处理器控制台输出调试信息。xsl:template matchbook xsl:message正在处理图书xsl:value-of selecttitle//xsl:message !-- 其他处理逻辑 -- /xsl:template9. 总结XSLT 提供了一套完整、声明式的 XML 编辑方案。通过模板匹配、XPath 定位、变量参数和命名模板等机制开发者可以高效地完成 XML 数据的增删改查、格式转换和结构重组。虽然 XSLT 的学习曲线相对陡峭但一旦掌握其核心思想处理复杂 XML 编辑任务将变得游刃有余。建议读者结合本文示例在实际项目中逐步实践以加深理解。

相关新闻

告别文献造假风险✅2026论文抽检严查!OKBIYE真实文献溯源才是定稿底气

告别文献造假风险✅2026论文抽检严查!OKBIYE真实文献溯源才是定稿底气

2026/8/29 4:49:52

很多同学论文翻车,根本不是查重超标、AI痕迹过重,而是栽在了参考文献不真实、不匹配、无法溯源这个隐形雷区上。 随着2026年高校毕业论文审核全面升级,学校的抽检重点早已从“单纯查重复率”转向学术真实性核查。其中,参考文献溯…

甲醛白菜如何快速检测:冠宇仪器甲醛速测试剂守护舌尖安全

甲醛白菜如何快速检测:冠宇仪器甲醛速测试剂守护舌尖安全

2026/8/29 4:49:52

河北康保县 "甲醛白菜" 事件曝光后,食品安全检测再次成为社会关注的焦点。国务院食安办、农业农村部、市场监管总局三部门联合部署全国易腐蔬菜专项排查,但一个现实困境摆在面前:白菜等生鲜蔬菜流通速度极快,从田间收购…

C++ vector容器详解:从基础使用到内存管理与性能优化

C++ vector容器详解:从基础使用到内存管理与性能优化

2026/8/29 4:49:52

1. 从“数组”到“vector”:为什么我们需要动态的“容器”?刚开始学C那会儿,我最头疼的就是数组。定义一个int arr[10],心里就得盘算好:这10个够不够用?万一不够,程序跑一半就崩了;要…

Java二星级练习卷:高频基础考点与工程避坑实战

Java二星级练习卷:高频基础考点与工程避坑实战

2026/8/29 6:09:55

做了这么多年Java开发,也带过不少刚入行的新人,我越来越觉得一个朴素但很有用的道理:大部分Java工程师的基础功底,并不是靠刷了几个框架就扎实的。尤其到了面试或者接手老项目的时候,暴露出来的问题往往集中在语言本身…

从OJ代码考古到知识体系构建:算法整理、重构与工程化实践

从OJ代码考古到知识体系构建:算法整理、重构与工程化实践

2026/8/29 6:09:55

简介:本资源是西南科技大学计算机专业师生整理的OJ编程题解代码合集,面向算法初学者、ACM/蓝桥杯备赛学生及数据结构与算法课程学习者,旨在提供经过AC验证的典型题目参考实现,解决自主刷题时思路卡顿、代码调试无从下手等问题。压…

AI自主性安全实践:Agent评测、权限控制与提示词注入防护

AI自主性安全实践:Agent评测、权限控制与提示词注入防护

2026/8/29 6:09:55

看到一个历史学家频繁讨论 AI,技术人的第一反应往往是:又一个外行来预测未来了。但尤瓦尔赫拉利值得例外。他在公开演讲、著作和访谈中反复强调一个判断:AI 不是普通工具,而是历史上第一个能够自主决策的技术。这句话听起来很哲学…

基于SpringBoot的污水处理关键设备智能预警与能效优化平台设计与实现(程序+文档+讲解)

基于SpringBoot的污水处理关键设备智能预警与能效优化平台设计与实现(程序+文档+讲解)

2026/8/29 6:09:55

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

基于SpringBoot的研学旅行管理系统微信小程序的设计与实现(程序+文档+讲解)

基于SpringBoot的研学旅行管理系统微信小程序的设计与实现(程序+文档+讲解)

2026/8/29 6:09:55

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

法学专业学生亲测:AI写作论文工具能不能用?这4个场景真香

法学专业学生亲测:AI写作论文工具能不能用?这4个场景真香

2026/8/29 5:59:55

"用AI写论文算不算学术不端?"这个问题在法学专业的课堂上已经吵了三年。2026年,答案逐渐清晰:中国政法大学、华东政法大学等多所高校陆续出台规定,允许AI辅助写作但要求声明使用范围。作为一个刚刚用AI工具辅助完成学年…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…