Je veux valider un fichier xml par un xml schema, voila la partie du code qui coince je pense, quand je lance le programme avec un fichier xml non valide (exemple une balise qui se ferme sans avoir été ouverte), j'obtiens un tas d'erreur, du au xml non valide, mais si par contre le xml est valide mais ne correspond pas au xml schema, aucune erreur...

import org.xml.sax.*;
...
public DelegateHandler() throws SAXException, ParserConfigurationException {
			SAXParserFactory factory = SAXParserFactory.newInstance();//
			// Use the validating parser
			factory.setNamespaceAware(true);
			factory.setValidating(true);
			saxParser = factory.newSAXParser();//
			try {
				saxParser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
				} 
				catch (SAXNotRecognizedException x) {
				  // Happens if the parser does not support JAXP 1.2
					x.printStackTrace();
				}
			System.out.println("Test");
			saxParser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", new File("C:\\grammaire.xsd"));
		}

Quelqun aurait t-il une idée ?
Modifié par Kahor (11 Jun 2008 - 11:03)
Si jamais cela interesse quelqun, il suffisait de surcharger les méthode error, warning, et fatalerror dans la classe DelegateHandler pour afficher les exceptions :

public void error(SAXParseException e) throws SAXException {
	e.printStackTrace();
}
...

et aussi d'utiliser un constructeur plus propre :

public DelegateHandler(final URL schema) throws SAXException, ParserConfigurationException {
			SAXParserFactory factory = SAXParserFactory.newInstance();
			SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
			factory.setSchema(sf.newSchema(schema));
			factory.setNamespaceAware(true);
			saxParser = factory.newSAXParser();//
		}

Modifié par Kahor (24 Jun 2008 - 17:23)