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

XML/XSL et SOAP Discussion :

Trouver l'erreur :-)


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    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 : 217
    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
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    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 : 217
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    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 : 217
    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
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    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 Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    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 : 217
    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
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/10/2006, 15h15
  2. Trouver l'erreur sous IE
    Par Are-no dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/08/2006, 20h38
  3. Trouver l'erreur dans une fonction
    Par Seth77 dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2006, 16h38
  4. [Tableaux] probleme je n'arrive pas à trouver l'erreur
    Par harlock59 dans le forum Langage
    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 Général 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