Boa noite amigos javeiros...
Tenho uma aplicação que valida a estrutura de arquivos XML á partir de um XSD.
Ótimo. Possuo um método Boolean que recebe um objeto do tipo File com a locação do arquivo XML, e dentro deste método, ele busca pelo arquivo XSD e a partir daí ele valida a estrutura do XML verificando se está de acordo com o XSD. O método é este:
private boolean validaXml(File f) throws IntegrationException {
boolean result = false;
try {
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setNamespaceAware(true);
parserFactory.setValidating(true);
SAXParser parser = parserFactory.newSAXParser();
parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
parser.setProperty(JAXP_SCHEMA_SOURCE, Thread.currentThread().getContextClassLoader().getResourceAsStream(ARQUIVO_XSD));
parser.parse(f, new ValidatorHandler());
result = true;
} catch (SAXException e) {
LOGGER.fatal(e);
result = false;
} catch (IOException e) {
LOGGER.fatal(e);
result = false;
}
return result;
}
private static final String ARQUIVO_XSD = "tissV2_01_03.xsd";
org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'ans:st_tipoTransacao' to a(n) type definition component.Este nome que ele não consegue resolver está justamente em um dos arquivos secundários (que são chamados via include) e agora que estão locais, não estão mais disponíveis. Alguém sabe como resolver isso?
Desculpem por escrever tanto, mas quis explicar exatamente o problema.
Agradeço desde já qualquer ajuda ou intenção.
Vlw´[]s!