Oxygen XML Editor怎么进行XSLT开发和调试?

Oxygen XML Editor 的 XSLT 调试需用 Saxon-EE 引擎、正确配置调试启动器、在有效指令行设断点、使用 file:/ 格式路径,并确保 XSLT 3.0 声明版本以支持 xsl:try 和高阶函数调试。

Oxygen XML Editor 对 XSLT 开发和调试的支持非常成熟,但默认配置下容易卡在“看不到输出”或“断点不生效”上。关键在于确认你用的是 XSLT 2.0/3.0 引擎、正确设置了调试启动器,并且源 XML 和样式表路径是相对 Oxygen 工作区解析的(不是绝对路径乱跳)。

怎么设置 XSLT 调试启动器(避免“Debugger

not available”错误)

Oxygen 不会自动启用调试,必须手动绑定一个支持调试的处理器——Saxon-EE 是唯一被 Oxygen 官方完整支持调试的引擎(Saxon-HEXalan 不支持断点)。

  • 进入 Options → Preferences → XML / XSLT-FO / XQuery → Debuggers → XSLT Debugger
  • 勾选 Enable XSLT debugging
  • Processor 下拉菜单中选择 Saxon-EE(需提前在 Libraries 页签里配置好 saxon9ee.jar 路径)
  • 确保 Use current document as input 或指定正确的 Input URL;如果输的是本地文件路径,用 file:/ 前缀(如 file:/C:/data/input.xml),别用 C:\ 这种 Windows 原生路径

怎么加断点并触发调试(为什么 F5 没反应)

断点只能加在 或任意带 select/test 属性的指令行上——纯文本节点或注释行无法设断点。

  • 在编辑器左侧灰色边栏单击即可添加断点(出现红点);悬停可查看是否被识别为“valid breakpoint location”
  • 右键点击 XSLT 文件 → Debug As → XSLT Transformation(不是“Run As”)
  • 若弹出 No valid input specified,说明没配 Input URL 或当前文档不是 well-formed XML;检查底部状态栏是否显示 XML 而非 Text
  • 调试启动后,变量视图里 $input 显示源树,$context 是当前匹配节点,Templates 标签页可跳转到任意模板

怎么调试 XSLT 3.0 的 xsl:try 和高阶函数

XSLT 3.0 特性依赖 Saxon-EE 且需显式声明版本,否则 Oxygen 会降级为 2.0 模式,导致 xsl:try 报错或函数不可见。

  • 在 XSLT 文件首行确认有
  • xsl:try 内部的断点只有在异常实际抛出时才触发;正常流程下 xsl:catch 块不会停,除非你在其中某行手动加断点
  • 调试 function 时,调用处(如 {my:func($x)})不能设断点,必须进到函数定义体内部第一行设
  • 使用 map{}array{} 时,变量视图里展开后可能显示 [object Object] —— 这是 Oxygen 的显示限制,实际值可用 watch 表达式输入 ?size()?1 查看

  
    
      
      
      
        
        File not found
      
    
  

最容易被忽略的是:Oxygen 的调试会话不继承 shell 环境变量,所以如果你在 xsl:document 中写相对路径,它基于的是 XSLT 文件所在目录,而不是你打开 Oxygen 时的当前工作目录。路径问题引发的空白输出,比逻辑错误更难排查。