0

我只是想知道是否有人可以给我的 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.

错误消息中提到的元素都是通过调用 <xs:import /> 导入到模式中的元素。该模式似乎通过W3C XML Schema Validator验证 OK 。

我是否必须单独包含这些模式中的每一个,或者 Java 是否足够聪明以获取这些额外的模式?我尝试将它们添加到传递给 newSchema 调用的数组中,但这没有任何区别。

我不认为我可以给出架构的链接,所以我真的只是在寻找关于我的代码是否至少可以接受的是或否。

4

1 回答 1

1

确保 xs:import 语句指向可从应用程序的当前目录访问的路径。当前目录可能不是您认为的那样。

于 2009-03-03T15:32:34.233 回答