我们有两个架构(XSD)文件,一个文件包含另一个。 当我们加载模式文件以验证XML文件时,它无法正确加载到Web应用程序中。 它为包含的模式文件元素抛出了错误。
Source[] sources = new StreamSource[2];
Source schemaFile = new StreamSource(Test.class.getClassLoader().getResourceAsStream(“a.xsd”));
sources[0] = schemaFile;
Source schemaFile1 = new StreamSource(Test.class.getClassLoader().getResourceAsStream(“b.xsd”));
sources[1] = schemaFile1;
Schema schema = factory.newSchema(sources);
b.xsd包含a.xsd文件。 但是当我们在main方法中运行它时,相同的代码工作正常。
有人可以提出解决此问题的建议吗?
我们可以在org.w3c.dom.ls包中使用LSResourceResolver执行此操作。 Problem validating an XML file using Java with an XSD having an include
在网络基础应用程序中,有没有办法用javax做到这一点?
错误:
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ns:Request'.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
at org.apache.xerces.jaxp.validation.DOMValidatorHelper.beginNode(Unknown Source)
at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)
at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)
at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source)
at javax.xml.validation.Validator.validate(Unknown Source)
答案 0 :(得分:1)
LSResourceResolver是一个很好的,使用整个xml解析基础设施。
简单的黑客将是:
或者更容易