Bonjour,
Je suis débutant en XML.
J'ai developper un parser SAX sous JAVA pour lire un document XML.
J'ai écrit :
> le fichier XML "peronne.xml"
> le fichier DTD "individu.dtd"
> la classe JAVA "SaxParserPerso.java"
J'ai voulu tester la validation de mon fichier avec la DTD. Pour cela, j'ai spécifié dans ma classe JAVA :
SAXParserFactory spf = SAXParserFactory.newInstance();
//validation du document avec la DTD
spf.setValidating(true);
j'ai essayé aussi avec :
SAXParserFactory spf = SAXParserFactory.newInstance();
//validation du document avec la DTD
spf.setFeature("http://xml.org/sax/features/validation",true);
Le problème est que, même si le document XML n'est pas valide, aucune erreur de structure est détecté ????
Fichier XML :
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE livre SYSTEM "individu.dtd">
<livre>
<personne>
<nom>Hetfield</nom>
<prenom>James</prenom>
<telephone>06-66-66-66-66</telephone>
<email>hetfieldl@metallica.com</email>
</personne>
<personne>
<telephone>06-69-69-69-69</telephone>
<nom>Ulrich</nom>
<prenom>Lars</prenom>
<email>ulrich@metallica.com</email>
</personne>
</livre>
Fichier DTD :
<!ELEMENT livre (personne*) >
<!ELEMENT personne (nom,prenom,telephone,email?) >
<!ELEMENT nom (#PCDATA) >
<!ELEMENT prenom (#PCDATA) >
<!ELEMENT telephone (#PCDATA) >
<!ELEMENT email (#PCDATA) >
Comme vous pouvez le voir, la strucutre du document n'est pas valide car le "telephone" de la 2° personne est mal placé.
Lorsque le document est PARSER, tout se déroule normalement et aucune erreur de validation est détectée.
Logiquement, la lecture du document devrait s'arreté a cette balise mal placée ?
Comment activé la validation du document a partir d'une DTD ?
Le fait d'executer mon application sous Eclipse pose - t - il probleme pour la validation du document ?
Informations complémentaires : Je travail sous Debian(Linux) avec la plateforme Eclipse 3.2.
Si quelqu'un connait bien le domaine, toute aide ou explication serait la bienvenue.
Merci d'avance.
Configuration: Debian (Linux)
Eclipse 3.2