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 :

Problème KeyRef unbounded [XSD]


Sujet :

Valider XML

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème KeyRef unbounded
    Bonjour à tous,
    Je débute tout juste le langage XML et notamment les XSD. Je me suis beaucoup renseigné et j'ai un peu prêt compris l'ensemble (mis à part certaine subtilité).
    J'ai un code un peu compliqué à faire sur la gestion d’évènement.
    Pour simplifier j'ai des utilisateurs, et des évènements. Pour chaque évènement je souhaiterai pouvoir mettre plusieurs utilisateurs en tant que participant et un autre utilisateur en tant que créateur de l’évènement.
    Pour cela j'ai fait une Key sur l'attribut id des utilisateurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		<xs:key name="PkUtilisateur">
    			<xs:selector xpath="utilisateur"/>
    			<xs:field xpath="@id"/>
    		</xs:key>
    Et dans mon type evenement j'ai créé un champ utilisateur avec un entier.
    J'ai ensuite rajouter un keyref sur ce champ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		<xs:keyref name="FkRefParticipantEvnt" refer="PkUtilisateur">
    			<xs:selector xpath="evenement"/>
    			<xs:field xpath="participant"/>
    		</xs:keyref>
    Mon schéma xsd est validé à l'aide de XMLSpy que j'utilise, mais lorsque je fait mon fichier XML lorsque je crée un évenement j'ai un problème. Si je souhaite ajouté plusieurs participants (comme ci dessous) j'ai le message d'erreur suivant:
    Field '{anonymous}' of identity constraint 'FkRefParticipantEvnt' evaluates to a node-set with more than one member.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <evenement>
    	<nom>Lancement Iphone4</nom>
    	<horaire>
    		<dateDebut>2010-12-12</dateDebut>
    		<dateFin>2010-12-13</dateFin>
    	</horaire>
    	<localisation>2</localisation>
    	<createur>8</createur>
    	<participant>1</participant>
    	<participant>2</participant>
    </evenement>
    Si je met un seul participant ça marche par contre très bien, je ne comprends pas se que je fait de mal?
    Je met mon xsd en pièce jointe pour plus de précision, si quelqu'un peut m'aider ou me conseiller

    Cordialement

    Guillaume
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    [0] Tout d'abort, il faut corriger la définition d'UniqueParticipant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xs:unique name="UniqueParticipant">
        <xs:selector xpath="evenement/participant"/>
        <xs:field xpath="."/>
    </xs:unique>
    [1] Puis, pour essentiellement la même raison, FkRefParticipantEvnt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xs:keyref name="FkRefParticipantEvnt" refer="PkUtilisateur">
        <xs:selector xpath="evenement/participant"/>
        <xs:field xpath="."/>
    </xs:keyref>
    Il peut y avoir le même problème pour les autres clés ou ses reférences: si oui, il faudrait prendre l'action similaire pour les corriger.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ok je vais essayer.

    La définition de unique participant je l'avais rajouté après avoir lut quelques solutions mais je ne sais pas si elle est vraiment utile ou pas?

    Après par contre je ne vois pas tellement la différence entre ta solution et la mienne? Parce que dans les deux cas ca identifie le noeud participant non?

    En tout cas merci beaucoup pour ta réponse je commençais à désespérer un peu

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bon ca a l'air de marcher donc merci beaucoup.
    J'ai compris à quoi sert le unique, ca aussi c'est bon.
    Par contre je ne comprends pas vraiment la différence entre ta solution et la mienne donc si tu pouvais m'expliquer, au cas ou je souhaiterai le réutiliser.

  5. #5
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Par contre je ne comprends pas vraiment la différence entre ta solution et la mienne donc si tu pouvais m'expliquer, au cas ou je souhaiterai le réutiliser.
    Voici le message d'erreur tu as posté plus haut.
    j'ai le message d'erreur suivant: Field '{anonymous}' of identity constraint 'FkRefParticipantEvnt' evaluates to a node-set with more than one member.
    Le message d'erreur lui seul est un assez précis indicateur de quoi il n'attend pas. En gros, il est possible que le selector soit evalué résultant un ensemble de noeuds. A partir de cheque noeud comme base, il evalue le xpath de 'field' qui doit être conduit à un noeud bien précis. Voilà ce qu'il veut dire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec key/keyRef lors de validation d'un fichier xsd
    Par oussama112 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 16/05/2015, 17h12
  2. problème avec Unbound Column
    Par devman2011 dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/01/2012, 13h44
  3. Problème - Unbound Columns qui s'ajoutent
    Par devman2011 dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/12/2011, 10h37
  4. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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