我可以在 org.w3c DOM 模型上使用 Saxon 吗?

Can I use Saxon over org.w3c DOM model?

在我们的项目中,我们有自己的 org.w3c.dom.* 接口实现。

Saxon 是否支持对 XPath 2.0 查询的求值而不是 XML 本身,而是 org.w3c.dom.* 实例的求值?

是的,确实如此。您可以使用 JAXP XPath 接口或 s9api 接口:我们建议使用 s9api,因为 JAXP 接口从未设计用于 XPath 2.0 的更丰富的数据模型,例如,无法 return 字符串序列。

当 运行 超过 DOM 时,Saxon 比使用 Saxon 的本地 TinyTree 模型时要慢 5-10 倍。当然,如果它是您自己实现的 DOM,那么 (a) 性能可能会有所不同,并且 (b) 总是存在错误风险,例如您的 DOM 可能 100% 符合 DOM 规范,但仍然与 Saxon 测试过的任何 DOM 实现不同。

Saxon-EE 9.8 引入了一种处理 DOM 树导航的新方法,称为 Domino 模型。这会在为 DOM 树构建索引时产生前期成本,以便提高后续导航的性能。如果 DOM 是可变的(也就是说,如果内容在一个 XPath 表达式求值和另一个之间发生变化),请不要使用它,因为这样的变化会使索引无效。