charger un fichier et valider par un schéma XML
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:
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:
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:
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