Я пытаюсь выполнить проверку xml. Мне дается список схем во время выполнения -во время (, возможно, завернутый в банку ). Проверка проходит или не проходит в зависимости от порядка, в котором я предоставляю схемы в SchemaFactory.
Вот что я делаю:
private void validateXml(String xml, List<URI> schemas){
Source[] source = new StreamSource[schemas.size()];
int i=0;
for (URI f : schemas){
source[i++] = new StreamSource(f.openStream());
}
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NA_URI);
sf.setResourceResolver(new MyClassPathResourceResolver());
Schema schema = schemaFactory.newSchema(source);
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new ByteArrayInputStream(xml.getBytes()));
опять же, это не удается, если переданный набор схем не начинается со схемы, на которую ссылается корневой элемент xml. Это как-то исправить или я что-то не так делаю?