Bonjour,

Je souhaiterai utiliser l'API Xerces pour valider des documents XML par rapport à des schéma XSD.

Pour avoir une idée, voici une parcelle du code de validation:
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
28
29
30
31
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
       File schemaLocation = new File("C:\\test.xsd");
       Schema schema = factory.newSchema(schemaLocation);
       Validator validator = schema.newValidator();
 
       DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
       domFactory.setNamespaceAware(true); // never forget this
       DocumentBuilder builder = domFactory.newDocumentBuilder();
       Document doc = builder.parse("C:\\test.xml");
 
       DOMSource source = new DOMSource(doc);
       DOMResult result = new DOMResult();
 
       try {
    	   ErrorHandler lenient = new ForgivingErrorHandler();
    	   validator.setErrorHandler(lenient);
           validator.validate(source, result);
           Document augmented = (Document) result.getNode();
           // do whatever you need to do with the augmented document...
           System.out.println("correct");
 
           //affiche(augmented.getDocumentElement());
 
       }
       catch (SAXParseException e) {
    	   System.out.println(e.getMessage());
	   }
       catch (SAXException ex) {
           System.out.println( " incorrect ");
 
       }
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
public class ForgivingErrorHandler implements ErrorHandler {
 
    public void warning(SAXParseException ex) {
        System.err.println("error: "+ex.getMessage());
        System.err.println("public ID:  "+ex.getPublicId());
        System.err.println("system ID:  "+ex.getSystemId());
        System.err.println("ligne number:  "+ex.getLineNumber());
        System.err.println("Colomn number:  "+ex.getColumnNumber());
    }
 
    public void error(SAXParseException ex) {
        System.err.println("error: "+ex.getMessage());
        System.err.println("public ID:  "+ex.getPublicId());
        System.err.println("system ID:  "+ex.getSystemId());
        System.err.println("ligne number:  "+ex.getLineNumber());
        System.err.println("Colomn number:  "+ex.getColumnNumber());
    }
 
    public void fatalError(SAXParseException ex) throws SAXException {
        throw ex;
    }
 
}
Tous marche plutôt bien. Sauf que les retours du parseur lorsque le fichier est incorrect sont en anglais.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
error: cvc-datatype-valid.1.2.1: '2009-04-02T09:00:02.0Zx' is not a valid value for 'dateTime'.
Ma question est donc: Est-ce qu'il est possible d'avoir ces résultats en Français ????

Merci d'avance.