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解析器的区别