Sto tentando di analizzare uno schema XML piuttosto complicato in un oggetto Schema in Java in modo da poter eseguire alcune convalide sui messaggi XML.Parsing Schema in Java Con le importazioni e include?
Il mio codice è simile a questo:
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("schema/schema.xsd")));
mio schema ha un bel paio di importazioni:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="base_1">
<xs:import namespace="base_1" schemaLocation="common/MessageBase.xsd"/>
</xs:schema>
... ecc. Quando tento di caricare lo schema, ottengo molti errori. Sulla base di un'altra domanda relativa a questo, sembra che ho bisogno di specificare un risolutore di risorse, ma non è qualcosa che dovrebbe essere gestito di default?
In tal caso, esiste una directory specifica in cui è necessario mettere lo schema in relazione a dove eseguo l'applicazione che sto scrivendo o relativa al file dello schema di base?
Infine, quando carico lo schema con XMLSpy o simili, funziona correttamente e posso convalidare le istanze XML senza problemi.
provato questo e ancora ottenere il seguente errore: src-determinazione: Impossibile risolvere il nome 'di base: StatusWithError_optional' a un (n) componente 'gruppo di attributi'. – magneticMonster
Questo è un altro problema. Suggerisce che il tuo schema non è completo e autonomo. Hai un gruppo di attributi denominato StatusWithError_optional? È nel giusto spazio dei nomi? – bmargulies
Sì, è definito in un file separato allo stesso livello del file di schema di base. Stesso spazio dei nomi. Il systemID deve essere il percorso del file .xsd root o della directory root per lo schema? Che ne dici dell'altro argomento del costruttore di 2-arg? – magneticMonster