Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?

Posted

技术标签:

【中文标题】Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?【英文标题】:Xerces2 XML parser and Xalan XSLT processor -- state and replacement? 【发布时间】:2018-09-19 21:02:18 【问题描述】:

现在是 2018 年。Java 的 Xerces2 XML parser 和 Xalan XSLT processor 库的状态如何?他们的最新版本似乎分别是2.11.0 in 2013 和2.7.2 in 2014。

它们还在维护吗?

它们是否完美到不需要偶尔发布补丁?

是否可以使用来自不同供应商的替代库?这些替代品和这两个一样免费吗?

如果只使用 JDK 提供的功能,通常可以不用这些吗?

【问题讨论】:

我更喜欢 Saxon 作为 XSLT 处理器。 Saxon 9.8 HE 是 XSLT 3.0 处理器,可在 SourceForge sourceforge.net/projects/saxon/files/latest/… 和 Maven 上以开源形式提供,因此它可以被视为 Xalan 的替代品,因为 Xalan 从 1999 年开始实现 XSLT 和 XPath 1.0,而 Saxon 9.8支持 2017 年最新的 XSLT 3.0 和 XPath 3.1。 【参考方案1】:

Xerces 和 Xalan 的积极开发比这些最新版本更早停止。在这两者之间有大量的补丁版本来修复错误。很自然,仅仅发布了几年的错误修复,没有新的开发,软件变得非常稳定,不需要进一步的维护版本。

多年来,我一直建议使用 Xerces 的 Apache 版本,因为它比 JDK 中的版本更可靠:JDK 版本有一些令人讨厌的错误,而 Sun/Oracle 似乎并不急于修复它们。我认为现在已经改变了; JDK 版本现在完全可用。

如果您需要超过 1.0 级别的 XSLT 功能,请从 Xalan 切换到 Saxon。

【讨论】:

恕我直言,请公开您的隶属关系。 JDK 版本具有limited 必不可少且非常有用的库功能【参考方案2】:

基本上,这些是由不同公司捐赠给 Apache 的 jaxp 实现。 Crimson 是 SUN 捐赠的另一款。如今,jaxp 实现与 JDK 捆绑在一起,因此几乎没有理由使用替代实现。回想起来,以前在做 j2ee 应用程序时,通常会引入 xerces 或 xalan 作为依赖项。

check the unoffical jaxp faq

【讨论】:

以上是关于Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?的主要内容,如果未能解决你的问题,请参考以下文章

寻找 xalan TransformerFactoryImpl 的选项

如何使用 System.Xml.Schema 从 xs:choice 解析 xs:annotation

如何防止具有 META-INF\services\javax.xml.transform.TransformerFactory 的 xalan.jar 接管 Xalan 实现中内置的 JDK 1.6?

android中XML SAX解析器、Pull解析器和DOM解析器的区别

使用 XSD、目录解析器和用于 XSLT 的 JAXP DOM 验证 XML

XSLT:如何使用 XSLT 1.0 和 XALAN 处理器转换部分转义的 XML?