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][Débutant] champs obligatoires ?


Sujet :

Valider XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut [XSD][Débutant] champs obligatoires ?
    Bonjour

    J'ai créé un schéma XSD comprenant une 30aine de champs. Je voudrais savoir si dans le fichier XML, je suis obligé de renseigner tous ces champs ? Et si non, comment faire, car je n'arrive pas à valider mon fichier XML de test.

    Début du schéma :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?xml version = "1.0" encoding="Windows-1252"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="GIData">
    	<xsd:complexType>
    		<xsd:sequence>
    			<xsd:element name="GI">
    				<xsd:complexType>
    					<xsd:all minOccurs="0">
    						<xsd:element name="siret">
    							<xsd:simpleType>
    								<xsd:restriction base="xsd:string">
    									<xsd:maxLength value="14"/>
    								</xsd:restriction>
    							</xsd:simpleType>
    						</xsd:element>
    						<xsd:element name="dat_situat" type="xsd:date"/>
    						<xsd:element name="cod_agc">
    							<xsd:simpleType>
    								<xsd:restriction base="xsd:string">
    									<xsd:maxLength value="5"/>
    								</xsd:restriction>
    							</xsd:simpleType>
    						</xsd:element>
    						<xsd:element name="cod_dossie">
    							<xsd:simpleType>
    								<xsd:restriction base="xsd:string">
    									<xsd:maxLength value="6"/>
    								</xsd:restriction>
    							</xsd:simpleType>
    						</xsd:element>
    ...
    Merci de votre aide.

  2. #2
    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
    Bonjour,

    tel que tu l'as écrit, oui. Si certains éléments fils de GI doivent rester optionnels, tu dois leur affecter à chacun l'attribut minOccurs="0". D'autre part, je ne pense que cet attribut soit pertinent pour xs:all, car ça signifierait que GI peut être totalement vide. A toi de voir...
    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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    J'ai ajouté minOccurs sur chaque entité, cela semble être bon. Merci.
    Par contre j'ai une autre erreur sur mon fichier XML, lors de la "lecture" du 2ème enregistrement : le programme (XMLADAPTER dans Visual Foxpro) me dit que le contenu de l'élément est invalide.
    J'ai essayé en ne mettant qu'un enregistrement, et cela marche.
    Une idée ?

    Fichier XML :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?xml version = "1.0" encoding="Windows-1252"?>
    <GIData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\test\GI.xsd">
    	<GI>
    		<siret>44828090000014</siret>
    		<dat_situat>2005-12-01</dat_situat>
    		<cod_agc>AGC62</cod_agc>
    		<cod_dossie>504000</cod_dossie>	
    		<num_prefcl>1</num_prefcl>		
    		<nom>DURAND</nom>
    		<prenom>Jean</prenom>
    		<dat_naissa>1968-10-06</dat_naissa>
    		<num_adress>1</num_adress>
    		<num_depart>62</num_depart>
    		<cod_insee>  40</cod_insee>
    		<tel1_adres>0321212020</tel1_adres>
    		<email>jean.durand@test.fr</email>
    		<dat_debaff>2005-12-01</dat_debaff>
    		<agt_cga> 431</agt_cga>
    		<num_catfis>1</num_catfis>
    		<int_compta> 320</int_compta>
    		<num_regimp>1</num_regimp>
    	</GI>
    	<GI>
    		<siret>44828090000014</siret>
    		<dat_situat>2005-12-01</dat_situat>
    		<cod_agc>AGC62</cod_agc>
    		<cod_dossie>504000</cod_dossie>	
    		<num_associ>1</num_associ>
    		<num_prefcl>2</num_prefcl>		
    		<nom>DURAND</nom>
    		<prenom>Valérie</prenom>
    		<num_adress>3</num_adress>
    		<num_depart>62</num_depart>
    		<cod_insee>  40</cod_insee>
    		<dat_naissa>1967-09-16</dat_naissa>
    		<dat_entree>2005-12-01</dat_entree>
    	</GI>
    </GIData>

  4. #4
    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
    Par défaut, le nombre d'occurrences de GI imposé par le schéma est 1. Si tu veux modifier cela, et spécifier une plage du nombre d'occurrences autorisées, il faut utiliser les attributs minOccurs et maxOccurs. Donc, pour indiquer qu'il doit y avoir au moins 1 GI et qu'il peut y en avoir une infinité, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="GI" maxOccurs="unbounded">
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Ca avance.
    Mais maintenant, j'ai une erreur comme quoi GIData est utilisé mais pas déclaré dans le schéma ? Pourtant c'est la racine du schéma.

  6. #6
    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
    Tu utilises MSXML 4 ? Ce message d'erreur plutôt trompeur est invariablement celui qu'il ressort quand il y a une erreur de syntaxe dans le XSD.
    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

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Oui, la fonction que j'utilise est basée sur MSXML4.

    J'arrive à valider le schéma sans problème. Je ne vois pas où serait l'erreur.
    Je peux t'envoyer les 2 fichiers par mail (ou autre) ?

    [Edit]
    L'erreur vient du 'all' qui n'accepte pas maxOccurs="unbounded"

    Mais si je remplace 'all' par 'sequence', je me retrouve avec l'erreur précédente : impossible de renseigner plus d'1 enregistrement dans le fichier XML :

    <?xml version="1.0" encoding="Windows-1252" ?>
    <xsd:schema xmlnssd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="GiData">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="GI">
    <xsd:complexType>
    <xsd:sequence minOccurs="1" maxOccurs="unbounded">
    <xsd:element name="siret" minOccurs="0">
    <xsd:simpleType>
    <xsd:restriction base="xsd:string">
    <xsd:maxLength value="14" />
    </xsd:restriction>
    </xsd:simpleType>
    </xsd:element>
    <xsd:element name="dat_situat" type="xsd:date" minOccurs="0" />
    <xsd:element name="cod_agc" minOccurs="0">
    <xsd:simpleType>
    <xsd:restriction base="xsd:string">
    <xsd:maxLength value="5" />
    </xsd:restriction>
    </xsd:simpleType>
    </xsd:element>

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    C'est bon, j'ai trouvé.
    En fait, il faut mettre maxOccurs sur 'GI' et non sur la clause 'all', comme je l'avais fait.

    <?xml version="1.0" encoding="Windows-1252"?>
    <xsd:schema xmlnssd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="GIData">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="GI" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:all>
    <xsd:element name="siret" minOccurs="0">
    <xsd:simpleType>
    <xsd:restriction base="xsd:string">
    <xsd:maxLength value="14"/>
    </xsd:restriction>
    </xsd:simpleType>
    </xsd:element>
    <xsd:element name="dat_situat" type="xsd:date" minOccurs="0"/>
    <xsd:element name="cod_agc" minOccurs="0">
    <xsd:simpleType>
    <xsd:restriction base="xsd:string">
    <xsd:maxLength value="5"/>
    </xsd:restriction>
    </xsd:simpleType>
    </xsd:element>
    ...

    Merci GrandFather pour ton aide.

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

Discussions similaires

  1. [XSD] champ obligatoire ou pas selon l'action
    Par epeichette dans le forum Valider
    Réponses: 4
    Dernier message: 22/02/2008, 14h07
  2. Réponses: 5
    Dernier message: 25/10/2005, 16h05
  3. Champs obligatoires dans un formulaire
    Par glloq8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/09/2005, 16h24
  4. Test si champs obligatoires remplis
    Par michaelbob dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/09/2005, 14h20
  5. Champs obligatoires
    Par JustMe dans le forum Bases de données
    Réponses: 15
    Dernier message: 18/11/2004, 20h54

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