我的代码是创建一个XML文档(使用JDOM 1.1),我希望根据XSD文件进行验证。但是,根据http://www.w3.org/TR/xmlschema-1/#schema-loc,提供给解析器的schemaLocation
属性似乎只适用于可访问的URL。
有没有办法引用本地XSD文件?是否针对不可能在全球范围内进行的XSD进行验证?我不明白......
答案 0 :(得分:1)
首先,schemaLocation属性只是指定模式位置的一种方式,在许多情况下它不是最好的方法(如果你不相信文档有效,为什么你会相信它告诉你它的架构在哪里?)。大多数模式验证器可能提供在外部提供模式位置的选项,例如在命令行上或通过API或GUI。
其次,schemaLocation是一个URI。因此它可以是相对URL,例如“test.xsd”标识与源文档位于同一目录中的模式文档。
答案 1 :(得分:0)
我强烈建议您升级到JDOM 2.0.5。 JDOM2中用于Schema验证的机制更容易理解和实现。请考虑此代码(采用from the JDOM2 package documentation (near the bottom)):
File xsdfile = new File("myschema.xsd");
XMLReaderJDOMFactory factory = new XMLReaderXSDFactory(xsdfile);
SAXBuilder sb = new SAXBuilder(factory);
Document doc = sb.build(new File("file.xml"));