Bonjour,

J'aimerai savori comment faire pour charger un fichier XML qui doit être validé par un schéma XML.
Voici mes sources.

vente.xsd
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="personne.xsd"/>
 
  <xs:element name="vente">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="objet">
          <xs:complexType>
            <xs:sequence>
              <xs:any/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element ref="idpublic"/>
      </xs:sequence>
      <xs:attribute name="date-fin" type="xs:dateTime"/>
    </xs:complexType>
  </xs:element>
 
  <xs:element name="voiture">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="couleur"/>
      </xs:sequence>
      <xs:attribute name="marque" type="xs:string"/>
      <xs:attribute name="modele" type="xs:string"/>
      <xs:attribute name="carburant" default="essence">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="essence"/>
            <xs:enumeration value="diesel"/>
            <xs:enumeration value="GPL"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="km" type="xs:positiveInteger"/>
      <xs:attribute name="annee" type="xs:gYear"/>
    </xs:complexType>
  </xs:element>
 
  <xs:element name="couleur">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="metallisee" type="xs:boolean" default="true"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>

vente.xml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE voiture SYSTEM "C:/Users/Delphine/workspace/XMLEncheres/src/vente.xsd">
 
<voiture marque="peugeot" modele="206" annee="2005" kms="60000" carburant="essence">
  <couleur metalisee="oui">bleue</couleur>
</voiture>

et fichier JAVA :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SAXBuilder sxb = new SAXBuilder();
		Document doc = new Document();
		sxb.setValidation(true);		
		try {
		   doc = sxb.build(new File("vente.xml"));
		} catch (JDOMException e) {e.printStackTrace();} 
                  catch (IOException e) {e.printStackTrace();}

Or quand j'éxécute le programme, j'ai l'erreur suivante :


org.jdom.input.JDOMParseException: Error on line 2 of document file:///C:/Users/Delphine/workspace/XMLEncheres/src/vente.xsd: The markup declarations contained or pointed to by the document type declaration must be well-formed.
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:501)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:807)
at TP.JDOM.recupereInfosVente(JDOM.java:207)
at TP.JDOM.creerVente(JDOM.java:61)
at TP.JDOM.main(JDOM.java:250)
Caused by: org.xml.sax.SAXParseException: The markup declarations contained or pointed to by the document type declaration must be well-formed.


J'arrive vraiment pas à comprendre...
Merci de votre aide