0

我使用 ServingXML (1.1.2) 进行各种纯 XML 转换。我需要将 ServingXML 使用的 Saxon 库升级到最新的 Saxon 9.6 行(当前为 Saxon-HE 9.6.0.6J)。

这样做的原因是:我被迫使用最近的 Saxon 产品线,并且我将 Saxon 和 ServingXML 与预加载的应用程序容器一起使用 - 遗憾的是 - 限制了同时使用多个 lib 版本。

无论如何,我已经替换了 Saxon 库并对 ServingXML 代码进行了细微更改以匹配 Saxon API 差异。

它似乎工作正常。然而,运行升级后的 Saxon 的单个 ServingXML 会产生数十行:

 XML Parser does not recognize the feature http://xml.org/sax/features/validation

这对我来说似乎很奇怪,因为我无法在 ServingXML 源中找到任何地方,撒克逊人的错误功能设置会发生在哪里。

4

2 回答 2

1

一些可能对您的调查有所帮助的信息。

首先,这是一个警告。输出警告后,撒克逊人照常继续。实际上,在解析器上设置此功能的请求被忽略。

其次,该消息发生在 Saxon 使用指定的功能名称调用 parser.setFeature() 之后,并且解析器抛出 SAXNotRecognizedException。无论功能是打开还是关闭都可能发生。

第三,如果请求 DTD 验证,Saxon 会尝试设置此功能,例如通过调用 Configuration.setValidation()。但是,还有许多其他路径可能会导致此请求。

所以这里发生了两件事。(A) 应用程序(通过某种方式)请求源文档的 DTD 验证,并且 (B) 应用程序以某种方式配置了不支持 DTD 验证(或不识别请求)的 XML 解析器。

于 2015-07-27T16:50:56.237 回答
0

我查看了 ServingXML 的源代码。它包括无法识别功能http://xml.org/sax/features/validation的 XMLReader 实现(包 com.servingxml.util.xml.AbstractXMLReader)

我怀疑这是您正在使用的解析器。但我不知道如何帮助您解决问题。ServingXML 的作者是否响应了求助请求?

于 2015-08-04T16:05:33.470 回答