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 :

Message d'erreur incompréhensible


Sujet :

Valider XML

  1. #1
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut Message d'erreur incompréhensible
    Bonsoir, j'essaie de valider un document XML avec un XSD. Mais j'obtiens plusieurs fois cette erreur, que je ne comprend pas :
    Description Resource Path Location Type
    Identity Constraint error: identity constraint "KeyRef@152138e" has a keyref which refers to a key or unique that is out of scope.
    mirc.xml line 102
    J'en ai 6 autres identiques, à des endroits différents, qui sont toujours sur un noeud fermant.

    Pouvez-vous me dire comment corriger ?

    Merci,

    Ci-joint le xml et le xsd à valider
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Je vais essayer de lire plus en détail le code, mais l'erreur est relativement simple à comprendre :

    tu as un problème dans les chemins de tes xs:key et/ou xs:keyref dans ton fichier xml. Les éléments ne doivent pas être déclarer au bon endroit.

    l9 in your xml file : isMultiline au lieu de IsMultiline
    l972 in your xml file : violet au lieu de Violet
    l976 in your xml file : la couleur NavyBlue n'existe pas dans ta liste enumeration, essaye la couleur Navy à la place
    l977 in your xml file : red4 au lieu de Red
    l979 in your xml file : la couleur Coper n'existe pas dans ta liste

    Ca c'est la partie facile, maintenant la partie difficile :

    Je pense que tu t'es un peu embrouiller dans tes keyref et tes key, tu as une keyref dans ton element PatternGroup qui lie :
    l'attribut "style" de ton element Block, à
    l'attribut "name" de ton élément PatternGroup.
    Ce qui veut dire que ton validateur te donnera une erreur à chaque fois que ces deux attributs n'auront pas la même valeur (indice : à chaque fois )

    Tu devrais être capable de réparer tout ça maintenant que tu comprend le message d'erreur.

  3. #3
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Je vais revérifer, mais merci
    Le problème est que le xsd ne vient pas de moi, et il n'y a pas de documentation claire. Et je n'ai jamais bien compris les keyref dans un xsd

    edit > En fait, je ne comprend toujours pas...
    Tu me dis que l'attribut "Name" du PatternGroup doit avoir la même valeur que l'attribut "Style" du Block parent, c'est bien ça ?

    J'ai essayé, et le message d'erreur est toujours là...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Mea culpa, ce que je voulais dire c'est que l'attribut style de l'élément PatternGroup, devait être identique à l'attribut name de l'élément style (logique si tu y pense, cela veux dire que le style utilisé doit avoir été préalablement défini), et, d'après le code, cela est valable pour tout les attributs style des différents éléments, qui doivent avoir été défini dans des élément <style>.

    Malheureusement il semblerait que ce keyref ne fonctionne pas correctement :
    Le xs:keyref est déclaré à l'interieur d'une déclaration globale de complex type, alors qu'il devrait être déclarer à l'intérieur de la déclaration locale de l'élément faisant appel au dit type (ça parait un peu barbare dit comme ça mais en lisant plusieurs fois et en lisant le xml schéma, ça passe).
    En gros, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xs:keyref name="StylePatternGroup" refer="key1">
    	<xs:selector xpath="."/>
    	<xs:field xpath="@Style"/>
    </xs:keyref>
    doit être déclaré à la suite des autres xs:key et xs:keyref en changeant le xs:selector xpath="." par xs:selector xpath="Block/Keywords/PatternGroup|Block/Keywords/Operators"

    Il serait de bon ton de contacter l'auteur du schema si tu ne compte pas (ou si tu n'as pas le droit) de modifier ce fichier xsd, en lui disant qu'il y à une erreur dans ses keyref

    Si tu veux essayer de le débugger toi même, je serai ravi de t'aider.

    Profites en pour vérifier que tout les keyrefs fonctionnent correctement sur ton validateur, car il y a d'autres nombreuses erreurs que tu semble ne pas avoir remarquer (ligne 955 l'attribut style vaut "Comments" alors que l'élément style associer à pour nom "Comment" (sans S), ligne 10, l'attribut style="Brackets" n'éxiste pas dans la liste des styles défini etc...)

  5. #5
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    En fait, je suis arrivé à la conclusion que le schéma xsd estfaux, car même les fichiers XML "de base" sont invalides avec ce schéma.

    Ce truc étant open source, je peux donc le modifier, et j'enverrai les corrections au concepteur.
    Ton aide me sera très utile, car mes notions de xsd sont quasi nulles.

    Le xml que j'ai déposé en fichier joint est dépourvus de modifications , je vais adjoindre la version correcte.

    Merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Voila ma correction rapide du schema, tu remarquera qu’il reste un erreur sur ton fichier xml au environ de la ligne 954, deux attributs qui n’ont pas le droit d’apparaître, il va falloir me dire si tu as vraiment fait une erreur ou si le schema à tord pour que je corrige.

    J’ai rajouter un namespace bidon et un préfixe (xmlns :conf) pour faire marcher les keyref avec, à toi de voir si tu en as besoins.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [1.x] Message d'erreur incompréhensible
    Par daydream123 dans le forum Symfony
    Réponses: 2
    Dernier message: 14/10/2011, 20h53
  2. [MySQL] Message d'erreur incompréhensible
    Par naim2009 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/03/2009, 00h21
  3. message d'erreur incompréhensible
    Par magicbisous-nours dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/11/2008, 09h15
  4. [requête regroupement] : message d'erreur incompréhensible
    Par camzo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 25/04/2007, 22h34
  5. message d'erreur incompréhensible :s
    Par SanTa62 dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2006, 16h48

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