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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<?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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?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 : 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
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.