Question

Je me demandais si quelqu'un pourrait donner une fois de plus mon code de validation XML pour voir si je le fais bien. Voici la partie du code qui me pose problème ...

SAXParserFactory factory = SAXParserFactory.newInstance();

SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

// *** CODE FAILS ON THE BELOW LINE **/
factory.setSchema(schemaFactory
    .newSchema(new Source[] { new StreamSource(schemaStream) }));

SAXParser parser = factory.newSAXParser();

SAXReader reader = new SAXReader(parser.getXMLReader());
reader.setValidation(false);
reader.setErrorHandler(new ResultProducingErrorHandler());
reader.read(content);

Chaque fois que j'exécute le code ci-dessus, le message d'erreur suivant s'affiche:

src-resolve: Cannot resolve the name 'ns:myStructure' to a(n) 'type definition' component.

Les éléments mentionnés dans les messages d'erreur sont tous ceux importés dans le schéma via des appels à < xs: import / > ;. Le schéma semble valider sur OK via le Validateur de schéma XML du W3C .

Dois-je inclure chacun de ces schémas individuellement ou Java est-il assez intelligent pour aller chercher ces schémas supplémentaires? J'ai essayé de les ajouter dans le tableau transmis à l'appel newSchema mais cela ne faisait aucune différence.

Je ne pense pas pouvoir donner le lien vers le schéma. Je souhaite donc simplement indiquer un oui ou un non, si mon code est au moins acceptable.

Était-ce utile?

La solution

Assurez-vous que les instructions xs: import pointent vers des chemins accessibles depuis le répertoire actuel de votre application. Le répertoire en cours peut ne pas être ce que vous pensez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top