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

XPath 3.1如何处理扩展名称冲突的属性?两类查询用例求规范结果

结论依据核心规则

XML 命名空间规范明确规定:无前缀的属性名称不继承默认命名空间,仅无前缀的元素名称会应用上下文绑定的默认命名空间。XPath 节点匹配时仅比较命名空间URI和本地名称,与原始XML中使用的前缀无关。


Q1 执行结果

返回单个属性节点,值为 2。
解析:

  1. XPath 中 n2 绑定的命名空间URI与XML中doc元素的所属命名空间URI完全一致,因此n2:doc可以匹配到目标根元素。
  2. @n2:a匹配命名空间URI为https://www.example.com、本地名称为a的属性,对应XML中n1:a="2"的属性节点。

Q2 执行结果

返回单个属性节点,值为 1。
解析:

  1. 默认命名空间仅作用于元素,因此doc可以匹配到属于对应命名空间的根元素。
  2. 无前缀的属性选择器@a仅匹配无命名空间、本地名称为a的属性,对应XML中a="1"的属性节点。

多实现结果不一致的原因

部分XPath实现存在不符合规范的bug:要么错误地将默认命名空间应用到无前缀属性匹配逻辑,要么错误地用前缀字符串而非命名空间URI做匹配,才会出现返回两个节点等异常结果,该场景并非规范灰色地带,符合标准的实现结果唯一。

内容的提问来源于stack exchange,提问作者Sean B. Durkin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 20:45:05