私はxml検証をしようとしています。実行時にスキーマのリストが与えられています (おそらく jar にラップされています)。検証は、スキーマを 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 のルート要素が参照するスキーマで始まらない場合、これも失敗します。これに対する修正はありますか、それとも何か間違っていますか?