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