根据本地XML模式验证XML结构

时间:2014-04-24 11:07:53

标签: xml xsd jdom

我的代码是创建一个XML文档(使用JDOM 1.1),我希望根据XSD文件进行验证。但是,根据http://www.w3.org/TR/xmlschema-1/#schema-loc,提供给解析器的schemaLocation属性似乎只适用于可访问的URL。

有没有办法引用本地XSD文件?是否针对不可能在全球范围内进行的XSD进行验证?我不明白......

2 个答案:

答案 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"));