Bonjour,
je voudrais valider un fichier XSD pour vérifier qu'il a bien été formé.
Dans ce fichier XSD, je n'ai, pour l'exemple et le test, utilisé que des balises par défaut et sans namespace.
voici le fichier XSD que je veux valider.
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?xml version='1.0' encoding='utf-8' ?>
<schema xmlns='http://www.w3.org/2001/XMLSchema' elementFormDefault='qualified' version='1.0'>
  <annotation>
    <documentation>...</documentation>
  </annotation>    
</schema>
En cela, j'ai téléchargé les XSD et DTD se trouvant ici http://www.w3.org/2001/XMLSchema et j'utilise donc le fichier XMLSchema .xsd pour ma validation.
Mais lorsque je lance la validation, j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'xml:lang' to a(n) 'attribute declaration' component.
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDHandler.getGlobalDecl(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDAttributeTraverser.traverseLocal(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDAbstractTraverser.traverseAttrsAndAttrGrps(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDComplexTypeTraverser.processComplexContent(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDComplexTypeTraverser.traverseComplexContent(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDComplexTypeTraverser.traverseComplexTypeDecl(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDComplexTypeTraverser.traverseLocal(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseNamedElement(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseGlobal(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDHandler.traverseSchemas(Unknown Source)
	at org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(Unknown Source)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
	at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
	at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source)
	at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:594)
	at xx.yyy.zzzzzz.util.XMLUtils.validate(XMLUtils.java:226)
	at xx.yyy.zzzzzz.config.ConfigurationValidator.validateOneFragmentFile(ConfigurationValidator.java:303)
	at xx.yyy.zzzzzz.config.ConfigurationValidator.generateProcessXSD(ConfigurationValidator.java:123)
	at xx.yyy.zzzzzz.runner.SoftwareRunner.generateProcessXSDIfSpecifiedAndExit(SoftwareRunner.java:238)
	at xx.yyy.zzzzzz.runner.SoftwareRunner.main(SoftwareRunner.java:142)
Voici le code Java que j'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
        final Source xsdSource = new SAXSource(new InputSource(xsdStream));
        final Schema schema = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(xsdSource);
        final Validator validator = schema.newValidator();       
        final Source source = new StreamSource(xmlFile);
        try {
            validator.validate(source);
            return true;
        } catch (SAXException e) {
            return false;
        }
L'exception est lancée au niveau du validator.validate(source);Je suis sous oracle JDK 6
J'arrive très bien à valider des fichiers XML contre des XSD.
J'obtiens cette exception uniquement lorsque j'essaie de valider un fichier XSD (qui n'est rien d'autre qu'un fichier XML aussi ...)
J'ai un peu cherché déjà, mais je sèche.
J'ai aussi téléchargé et mis dans mon CLASSPATH les lib xercesImpl et ses dépendances pour solutionner tout ceci, mais rien n'y fait.
Est ce que quelqu'un d'autre aurait une solution ?
Merci d'avance.
Cordialement,