Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1531 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  probleme validation dtd

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme validation dtd

n°1309420
gorila
It's not a bug, it's a feature
Posté le 20-02-2006 à 02:09:01  profilanswer
 

salut a tous,
 
je savais trop ou poster cette question, s'il fallait la mettre en C, ou dans la sous categorie xml, donc je l'ai mise ici.
 
voila mon probleme en deux mots:
 
j'essaye d'inclure une validation dtd dans un programme que je fait, j'ai fait des tests avec des xml et dtd tres simple, et la libxml2 semble etre fachee avec ce que je lui envoi...
 
je vous met les exemples qui seront surement plus clairs.
 
Ici il faut voir que le fichier est valide lorsque je le passe dans les binaires de la libxml....
$ xmllint --valid file.xml  
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "toto.dtd">
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend</body>
</note>
$
 
et que la, avec mon programme, ca ne passe pas....
$ ./dtd file.xml file.dtd
Document not parsed successfully
$
 
Alors que le code est tout ce qu'il y a de plus basique.....
int main(int argc, char *argv[])
{
  xmlDocPtr doc;
  xmlDtdPtr dtd;
 
  if (argc != 3)
    return (1);
  doc = xmlParseFile(argv[1]);
  if (doc == NULL )
    {
      fputs("Document not parsed successfully\n", stderr);
      return (1);
    }
  dtd = xmlParseDTD(NULL, (xmlChar *) argv[2]);
  if (dtd == NULL)
    {
      fputs("DTD not parsed successfully\n", stderr);
      return (1);
    }
  if (xmlValidateDtd(NULL, doc, dtd) == 0)
    {
      fputs("Invalid document\n", stderr);
      return (1);
    }
  return (0);
}
 
Merci d'avance a ceux qui preteront attention a mon probleme.
 
bye.

mood
Publicité
Posté le 20-02-2006 à 02:09:01  profilanswer
 

n°1309432
gorila
It's not a bug, it's a feature
Posté le 20-02-2006 à 08:43:30  profilanswer
 

bon bah a croire que la nuit porte conseil, je viens de resoudre mon probleme.
 
pour ceux qui sont interesses par la solution, il s'agissait tout simplement de remplir tout les parametres de xmlValidateDtd correctements, a savoir dans mon cas de lui passer aussi un `context` a la place de NULL.
 
voici le code corriges pour ceux qui veulent:
 
#include "stdio.h"
#include <libxml/parser.h>
 
int main(int argc, char *argv[])
{
  xmlDocPtr  doc;
  xmlDtdPtr  dtd;
  xmlValidCtxtPtr ctxt;
 
  if (argc != 3)
    return (1);
  doc = xmlParseFile(argv[1]);
  if (doc == NULL )
    {
      fputs("Document not parsed successfully\n", stderr);
      return (1);
    }
  dtd = xmlParseDTD(NULL, (xmlChar *) argv[2]);
  if (dtd == NULL)
    {
      fputs("DTD not parsed successfully\n", stderr);
      return (1);
    }
  ctxt = xmlNewValidCtxt();
  if (ctxt == NULL)
    {
      fputs("Ctxt not created sucessfully\n", stderr);
      return (1);
    }
  if (xmlValidateDtd(ctxt, doc, dtd) == 0)
    {
      fputs("Invalid document\n", stderr);
      return (1);
    }
  puts("Document validated" );
  return (0);
}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  probleme validation dtd

 

Sujets relatifs
problème de validation d'un formulaireProblème pour validation w3c validator
probleme de validation avec includeProblème de validation XHTML 1.1
[résolu] Problème de validation XHTMLProblème de validation XHTML 1.1 avec un tableau
Probleme de validation w3c avec flashProblème validation fichier CSS par le WC3
probleme de Validation W3C[XHTML] problème de validation d'un XHTML strict
Plus de sujets relatifs à : probleme validation dtd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR