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

使用Java Saxon转换XHTML时XPath无匹配结果的求助

可能的问题及解决方法
  • 命名空间未正确处理
    XHTML属于http://www.w3.org/1999/xhtml命名空间,在线XPath工具常自动忽略命名空间匹配,但Saxon会严格遵循XML命名空间规则。解决方式:

    1. 在XSLT根元素中声明命名空间前缀:
      <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                     xmlns:xhtml="http://www.w3.org/1999/xhtml">
      
    2. 所有XPath表达式中使用该前缀匹配元素,比如将//table改为//xhtml:table。
  • XPath上下文节点错误
    根模板的上下文是文档节点(/),如果你的XPath是相对路径(比如table),只会匹配文档节点的直接子元素,而XHTML的表格通常嵌套在html/body下。需调整XPath为绝对路径,比如//xhtml:body/xhtml:table,或者在根模板中先定位到正确的上下文节点。

  • XPath版本兼容性问题
    部分在线工具默认使用XPath 1.0,而Saxon HE 12.4默认支持XPath 3.1。如果你的XPath依赖1.0的隐式转换(比如节点集处理),在高版本XPath中可能行为不同。可在XSLT中显式指定XPath版本:

    <xsl:stylesheet version="1.0" ...>
    

    或调整XPath适配3.1规则。

  • 文档解析异常
    检查XHTML文件是否存在格式错误(比如未闭合标签、命名空间声明缺失),Saxon对XML格式的严格性高于部分在线工具。可先用xmllint或Saxon自带的验证工具检查文档有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:42:33