Bonjour,
Je suis entrein de travailler sur une validation XML en java.
Cette dernière marche parfaitement sur des fichiers n'ayant pas de namespace..
Par contre sur des fichiers avec namespace j'ai l'erreur suivante:
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'TEST:maBalise'.
Mon fichier XML:
Code :
- <?xml version="1.0"?>
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:TEST="http://...../..../..../TEST/" targetNamespace="http://......../......./...../TEST/" elementFormDefault="qualified">
- <xsd:element name="maBalise" type="TEST:maBalise"/>
- <xsd:complexType name="maBalise" mixed="false">
- <xsd:sequence>
- <xsd:element name="Entete" type="TEST:Entete"/>
- <xsd:element name="Corps" type="TEST:Corps" maxOccurs="unbounded"/>
- ...ETC...
|
Ma XSD:
Code :
- <?xml version="1.0" encoding="UTF-8"?>
- <TEST:maBalise xmlns:TEST="http://........../........./.........../TEST/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://......./....../......./TEST/ nom.xsd">
- <TEST:Entete>
- <TEST:maBalise2>monTexte2</TEST:maBalise2>
- <TEST:maBalise3>monTexte2</TEST:maBalise3>
- ...ETC...
|
Voici le code:
Code :
- String xsd = "D:/LOCAL/maXSD.xsd";
- String xml = "D:/LOCAL/monFichier.xml";
- boolean withNameSpace = true;
- InputSource in = new InputSource(xml);
- URL xsdURL = new File(xsd).toURL();
- SAXParser parser = new SAXParser();
- parser.setFeature("http://xml.org/sax/features/validation", true);
- parser.setFeature("http://apache.org/xml/features/validation/schema", true);
- if (withNameSpace){
- System.out.println("AVEC NAMESPACE" );
- parser.setFeature("http://xml.org/sax/features/namespaces", true);
- parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
- parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",xsdURL.toString());
- }
- else {
- System.out.println("SANS NAMESPACE" );
- parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",xsdURL.toString());
- }
- XmlCCHandler parseXmlCC = new XmlCCHandler();
- parser.setErrorHandler(parseXmlCC);
- parser.setContentHandler(parseXmlCC);
- parser.parse(in);
- System.out.println("isValid = " + parseXmlCC.isValidXSD());
- }
|
Si vous pouviez m'aider à résoudre se problème car j'ai essayé de nombreuses solution mais rien n'a marché...
Merci d'avance pour votre aide.