Discussion: Trouver l'erreur :-)

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut Trouver l'erreur :-)

    Bonjour à tous,
    cette année je débute mes études avec un cours en XML, bon pour l'instant j'en suis qu'au début, j'ai commencé la semaine dernière.
    On me demande comme exercice de trouver combien d'erreurs contient ce document xml qui n'est pas valable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> 
    <!DOCTYPE université [ <!ELEMENT université (faculté*,description*)*> 
    <!ELEMENT faculté (département*)> <!ELEMENT département EMPTY> 
    <!ATTLIST département nom CDATA #REQUIRED                 xmlnote (vide|plein) "plein"> 
    <!ATTLIST université téléphone ID #REQUIRED> ]> 
    <université téléphone="514-4321" xml:lang="fr"> <description>La plus grande.</description> 
    <faculté nom="sciences"> <département nom="mathématiques"></département> 
    <département nom="sociologie"  xmlnote="vide"/> </faculté> </université>
    Alors pour l'instant j'ai trouvé que, ligne 4, " xmlnote(vide|plein)"plein" n'a rien à faire dans une instruction de ce type.
    Après je me disais du coup xmlnot="vide" ligne8, est aussi une erreur.

    Désolé d’embêter avec quelque chose d'aussi simple, mais j'aimerais comprendre.
    Je vous remercie.
    Bonne soirée
    while.dede

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 074
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 074
    Points : 18 744
    Points
    18 744

    Par défaut

    Hello,

    Citation Envoyé par while.dede Voir le message
    Alors pour l'instant j'ai trouvé que, ligne 4, " xmlnote(vide|plein)"plein" n'a rien à faire dans une instruction de ce type.
    Un peu dommage, parce que c'est la manière correcte de déclarer une énumération de valeurs permises pour un attribut.
    Du coup xmlnote="vide" à la ligne 8 est parfaitement correct, puisque "vide" fait partie des valeurs autorisées.

    ...

    Du coup, pour trouver les vraies erreurs. Est-ce que tu pourrais nous donner quelques exemples de trucs où on t'a expliqué "ça c'est correct, parce que" et "ça, ça ne va pas, parce que" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Bon, ça commence bien j'ai déjà faux dès le début, mais bon c'est comme cela qu on apprend!
    Alors, pour l'instant c'est la première fois que l'on me demande de chercher les erreurs dans un doc xml, du coup j'ai pas beaucoup d’exemples de la sorte.
    J'ai eu des cours pour m'initier aux règles de base du xml, aussi sur les DTD et les espaces nom. (c'est très récent du coup j'ai pas encore tout intégré)
    Je vais déjà essayer de décomposer ce texte.

    La déclaration me semble correcte elle est bien au début du document xml et il n'y a pas de DTD externe du coup le standalone prend la valeur yes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    Ici ça va.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!DOCTYPE université [
    Ensuite, ici aussi ça me semble ok.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT université (faculté*,description*)*>
    Petite erreur, je crois, l’élément description n'est pas décrit dans la DTD.

    Ok aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT faculté (département*)>
    Ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT département EMPTY>
    là où je me suis planté avant, petite question l’espace change quelque chose ou pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ATTLIST département nom CDATA #REQUIRED                 xmlnote (vide|plein) "plein">
    Voilà fin de la DTD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ATTLIST université téléphone ID #REQUIRED> ]>
    L'élément racine,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <université téléphone="514-4321" xml:lang="fr">
    Si ici autre petite erreur, selon la DTD l’élément description devrait être après l’élément faculte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <description>La plus grande.</description> 
    <faculté nom="sciences">
    ça respecte bien la restriction comme quoi l'élément département doit être vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <département nom="mathématiques"></département>
    ici c'est bon l'élément département pouvait ne pas apparaître, apparaître une fois ou plusieurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <département nom="sociologie"  xmlnote="vide"/>
    ici la formulation est ok aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </faculté> </université>
    Bon donc j'en suis à deux erreurs si c'est bien ça.

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Bonjour,
    alors j'ai revu mes cours et selon moi, ce qui fait que ce document n'est pas valide sont bien ces deux erreurs.
    Après je me suis peut être trompé.
    J'aimerai avoir votre avis là-dessus.
    Une bonne soirée à vous :-D

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 074
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 074
    Points : 18 744
    Points
    18 744

    Par défaut

    Hello,


    Citation Envoyé par while.dede Voir le message
    là où je me suis planté avant, petite question l’espace change quelque chose ou pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ATTLIST département nom CDATA #REQUIRED                 xmlnote (vide|plein) "plein">
    Quel espace ? De quoi parle-t-on ?
    Il faut bien sûr séparer les mots-clés avec du whitespace, mais ça n'a aucune importance de mettre juste un espace ou bien une douzaine, des tabulations, des retour à la ligne...

    Citation Envoyé par while.dede Voir le message
    Petite erreur, je crois, l’élément description n'est pas décrit dans la DTD.
    Ouaip. Élément utilisé mais pas déclaré => pas valide tout ça.

    Citation Envoyé par while.dede Voir le message
    Si ici autre petite erreur, selon la DTD l’élément description devrait être après l’élément faculte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <description>La plus grande.</description> 
    <faculté nom="sciences">
    Non.

    La définition est <!ELEMENT université (faculté*,description*)*>.
    Il y a des étoiles * partout. Ça veut dire que la séquence faculté*, description*, non seulement chacun d'eux tu peux le répéter autant de fois que tu veux, mais la séquence elle-même, tu peux la recommencer du début autant de fois que tu veux.

    Autrement dit, le résultat de tout ça, c'est que tu peux mélanger des éléments <faculté>, <description> tant que tu veux dans l'ordre que tu veux à l'intérieur d'un <université>. Pas d'erreur de ce côté-là.

    Bien sûr, comme <description> n'est pas déclaré, on retrouve la même erreur que déjà soulevée plus haut.


    Maintenant, pour trouver d'autres erreurs.

    Est-ce que, pour chaque élément, tu pourrais nous faire la liste des attributs qu'il contient, et vérifier pour chacun de ces attributs que c'est conforme à ce que dit la DTD ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre expérimenté
    Inscrit en
    octobre 2011
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 969
    Points : 1 685
    Points
    1 685

    Par défaut

    Je dirais l'erreur la plus cachée est le dataType de @téléphone, étant ID: il doit satisfaire toutes les règles de la construction d'un nom d'élément xml, y compris par conséquence qu'il ne doit pas commencer par un nombre...

    Et puis un peu moins cachée est la construction de xml:lang. En w3c schéma, on peut la laisser en silence mais pas dans dtd. On doit la déclarer comme un attribut. On peut pourtant y mettre le dataType comme #FIXED "fr" comme une solution acceptable.

    J'y ai compté quatre erreurs indépendantes au total, et voilà.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Bonjour,
    tout d'abord, merci de votre aide Thelvin et Tsuji, sinon oui j'avais totalement zappé qu'il y avait les étoiles.
    Donc ok pour là première erreur et merci pour la précision à propos des espaces.

    En effet Tsuji j’étais justement en train de revenir sur mes notes, car je me rappelais d'avoir entendu quelque chose
    sur le fait qu'un nom XML ne doit pas commencer par un nombre ou "xml".
    Pour le xml:lang je ne savais pas , merci.

    Donc pour résumer nous avons l'erreur de l'élément description pas déclaré dans la dtd, ensuite l’attribut xml:lang pas déclaré et l'erreur du nom xml commençant par un nombre.
    Par contre Tsuji où as-tu vu la quatrième erreur?

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 074
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 074
    Points : 18 744
    Points
    18 744

    Par défaut

    Est-ce que tu as fait la liste de tous les attributs, comme je te l'ai demandé ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Heu, j'ai pas fini, j'ai du m'absenter après avoir répondu au dernier message, je la termine et je la poste.

  10. #10
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Voilà pour les éléments et les attributs:

    Nous avons l'élément racine qui est l'élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <université téléphone="514-4321"    xml:lang="fr"></université>
    Qui a comme attributs (téléphone) et (xml:lang).

    Ensuite l’élément description qui n'a pas d'attribut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <description>La plus grande.</description>
    L'élément faculté ayant l'attribut (nom):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <faculté nom="sciences"></faculté>
    l'élément département ayant l'attribut (nom):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <département nom="mathématiques"></département>
    de nouveau l'élément département ayant les attributs (nom) et (xmlnote):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <département nom="sociologie"  xmlnote="vide"/>
    Bonne soirée

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 074
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 074
    Points : 18 744
    Points
    18 744

    Par défaut

    Et pour chacun d'eux, y a-t-il un commentaire sur leur validité ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Voilà en éspérant que je n'ai rien oublié.
    Nous avons l'élément racine qui est l'élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <université téléphone="514-4321" 
     
    xml:lang="fr"></université>
    Qui a comme attributs (téléphone) et (xml:lang).
    Pas valide à cause du nom xml employé par l'attribut téléphone et de l'attribut xml:lang non déclaré.

    Ensuite l'élement description qui n'a pas d'attribut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <description>La plus grande.</description>
    Pas valide puisqu'il n'a pas été déclaré dans la DTD.

    L'élément faculte ayant l'attribut (nom).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <faculté nom="sciences"></faculté>
    VALIDE il contient bien l'élément département qui peut apparaitre ou pas et apparaitre plusieurs fois et qui doit etre vide.

    l'élément département ayant l'attribut (nom):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <département nom="mathématiques"></département>
    VALIDE

    de nouveau l'élément departement ayant les attributs (nom) et (xmlnote).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <département nom="sociologie"  xmlnote="vide"/>
    VALIDE

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 074
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 074
    Points : 18 744
    Points
    18 744

    Par défaut

    Bon. Ben j'abandonne.

    Il y a rien qui te choque concernant la validité de l'attribut nom de l'élément <faculté> ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Mince j'avais pas fais attention, il n'est pas déclaré dans la DTD.

  15. #15
    Membre expérimenté
    Inscrit en
    octobre 2011
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 969
    Points : 1 685
    Points
    1 685

    Par défaut

    Je crains que tu ne sois pas compris tout à fait quoique tu dis... Voici le dtd corrigé en gardant le xml exactement le même tout le temps. Comme ça tu vois plus clair.
    Code dtd : 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
    <!DOCTYPE université[
        <!ELEMENT université (faculté*,description*)*>
        <!ELEMENT faculté (département*)>
        <!ELEMENT description (#PCDATA) >
        <!ELEMENT département EMPTY>
        <!ATTLIST département
            nom CDATA #REQUIRED
            xmlnote (vide|plein) "plein"
        > 
        <!ATTLIST université
            téléphone CDATA #REQUIRED
            xml:lang CDATA #FIXED "fr"
        >
        <!ATTLIST faculté
            nom CDATA #IMPLIED
        >
    ]>
    #IMPLIED peut être également #REQUIRED si c'est le sens qu'on entend à donner. Pour @téléphone on est obligé de changer ID à CDATA si on veut garder la donnée et du coup, sémantiquement ce n'est plus tout à fait la même. Et puis, si on compte les lieux qu'on a changés, il y a bien quatre.

  16. #16
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2015
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2015
    Messages : 208
    Points : 206
    Points
    206

    Par défaut

    Merci Tsuji, en effet ça fait quatre, comme Thelvin me l'a fait remarqué j'avais pas vu que l'attribut nom de l’élément faculté n'avais pas été déclaré.
    En tout cas merci pour cette correction, car j'ai pu mettre les deux DTD l'une à coté de l'autre pour comparer, ce qui m'a été très utile pour comprendre.
    Merci beaucoup à vous deux.

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/10/2006, 15h15
  2. Trouver l'erreur sous IE
    Par Are-no dans le forum JavaScript
    Réponses: 21
    Dernier message: 23/08/2006, 20h38
  3. Trouver l'erreur dans une fonction
    Par Seth77 dans le forum Fonctions
    Réponses: 4
    Dernier message: 28/06/2006, 16h38
  4. [Tableaux] probleme je n'arrive pas à trouver l'erreur
    Par harlock59 dans le forum Fonctions
    Réponses: 21
    Dernier message: 06/06/2006, 14h43
  5. pas moyen de trouver l'erreur de ce code Javascript !!!
    Par NATHW dans le forum JavaScript
    Réponses: 7
    Dernier message: 25/11/2004, 21h47

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