我使用ServingXML(1.1.2)进行各种纯xml转换。我需要将ServingXML使用的Saxon库升级到最新的Saxon 9.6行(目前为Saxon- he 9.6.0.6J)。
这样做的原因是:我被迫使用最近的Saxon行,并且我使用Saxon和ServingXML与预加载应用程序容器,不幸的是,这限制了同时使用多个库版本。
无论如何,我已经替换了Saxon库,并对ServingXML代码做了微小的更改,以匹配Saxon API的差异。
似乎工作得很好。但是,运行升级后的Saxon的单个ServingXML会产生数十行代码:
XML Parser does not recognize the feature http://xml.org/sax/features/validation
这对我来说似乎很奇怪,因为我无法在ServingXML源中找到任何错误的功能设置到Saxon发生的地方。
一些可能对你的调查有帮助的信息。
首先,这是一个警告。输出警告后,Saxon继续正常运行。实际上,在解析器上设置此特性的请求将被忽略。
其次,在Saxon使用指定的特性名称调用parser. setfeature()之后出现该消息,并且解析器抛出SAXNotRecognizedException。无论该功能是开启还是关闭,它都可能发生。
第三,如果请求DTD验证,Saxon将尝试设置该特性,例如通过调用Configuration.setValidation()。但是,有许多其他路径可能导致此请求。
这里发生了两件事。(A)应用程序(通过某种方式)请求源文档的DTD验证,(B)应用程序以某种方式配置了不支持DTD验证(或不识别请求)的XML解析器。
我查看了一下ServingXML的源代码。它包含XMLReader (package com.servingxml.util.xml.AbstractXMLReader)的实现,该实现无法识别特性http://xml.org/sax/features/validation
我怀疑这是您正在使用的解析器。但我不知道怎么帮你解决问题。ServingXML的作者是否响应了帮助请求?