Validar um arquivo XML em várias definições de esquema
Estou tentando validar um arquivo XML em vários esquemas diferentes (desculpas pelo exemplo inventado):
a.xsdb.xsdc.xsdO c.xsd, em particular, importa as importações de b.xsd e b.xsd a.xsd, utilizando:
<xs:include schemaLocation="b.xsd"/>
Estou tentando fazer isso via Xerces da seguinte maneira:
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)));
mas isso não está conseguindo importar todos os três esquemas corretamente resultando em não pode resolver o nome 'blah' para um (n) componente 'group'.
Eu validei isso com sucesso usandoPython, mas tendo problemas reais comJava 6.0 eXerces 2.8.1. Alguém pode sugerir o que está errado aqui ou uma abordagem mais fácil para validar meus documentos XML?