我需要使用一组模式对传入的 XML 片段执行一些验证。
所有这些模式共享相同的 targetNamespace,但被分成不同的 .xsd 文件。
我的 java 程序将每个 xsd 文件加载到 InputSource[] 数组中并将它们传递到 SAX Parser(SCHEMA_SOURCE 属性)。但是,当调用 XMLReader.parse 方法时,我得到以下堆栈跟踪:
** java.lang.IllegalArgumentException:当使用对象数组作为 SCHEMA_SOURCE 属性的值时,没有两个 Schema 应该共享相同的 targetNamespace。在 org.apache.xerces.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(Unknown Source) 在 org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source) 在 org.apache.xerces.impl.xs.XMLSchemaValidator.findSchemaGrammar (未知来源)在 org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(未知来源)在 org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(未知来源)在 org.apache.xerces.impl.XMLNSDocumentScannerImpl .scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher。
我需要使用共享命名空间的模式来解析 XML。是否可以这样做并避免上述错误?
任何形式的帮助或建议将不胜感激
谢谢