[ java ] forcer une validation avec une DTD bien précise.

forcer une validation avec une DTD bien précise. [ java ] - Java - Programmation

Marsh Posté le 18-06-2002 à 14:39:23    

salut,
 
j'utilise un DocumentBuilder pour valider des documents et j'ai un souci avec des documents ne comportant pas de DOCTYPE. dans ce cas, je voudrais forcer le parsing à utiliser une DTD bien précise (que je pourrais définir assez facilement avec la balise racine)
 
mais comment fait-on ? tous les exemples que je trouve me montre comment faire avec un EntityResolver ... mais je n'ai justement pas d'entité à résoudre. (ou alors je n'ai pas compris les quelques exemples trouvés)
 
qq'un peut m'aider ?


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 18-06-2002 à 14:39:23   

Reply

Marsh Posté le 18-06-2002 à 14:40:20    

je ne suis pas persuadé que ce que tu veux faire soit XML-compliant. Si un docuemnt XML n'a pas de DTD tu ne peux pas la forcer par programmation
 
Inutuitivement c'est ma réponse mais c'est peut etre pas 100% correct


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-06-2002 à 14:51:06    

sans DOCTYPE, je peux facilement savoir si le XML est bien formé. mais je dois vérifier que ce document est valide... et je pouvais le faire avec une vieille techno que l'on avait en interne mais qui n'est plus maintenue -> marche pû.
 
mais je sais que c'est possible. en gros je dois expliquer au parser de ne pas résoudre le DOCTYPE mais d'utiliser telle ou telle DTD. c'est ce que je n'arrive pas à écrire.


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 18-06-2002 à 15:00:34    

ouais j'ai bien compris ton problème et je connais la différence entre valide et bien formé merci.
 
Ma réponse ne change pas. Si tu as d'autres feedback ca m'intéresse.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-06-2002 à 15:12:19    

je ne doutais pas de toi :jap: j'ai dû lire trop vite. ;)


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 18-06-2002 à 19:19:00    

<réponse_stupide>
si tu mets le nom de ta DTD dans le doctype, le parser va la chercher nan??
</réponse_stupide>
 
voilà, c tout ce que je dirais à propos de ça!  :p

Reply

Marsh Posté le 19-06-2002 à 09:15:38    

oui, c'est sûr...
mais certains de nos documents arrivent sans DOCTYPE...  
 
je n'ai pas encore trouvé... mais je ne désespère pas... :)


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 19-06-2002 à 10:23:06    

TBone a écrit a écrit :

oui, c'est sûr...
mais certains de nos documents arrivent sans DOCTYPE...  
je n'ai pas encore trouvé... mais je ne désespère pas... :)  




ca doit être possible, c'est obligé !
si tu trouve, tu le postes ? ca m'intéresse aussi ...

Reply

Marsh Posté le 19-06-2002 à 10:28:47    

benou a écrit a écrit :

 
ca doit être possible, c'est obligé !




 
je serais pas aussi affirmatif que toi. Bien sûr que ca pourrait etre possible mais si on y réfléchis, ca sert à quoi de mettre un DTD dans un document XML si c'est pour qu'on puisse le changer par programmation ou en ajouter un si il n'y en a pas.
 
Après tout le contenu du document XML définit sa structure. Donc pas de DTD pas de validation. C'est mon sentiement et rien ne m'a encore contredit jusque mainteant.
 
ceci dit si tu trouves ca m'intéresse aussi :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 19-06-2002 à 10:38:01    

DarkLord a écrit a écrit :

 
ca sert à quoi de mettre un DTD dans un document XML si c'est pour qu'on puisse le changer par programmation ou en ajouter un si il n'y en a pas.




qui parle de la changer ou de l'ajouter ??
 
non, le but c'est juste de vérifier la conformitée à un moment donné. Je ne vois pas quel problème ca te pose ...
exemple : tu as 100 000 fchiers XML et tu veux faire évoluer leur DTD. Plutot que de changer la DTD et vérifier si les fichiers sont enoer valide, tu testes la nouvelle DTD en la passant sur les fichiers. Si tout est bon, tu remplace l'ancienne DTD.
C'est juste un exemple à la con, mais je suis certain qu'il y aurait des tonnes d'utilisation possible.
 
Tine,s un autre exemple : vérifier qu'une requête SOAP est bien du format attendu ... (y a pas de DOCTYPE dans une requête SOAP)

Reply

Marsh Posté le 19-06-2002 à 10:38:01   

Reply

Marsh Posté le 19-06-2002 à 10:42:47    

:ouch: mmmm intéressant. je vais voir tiens :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 19-06-2002 à 15:18:06    

je l'utilise dans une requête similaire au premier exemple de benou.


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 21-06-2002 à 10:26:49    

mon pb est un peu similaire :
 
je n'arrive pas à faire comprendre à jdom qu'il doit utiliser telle ou telle doctype pour un document.
Le pb est le suivant : j'ai un fichier XML à parser pour produire un org.jdom.Document, je ne souhaite pas préciser de doctype directement dans le document XML pour de très bonnes raisons...
Je voudrais par contre pouvoir faire :

Code :
  1. SAXBuilder builder = new SAXBuilder( false );
  2. Document doc = builder.build( "monFichier.xml" );
  3. DocType doctype = new DocType( "monDoctype", "doctype.dtd" );
  4. doc.setDocType( doctype );


 
malheureusement, ça ne fonctionne pas comme ça devrait, en effet, mon doctype définit des valeurs par défaut pour certains attributs d'éléments de mon fichier XML et lorsque je cherche à récupérer un des ces attributs, qui doit être celui par défaut car non renseigné dans l'XML, et bien, il renvoie null. Alors que si je met la référence sur le doctype à l'intérieur du fichier XML, aucun pb !
alors, si qqun a déjà eu à faire ceci... HELP


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 19-08-2002 à 11:18:51    

je me permet de remonter ce topic parce que j'ai un besoin similaire : j'ai des fichiers XML qui contiennent un Doctype précisant une DTD. Le problème c'est que l'url de la DTD pointe vers une adresse internet qui n'est pas accessible depuis le poste ou tourne mon appli.  
Donc je me prend des java.net.UnknownHostException dans la tête à chaque fois que je parse mon ficher avec la commande

Code :
  1. documentBuilderFactory
  2.  .newDocumentBuilder()
  3.  .parse(new java.io.FileInputStream("D:/tmp/test_doctype.xml" ));


 
Est ce que quelqu'un sait comment dire au parser de ne pas essayer de lire la DTD indiquée dans le doctype ?
 
tbone, si tu as trouvé la solution à ton problème, il pourra peut-être aussi régler le mien ...
 
remarque : j'ai bien essayé un documentBuilderFactory.setValidating(false); mais ca marche pô :(
 
edit: c'est un peu n'importe quoi que le les smiley soient insérer dans du texte entre balise [ cpp]


Message édité par benou le 19-08-2002 à 11:20:13
Reply

Marsh Posté le 19-08-2002 à 11:26:25    

--greg-- a écrit a écrit :

benou: coche "desactiver les smilies" :D




on peut pas le faire en éditant le post. et puis je voulais pas désactiver tous les smiley du post. Ca devrait être automtique pour les balises de code ...
mais bon, c'est pas le sujet de mon post ;)

Reply

Marsh Posté le 19-08-2002 à 11:29:06    

je me permets encore d'insister. Si on a fait une spec, un standard c'est pas pour le contourner. C'est dur je sais bien mais visiblement c'est comme ça puisque personne n'a trouvé de solution depuis ...
 
 :(


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 19-08-2002 à 11:30:57    

sinon avec jdom, la methode parse qui prend un booleen qu'on met à false pour ne pas valider, elle marche elle:)

Reply

Marsh Posté le 19-08-2002 à 11:31:18    

je ne vois pas en quoi le fait de configurer un parser est une contournation de la norme ...
tu vois bien que dans mon cas, c'est un problème réélement bloquant !  

Reply

Marsh Posté le 19-08-2002 à 11:37:37    

c'est pas une configuration de parser. Ton document déclare qu'il est conforme à une DTD. Si la DTD est pas dispo c'est normal qu'il y ait un blème ...
 
Maintenant je suis d'accord que si tu désactive la validation ca devrait fonctioner. Aussi loin que je me souvienne ca ne change pas le problème cependant, désolé.


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed