IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Valider XML Discussion :

XML conforme à une DTD


Sujet :

Valider XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 16
    Points : 7
    Points
    7
    Par défaut XML conforme à une DTD
    Bonjour tout le monde,

    voilà j'ai un petit soucis sur les DTD^^

    Mon problème est d'une simplicité enfantine : comment faire pour savoir qu'un fichier xml n'est pas conforme à une DTD ? Bizarre comme question, je sais^^ Je m'explique :

    J'ai une grande quantité de fichier xml, et je me suis dit, faisons une DTD pour être sûr que leur structure soit correcte, ainsi je n'aurais pas de surprise.
    J'ai donc écrit une DTD externe que je lie à un fichier xml, là pas de quoi de fouter un chat, mais quand je m'amuse à changer les balises de mon fichier xml, la page s'affiche normalement : ça n'a pas l'air de le troubler que les balises ne soit pas conforme à la DTD ^^;

    un peu de code pour illustrer ça :
    la DTD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <!-- DTD définissant la structure des exercices -->
     
    <!ELEMENT exercice (entete, guide, solution)>
     
    <!ELEMENT entete (titre, langage, auteur, motcle, niveau)>
    <!ELEMENT titre (#PCDATA)>
    <!ELEMENT langage (#PCDATA)>
    <!ELEMENT auteur (#PCDATA)>
    <!ELEMENT motcle (#PCDATA)>
    <!ELEMENT niveau (#PCDATA)>
     
    <!ELEMENT guide (enonce, conseil)>
    <!ELEMENT enonce (#PCDATA)>
    <!ELEMENT conseil (#PCDATA)>
     
    <!ELEMENT solution (classe+)>
     
    <!ELEMENT classe (nom, heritage, interface, attribut*, methode*)>
     
    <!ELEMENT nom (#PCDATA)>
    <!ELEMENT heritage (#PCDATA)>
    <!ELEMENT interface (#PCDATA)>
     
    <!ELEMENT attribut (signature, commentaire)>
    <!ELEMENT signature (#PCDATA)>
    <!ELEMENT commentaire (br+)>
    <!ELEMENT br (#PCDATA)>
     
    <!ELEMENT methode (signature, corps, commentaire, aide)>
    <!ELEMENT signature (#PCDATA)>
    <!ELEMENT corps (br+)>
    <!ELEMENT commentaire (br+)>
    <!ELEMENT aide (br+)>
    <!ELEMENT br (#PCDATA)>
    Mon souci c'est que lorsque je remplace la balise "commentaire" du noeud "attribut" par "commentaires" il ne bronche pas^^;

    Pour finir ce long post (désolé^^), voilà comment j'appelle la DTD dans mon XML :
    <!DOCTYPE exercice SYSTEM "exercice.dtd">

    et une fois interprété cela donne ça : (que ce soit bon ou pas)
    <!DOCTYPE exercice (View Source for full doctype...)>

    Personnellement je suis un peu paumé, un p'tit coup de pousse ne serait pas de refus^^

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Essaye ça!!
    Je ne suis pas un expert en la matière, mais tu pourrais essayé de tester ton fichier avec le logiciel XMLSPY. Ce logiciel (que tu dois connaître je suppose) ne laissera pas passé une érreur entre ta DTD et ton fichier XML.

    Il suffit que tu l'installes en version d'essai, et que tu ouvres ton fichier XML qui te semble érroné, il te dira tout de suite ce qui n'est pas bon !!

    ça c'est une fausse solution que je te propose, car ça pourra t'aider simplement pour le développement de ce que tu souhaites faire. Pour ce qui est de vérifier si un fichier XML est au bon format de la DTD, je laisse place au gourou XML de ce forum.

    @+
    Benne

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Sinon eclipse est livré avec le plugin XML qui va bien ou tu peux valider ton XML avec ton DTD ou ton XML Schema.

    See u.

    Fred

  4. #4
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Comme il a été dit plus haut : quand tu passes un XML dans un XSLT, la DTD n'est pas vérifiée ! Il faut le faire manuellement.

    Exemple avec PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
      // Ouvre le ficher XML (en mémoire) avec DOM, et valide la structure
      $error = array();
      $dom = domxml_open_mem ($xml, DOMXML_LOAD_VALIDATING, $error);
      if(!is_object($dom))
      {
        // Erreur lors de l'ouverture du fichier ?
        ... utilise $error[0]["line"] (ligne), $error[0]["col"] (colonne), $error[0]["nodename"] (balise), $error[0]["errormessage"] (message d'erreur)
      }
     
      // Si le document possède une DTD, valide son contenu
      // (uniquement hors ligne, pour une question de performance !!!)
      $doctype = $dom -> doctype();
      if (is_object($doctype) && $doctype -> system_id())
      {
        // Le document a un DOCTYPE (une DTD ?)
        if(!domxml_doc_validate($dom, $error))
        {
          // Erreur
          // .. utilise $doctype -> name() et $doctype -> system_id()
         }
      }
    @+ Haypo

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    ok merci
    C'est bien ce que je redoutais ^^;

Discussions similaires

  1. [XML] Parser une DTD?
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 03/04/2007, 11h28
  2. [DTD] Valider fichier xml avec une DTD externe
    Par Tail dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/06/2006, 18h14
  3. [DTD] Valider un fichier xml suivant une DTD
    Par Tail dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/06/2006, 11h23
  4. Réponses: 2
    Dernier message: 03/06/2005, 11h00
  5. [XML][DTD] Générer un XML avec une DTD ?
    Par elitost dans le forum Valider
    Réponses: 6
    Dernier message: 04/05/2005, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo