Sto cercando di convalidare un file XML con una serie di schemi diversi (scuse per l'esempio inventato):convalidare un file XML con più definizioni di schema
- A.xsd
- B.xsd
- c.xsd
c.xsd in particolare alle importazioni B.xsd e importazioni B.xsd A.xsd, utilizzando:
<xs:include schemaLocation="b.xsd"/>
che sto cercando di fare questo via Xerces nel modo seguente:
XMLSchemaFactory xmlSchemaFactory = new XMLSchemaFactory();
Schema schema = xmlSchemaFactory.newSchema(new StreamSource[] { new StreamSource(this.getClass().getResourceAsStream("a.xsd"), "a.xsd"),
new StreamSource(this.getClass().getResourceAsStream("b.xsd"), "b.xsd"),
new StreamSource(this.getClass().getResourceAsStream("c.xsd"), "c.xsd")});
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(xmlContent)));
ma questo non riesce a importare tutti e tre gli schemi risultanti correttamente non può risolvere il nome di 'bla' a un (n) componente "gruppo".
ho convalidato questo successo utilizzando Python, ma avere problemi reali con Java 6.0 e Xerces 2.8.1. Qualcuno può suggerire cosa sta andando storto qui, o un approccio più semplice per convalidare i miei documenti XML?
Qualche possibilità di approfondire ulteriormente la questione su come il resolver delle risorse personalizzate fa funzionare tutto questo? Grazie. – Casey
Posso aggiungere che devi aggiungere qualcosa come: ' 'nel genitore xsd caricato con' nuovo StreamSource (this.getClass(). GetResourceAsStream ("parent.xsd") ' –
Hai creato uno schema padre" artificiale "che ha importato tutti gli altri? – zedoo