根据本地XML架构验证XML结构

根据本地XML架构验证XML结构,xml,xsd,jdom,Xml,Xsd,Jdom,我的代码正在创建一个XML文档(使用JDOM 1.1),我希望根据XSD文件对其进行验证。但是,根据,提供给解析器的schemaLocation属性似乎只适用于可访问的URL 难道没有办法引用本地XSD文件吗?是否不可能针对全球范围内不可访问的XSD进行验证?我不明白…首先,schemaLocation属性只是指定模式位置的一种方法,在许多情况下,它不是最好的方法(如果您不相信文档是有效的,为什么您会相信它告诉您其模式在哪里?)。大多数模式验证器可能提供在外部提供模式位置的选项,例如在命令行上或

我的代码正在创建一个XML文档(使用JDOM 1.1),我希望根据XSD文件对其进行验证。但是,根据,提供给解析器的
schemaLocation
属性似乎只适用于可访问的URL


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

首先,schemaLocation属性只是指定模式位置的一种方法,在许多情况下,它不是最好的方法(如果您不相信文档是有效的,为什么您会相信它告诉您其模式在哪里?)。大多数模式验证器可能提供在外部提供模式位置的选项,例如在命令行上或通过API或GUI


其次,schemaLocation是一个URI。因此,它可以是一个相对URL,例如“test.xsd”标识与源文档位于同一目录中的架构文档。

我强烈建议您升级到JDOM 2.0.5。JDOM2中用于模式验证的机制更易于理解和实现。考虑这个代码(采取):

 File xsdfile = new File("myschema.xsd");
 XMLReaderJDOMFactory factory = new XMLReaderXSDFactory(xsdfile);
 SAXBuilder sb = new SAXBuilder(factory);
 Document doc = sb.build(new File("file.xml"));