我只是想知道是否有人可以再给我XML验证代码一次,看看我是否做对了。这是给我带来麻烦的代码部分...

SAXParserFactory factory = SAXParserFactory.newInstance();

SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

// *** CODE FAILS ON THE BELOW LINE **/
factory.setSchema(schemaFactory
    .newSchema(new Source[] { new StreamSource(schemaStream) }));

SAXParser parser = factory.newSAXParser();

SAXReader reader = new SAXReader(parser.getXMLReader());
reader.setValidation(false);
reader.setErrorHandler(new ResultProducingErrorHandler());
reader.read(content);


每当我运行上面的代码时,都会出现以下错误:

src-resolve: Cannot resolve the name 'ns:myStructure' to a(n) 'type definition' component.


错误消息中提到的所有元素都是通过调用导入到架构中的元素。该模式似乎通过W3C XML Schema Validator确认OK。

我是否必须分别包含每个模式,还是Java足够聪明才能启动并获取这些额外的模式?我尝试将它们添加到传递给newSchema调用的数组中,但这没有任何区别。

我认为我无法给出该架构的链接,因此我真的只是在寻找是否可以接受我的代码的“是”或“否”。

最佳答案

确保xs:import语句指向从应用程序当前目录可访问的路径。当前目录可能与您想像的不一样。

09-04 02:14