Проверка XML с загрузкой схем во время выполнения, ошибка зависит от порядка схемы

Я пытаюсь выполнить проверку 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. Это как-то исправить или я что-то не так делаю?

6
задан John B 7 August 2012 в 18:55
поделиться