根据多个架构定义验证 XML 文件
我正在尝试根据许多不同的架构验证XML文件(为人为的示例表示歉意):
- a.xsd
- b.xsd
- c.xsd
c.xsd 特别导入 b.xsd 和 b.xsd 导入 a.xsd,使用:
<xs:include schemaLocation="b.xsd"/>
我正在尝试通过以下方式通过Xerces执行此操作:
XMLSchemaFactory xmlSchemaFactory = new XMLSchemaFactory();
Schema schema = xmlSchemaFactory.newSchema(new StreamSource[] { new StreamSource(this.getClass().getResourceAsStream("a.xsd"), "a.xsd"),
new StreamSource(this.getClass().getResourceAsStream("b.xsd"), "b.xsd"),
new StreamSource(this.getClass().getResourceAsStream("c.xsd"), "c.xsd")});
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(xmlContent)));
但这无法正确导入所有三个架构,导致无法将名称“blah”解析为(n)“组”组件。
我已经使用Python成功验证了这一点,但是在Java 6.0和Xerces 2.8.1中遇到了真正的问题。任何人都可以建议这里出了什么问题,或者更简单的方法来验证我的XML文档吗?