Les Allergies
Alimentaires
Posez votre question Signaler

[XML] Probleme validation XML avec DTD

Pijay - Dernière réponse le 30 nov. 2007 à 17:27
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.
Lire la suite 

[XML] Probleme validation XML avec DTD »

1 réponses
Réponse
+2
moins plus
Bonsoir,

J'ai testé ton problème sous autre chose qu'éclipse et effectivement, la structure est bonne, mais la validation ne passe pas, justement du fait que certains éléments ne soient pas dans le bon ordre.

Je n'ai pas trop le temps de me pencher sur ton problème (we) mais voilà un code que j'utilise :
SAXParserFactory factory = SAXParserFactory.newInstance();			
			factory.setValidating(true);
			factory.setNamespaceAware(true);
			SAXParser parser = factory.newSAXParser();
			parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage" , "http://www.w3.org/2001/XMLSchema");			

			// --- Set Input source
			InputSource source = new InputSource(getConfig().getRoot() + '/' + getConfig().getData() + '/' + getXmlFile());
			
			// --- parse
			XMLReader reader = parser.getXMLReader();
			reader.setContentHandler(new DefaultHandler());
			reader.setErrorHandler(new DefaultHandler());
			reader.setEntityResolver( new MonPropreResolver() );
			reader.parse(source);		


Et il me semble que ca fonctionne bien.
A voir donc... bon courage :)

Ajouter un commentaire
Ce document intitulé « [XML] Probleme validation XML avec DTD » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?