使用saxon 97实现自定义nodeinfo实现 - HE

时间:2017-01-09 18:26:38

标签: saxon

我有一个用saxon 8.7编写的自定义NodeInfo,DocumentInfo和ExternalObjectModel实现。

我还需要支持一些自定义功能。 我的理解是saxon 9.7 HE有更好的支持,因此尝试从基于8.7的实现迁移到9.7 HE。

  1. 有没有办法关闭xslt功能?我现在不需要它。
  2. s9api是推荐的API,以获得以下功能:

    • 使用自定义数据模型(我没有xml文档)
    • 支持 自定义功能
    • 为current()提供自定义实现 功能

    目前的实施有这种模式。

         XPathEvaluator eval = new XPathEvaluator(docw);
         eval.setNamespaceContext(new NamespaceContext() {
            // stripped off
         });
         List<DataNode> res = eval.evaluate(xpath);
    

    现在,XPathEvaluator不接受'NodeInfo'实现者。 evaluate返回一个字符串。

    9.7中相关的新api /类是什么?

    另外,没有saxon-xpath。我认为该功能现在是Saxon-HE的一部分。

1 个答案:

答案 0 :(得分:0)

在8.7和9.7之间发生了很多变化 - 你说的是两个版本相隔大约10年,其中包括10个主要版本和大约100个维护版本。虽然任何两个主要版本之间NodeInfo接口的更改都会非常小,但随着时间的推移,它们会累积到显着差异。

Saxon 9.7更改了DocumentInfo接口,将其替换为(实际上)新的TreeInfo对象,以保存有关树的信息,无论根节点是否为文档节点。

类似问题&#34; 9.7&#34;中的新api /类是什么?太广泛了。我们在每个主要版本上发布详细的更改信息,在线交互式文档具有更改历史记录,允许您按任何两个选定版本之间的类别列出更改。有两个版本,分别为8.7和9.7,这是一个非常长的列表,甚至没有必要在这里开始总结它。

saxon-xpath曾经是一个单独的JAR文件,我认为原因可能是你可以将它从类路径上移开以避免JAXP应用程序意外地将其拾取。该功能现在位于主JAR文件中 - 除了Saxon不再将自己宣传为JAXP XPath提供程序,以避免此问题。

我通常建议在编写Saxon应用程序时使用s9api接口,特别是如果他们需要超越XSLT,XPath,XSD和XQuery。 JAXP的等价物更加混乱:它们不能很好地集成到工具之间,它们通常不是类型安全的,它们不能提供对最新W3C标准等功能的访问。但是如果你&#39;重新进行深度整合,例如定义自己的对象模型并替换系统函数,然后您将不得不在s9api下面挖掘内部的低级API。

这里可以做到很多,但是从一个版本到下一个版本并不是100%稳定,并且它并不总是很好地记录在案。我们很乐意回答技术问题,但如果您解决此类整合问题,我们希望您具备高水平的技术能力。