java 中的 XSLT 不使用 JRE 的 XML 实用程序

XSLT in java without using the JRE's XML utils

看起来 JDK 提供了它自己的 apache xalan 阴影版本。

我在使用 XSLT 生成 XML 时发现了一个错误(错误是一个新行,并且在某些 cdata 部分中添加了缩进)。这在未发布的 jdk12 中已修复。我想避免这种情况,在这种情况下,我既要等待 oracle 解决问题,又要升级所使用的 JRE。

我研究了通过 Maven 将 xalan 作为依赖项包括在内。这确实有效并且似乎解决了问题,但是 xalan 的最后一次更新时间似乎是 2014 年 7 月 24 日。自上次更新以来已经超过 4 年了。

我希望能够依赖 xalan 或其他支持 XSLT 的东西,而无需来自 JRE 的依赖。

  1. oracle 是否为其独立于 apache 的 JRE 维护自己的 xalan 版本?
  2. 为什么自 2014 年 7 月以来在 maven 上没有更新 xalan?
  3. 依赖xalan会不会导致各种问题?我确实在 Dealing with "Xerces hell" in Java/Maven? 中看到 xml-apis 被排除在外以试图避免一些问题。
  4. 使用 JVM 不太可能使用的其他 XML 库会更好吗?什么样的图书馆值得研究。

尽我所能回答(但您的一些问题需要内部知识):

  1. 据我所知,Xerces 和 Xalan 的 JRE 版本是 Apache Xerces 和 Xalan 的修改版本,但没有进行大量修改,并且有一些努力将错误修复移植到Apache 版本。

  2. Xalan 尚未修改,因为没有人在处理它。它最初的赞助商是 IBM 和 Sun(它部分源自 IBM 的 LotusXSL,部分源自 Sun 的 XSLTC)。 Sun 的开发人员在甲骨文收购后离开; IBM 将其投资转移到了商业 Websphere XSLT 2.0 处理器和 Datapower 引擎上。所以 Xalan 仍然是 XSLT 1.0 处理器,这意味着规范在 19 年内没有改变,代码变得相应稳定,因此几乎不需要修复错误。需要比 Xalan 提供更多功能的用户通常会转向 Saxon,除非他们的预算使 Websphere 或 Datapower 负担得起。

  3. 不,很有可能让应用程序使用 Apache 版本的 Xalan and/or Xerces 而不会 运行 遇到任何技术问题。

  4. (我对此很感兴趣)转向 Saxon 可为您提供 XSLT 2.0 和 XSLT 3.0 的所有功能和生产力优势;产品得到持续开发和维护,并得到很好的支持;在某些情况下,您可能会看到显着的性能改进;多年来,在诊断、可配置性和仪器仪表等领域有了很多渐进式改进。但是好处与代码是否也在JVM中使用无关。