使用 XSLT-process 可以在 Emacs 中做哪些 XSLT 相关操作?
更新时间
XSLT-process 是 GNU Emacs/XEmacs 的一个 minor mode(次要模式),它把 Emacs 变成具备 XSLT 处理与调试能力的编辑器。装上它之后,你可以在编辑样式表的同一个缓冲区里直接运行 XSLT 处理器、查看转换结果,并以调试方式单步执行样式表、设置断点、检查 XSLT 变量。它支持 Saxon 和 Xalan 两个 Java XSLT 处理器,调试能力对两者都完整可用。需要注意的是,它不负责 XML/XSLT 的语法编辑(那属于 PSGML、sgml-mode.el 或 xslide 这类 major mode 的职责),而是叠加在编辑之上的处理与调试层。
核心能力:运行转换并查看结果
最基本的用法是对当前正在编辑的缓冲区运行 XSLT 处理器,输出可以送到另一个 Emacs 缓冲区,也可以交给浏览器查看。这意味着你改完样式表后不必离开编辑器去命令行执行转换,结果就在手边,适合反复调整模板、观察输出片段是否如预期。
调试模式:把 Emacs 当作 XSLT 调试器
调试模式是这个项目区别于普通“运行转换”的地方。开启后可以观察转换过程中发生了什么,具体包括:
- 设置断点:在样式表的指定位置暂停执行。
- 单步进入样式表:逐步跟踪模板匹配与执行路径。
- 查看全局和局部 XSLT 变量:在暂停点检查变量当前取值。
对于模板匹配层层嵌套、结果不符合预期的样式表,这些手段比反复打印输出更直接。原文的定位是“有效地把 GNU Emacs/XEmacs 当作 XSLT 调试器使用”。
与 DocBook-XSL 配合处理文档
当 XSLT-process 与 DocBook-XSL 包一起使用时,Emacs 就成为一个 DocBook 处理系统。如果你的工作流是用 DocBook 写文档、再用 DocBook-XSL 转成 HTML 或打印格式,这条组合路径可以省去在编辑器与构建脚本之间来回切换。
支持的处理器与扩展性
| 处理器 | 支持程度 |
|---|---|
| Saxon | 完整支持,含调试能力 |
| Xalan | 完整支持,含调试能力 |
| 其他 Java XSLT 处理器 | 可较容易地加入,至少可支持普通处理能力 |
选择处理器时,若你需要断点和单步调试,Saxon 与 Xalan 都是可用选项;若你惯用其他 Java 处理器,普通转换功能有扩展空间,但调试能力不保证。
适用条件与边界
- 前提:运行 GNU Emacs 或 XEmacs,并具备 Java 环境以运行 Saxon/Xalan。
- 不替代语法编辑:需要 XML/XSLT 的结构化编辑、DTD 校验时,应搭配 PSGML、sgml-mode.el 或 xslide。
- 授权:项目由 Ovidiu Predescu 和 Tony Addyman 编写维护,以 GNU GPL 自由软件形式分发。
- 获取方式:站点提供 Download、Documentation、Quick Setup、DocBook setup 等入口,安装与配置步骤以这些文档为准。
如果你的需求只是“在 Emacs 里跑一次转换看结果”,这个模式足够直接;如果你需要定位样式表逻辑错误,调试模式下的断点、单步和变量查看是它最有价值的部分。