You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Saxon-JS浏览器XSLT转换报XPDY0002焦点缺失错误排查

Saxon-JS 转换报 XPDY0002 焦点不存在错误修复方案

错误根因

报错和入口上下文缺失直接相关,出现在xsl:for-each段完全符合执行逻辑:

  • 你当前HTML里的SaxonJS.transform调用只传了stylesheetLocation参数指定SEF样式表路径,没有传入待转换的源XML文件路径。
  • 当你把模板同时命名为xsl:initial-template作为转换入口时,Saxon-JS不会自动加载默认源文档,启动转换时整个上下文没有绑定任何输入节点,也就是XPath求值所需的焦点(上下文节点.)完全为空。
  • 执行到xsl:for-each select="order/job"这行时,XPath需要从当前上下文根节点查找子节点order,但没有上下文节点可以依托,直接抛出XPDY0002错误。

修复步骤

  1. 修正HTML中的Saxon-JS调用参数,补充源文件路径和输出目标配置,替换原有onload里的脚本:
window.onload = function() {
  SaxonJS.transform({
    stylesheetLocation: "pack3.sef.json",
    sourceLocation: "pack3.xml", // 替换为你实际存放XML文件的相对路径
    destination: "replaceBody" // 直接将转换结果替换页面body内容,无需保留原有错误提示
  }, "async");
}
  1. 修正源文件里的语法隐患,避免后续触发其他转换错误:
    • 打开XML文件,第二个<job>节点下的<Complete_by>2022-05-27</Complete_by>>末尾多了一个多余的>,直接删除即可。
    • 你XML里所有Complete_by元素的文本内容前后带空白字符,直接调用xs:date()转换会报类型错误,把XSL里的dueDateOP变量定义修改为:
      <xsl:variable name="dueDateOP" select="xs:date(normalize-space(Complete_by))"/>
      
  2. 重新用XSLT3编译器生成新的SEF文件,刷新页面即可正常渲染出排期表格。

内容的提问来源于stack exchange,提问作者Benjamin Howland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:47:07