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 :

[XSD] key ne fonctionne pas


Sujet :

Valider XML

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut [XSD] key ne fonctionne pas
    Bonjour à tous,

    En fait je desire qu'un attribut ne puisse pas avoir de valeur dupliquée.
    Je ne veux pas utiliser "ID" car ca n'accepte pas des valeurs entières.
    Donc je me suis tourné vers "key".

    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
     
    <xs:element name="EndMenu">
      	<xs:complexType>
      		<xs:sequence>
      			<xs:element minOccurs="2" maxOccurs="12" ref="Choice"/>
       		</xs:sequence>
       	</xs:complexType>
    	<xs:key name="dtmfkey">
    		<xs:selector xpath="Choice"/>
    		<xs:field xpath="@DTMF"/>
    	</xs:key>
      </xs:element>
      <xs:element name="Choice">
      	<xs:complexType mixed="true">
      		<xs:attribute name="DTMF" use="required" type="xs:string"/>
      		<xs:attribute name="OutPoint" use="required" type="xs:string"/>
      	</xs:complexType>
      </xs:element>
    Mais ca ne fonctionne pas, si je ne mets pas de valeur, ou si je mets plusieurs fois la même il valide tout de même.

    Quelqu'un peut il m'aider ?

    D'avance merci,
    Christian

  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 pense que tu veux plutot utiliser un <xs:unique> dans ton cas, key ne marche pas exactement comme tu essaye de l'utiliser.

    Tu devrais aussi faire bien attention à l'endroit ou tu le place.
    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
     
    <xs:element name="EndMenu">
      	<xs:complexType>
      		<xs:sequence>
      			<xs:element minOccurs="2" maxOccurs="12" ref="Choice"/>
       		</xs:sequence>
       	</xs:complexType>
      </xs:element>
     
    <xs:element name="Choice">
      	<xs:complexType mixed="true">
      		<xs:attribute name="DTMF" use="required" type="xs:string"/>
      		<xs:attribute name="OutPoint" use="required" type="xs:string"/>
      	</xs:complexType>
     </xs:element>
     
    	<xs:unique name="dtmfkey">
    		<xs:selector xpath="Choice"/>
    		<xs:field xpath="@DTMF"/>
    	</xs:key>
    Si ca ne marche toujours pas, rajoute un
    xmlns:prefix="www.[ton namespace].com" dans l'élément <xs:schema> de ton xml schéma et écrit ton key de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xs:unique name="dtmfkey">
    		<xs:selector xpath="prefix:Choice"/>
    		<xs:field xpath="@DTMF"/>
    	</xs:key>

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    Merci de ta réponse.
    J'ai suivi tes conseils mais ca ne fonctionne toujours pas.

    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
     
      <xs:element name="EndMenu">
      	<xs:complexType>
      		<xs:sequence>
      			<xs:element minOccurs="2" maxOccurs="12" nillable="false" name="Choice">
      				<xs:complexType>
      					<xs:attribute name="DTMF" use="required" type="vp:dtmf"/>
      					<xs:attribute name="OutPoint" use="required" type="xs:string"/>
      				</xs:complexType>
      				<xs:unique name="dtmfcheck">
    					<xs:selector xpath="vp:Choice"/>
    					<xs:field xpath="@DTMF"/>
        			</xs:unique>
      			</xs:element>	
       		</xs:sequence>
       	</xs:complexType>
      </xs:element>
    Dans mon fichier xml j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                <EndMenu>
                	<Choice DTMF="9" OutPoint="1234"/>
                	<Choice DTMF="9" OutPoint="4567"/>
                </EndMenu>
    Et la validation passe sans problème, hors ca ne devrait pas puisque j'ai 2 fois la même valeur.

    Merci d'avance pour votre aide

  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
    Essaye plutot ça :
    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
     
      <xs:element name="EndMenu">
      	<xs:complexType>
      		<xs:sequence>
      			<xs:element minOccurs="2" maxOccurs="12" nillable="false" name="Choice">
      				<xs:complexType>
      					<xs:attribute name="DTMF" use="required" type="vp:dtmf"/>
      					<xs:attribute name="OutPoint" use="required" type="xs:string"/>
      				</xs:complexType>
      			</xs:element>	
                            <xs:unique name="dtmfcheck">
    					<xs:selector xpath="vp:Choice"/>
    					<xs:field xpath="@DTMF"/>
        			</xs:unique>
       		</xs:sequence>
       	</xs:complexType>
      </xs:element>

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé les résultat est le même il ne me donne pas d'erreur alors qu'il devrait.

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé de créer un autre fichier plus simple mais le résultat est le meme.

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.be.test.com/test.xsd" targetNamespace="http://www.be.test.com/test.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
    	<xs:element name="config">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element name="test" maxOccurs="unbounded" type="xs:string"/>
    			</xs:sequence>
    		</xs:complexType>
    		<xs:unique name="unique">
    			<xs:selector xpath="config"/>
    			<xs:field xpath="test"/>
    		</xs:unique>
    	</xs:element>
    </xs:schema>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <config xmlns="http://www.be.test.com/test.xsd">	
    	<test>1</test>
    	<test>1</test>
    </config>
    J'ai essayé de déplacer le block unique dans l'element test mais ca ne change rien

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Mon problème est résolu, en fait je n'avais pas mon instance de schéma.
    Je l'ai ajoutée et depuis ca fonctionne.

    Merci pour votre aide.
    Christian

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par c-ve Voir le message
    Bonjour,

    Mon problème est résolu, en fait je n'avais pas mon instance de schéma.
    Je l'ai ajoutée et depuis ca fonctionne.

    Merci pour votre aide.
    Christian
    Bonjour à tous,

    Je rencontre le même problème que Christian, mais je ne comprends pas sa solution.

    Quelqu'un pourrait-il m'éclairer sur le sens de la phrase "ajouter mon instance de schéma" ?

  9. #9
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Tout simplement qu'il n'avait pas déclaré le schéma et que le parseur ne faisait donc aucune validation. Changer le contenu du schéma ne changeait évidemment rien à l'affaire...

    J'imagine que ton problème est sensiblement différent, je t'invite donc à créer ton propre fil et à y poser en termes clairs ta question. La poser ici n'est franchement pas une bonne idée.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

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

Discussions similaires

  1. hashMap.get(key) ne fonctionne pas comme je l'attendais ?
    Par francky74 dans le forum Android
    Réponses: 6
    Dernier message: 13/01/2015, 12h07
  2. Trigger PRIMARY KEY ne fonctionne pas
    Par DUALTECH dans le forum InterBase
    Réponses: 4
    Dernier message: 31/05/2012, 16h06
  3. key.isDown ne fonctionnent pas une fois dans le html
    Par Padapapadapa dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 12/02/2009, 10h05
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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