Próbuję wykonać sprawdzanie poprawności xml. Otrzymuję listę schematów w czasie wykonywania (ewentualnie zapakowany w słoik). Sprawdzanie poprawności przebiega lub kończy się niepowodzeniem na podstawie kolejności, w jakiej dostarczam schematy do SchemaFactory.Sprawdzanie poprawności XML z ładowaniem schematów w środowisku wykonawczym, awaria w zależności od kolejności schematu
Oto co robię:
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()));
ponownie, to się nie powiedzie, jeśli przekazany zestaw schematu nie zaczynają się od schematu, do którego element główny z referrs xml. Czy to jest poprawka, czy robię coś nie tak?
Czy umieścisz gdzieś schematy i XML? – davidfmatheson
@davidfmatheson Niestety nie jest to możliwe, mogę powiedzieć, że jest to zestaw schematów, schemat główny i drugi schemat, który pozwala na zastąpienie ciała pierwszego schematu innym znacznikiem. –