Estoy intentando hacer la validación xml. Me están dando una lista de esquemas en tiempo de ejecución (posiblemente envuelto en un contenedor). Pases o failes de validación basados en el orden en que proporciono los esquemas a SchemaFactory.Validar XML con esquemas de carga en tiempo de ejecución, falla según el orden del esquema
Aquí es lo que estoy haciendo:
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()));
de nuevo, esto no funciona si el conjunto pasó de esquema no se inician con el esquema al que el elemento raíz de los referrs XML. ¿Hay una solución a esto o estoy haciendo algo mal?
¿Puedes publicar los esquemas y XML en alguna parte? – davidfmatheson
@davidfmatheson Desafortunadamente eso no es posible, puedo decir que es un conjunto de esquemas, el esquema raíz y un segundo esquema que permite reemplazar el cuerpo del primer esquema con una etiqueta diferente. –