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 :

xs:all maxOcurs unbounded ?


Sujet :

Valider XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 34
    Par défaut xs:all maxOcurs unbounded ?
    Bonjour ,

    Je rencontre un problème de conception d'un xsd qui me servira à valider différents schéma xml ( et malheureusement il le sont .. ) dont voici un exemple le plus basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <import>
    	<node type="document" action="sync">
    		<category name="CATEGORIES:CAT">
    			<attribute name="BCU">RET</attribute>
    			<attribute name="BCU">LOM</attribute>
    		</category>
    		<location>Ent:0528.pdf</location>
    		<file>D:\53447.pdf</file>
    	</node>
    </import>
    J'ai donc commencé très naturellement à définir une séquence pour chaque élement sous "node". Cependant par la suite j'ai appris que l'ordre dans lequel les éléments étaient écrit pouvait différer. J'ai donc opté pour xs:all.

    Jusque la je n'ai eu aucun soucis. Le réel problème est apparu lorsque l'on m'a demandé de permettre plusieurs fois le "noeud" category .

    xs:sequence permet de définir un maxOccurs "unbounded" mais oblige de garder un ordre de déclaration fixe.
    xs:all permet d'avoir un ordre de déclaration aléatoire , mais ne permet qu'un maxOccurs 0 ou 1 .

    Existe t'il un tips pour mixer les deux ?

    En vous remerciant d'avance.

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Tu peux passer par un <xsd:choice... >
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xs:choice minOccurs="1" maxOccurs="unbounded">
         <xs:element name="category" />
         <xs:element name="location"  />
         <xs:element name="file"        />
    </xs:choice>
    dont la définition est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <choice
    id=ID
    maxOccurs=nonNegativeInteger|unbounded
    minOccurs=nonNegativeInteger
    any attributes
    >
     
    (annotation?,(element|group|choice|sequence|any)*)
     
    </choice>
    A ajuster selon tes besoins.

    ERE

  3. #3
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    @emmanuel : juste par curiosité, d'où vient ta définition d'élément ?

    Moi j'utilise les specs de xml.com*, mais la réf que tu cites ici a l'air un peu différente et comme j'aime bien comparer les sources, si tu as un lien, je suis preneur


    *équivalent de celle que tu cites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    xs:choice
    Compositor to define group of mutually exclusive elements or compositors.
    <xs:choice 	 
      	id	= xs:ID
      	maxOccurs	= ( xs:nonNegativeInteger | "unbounded" ) : "1"
      	minOccurs	= xs:nonNegativeInteger : "1"
      	{any attributes with non-schema namespace}
      	>
      	Content: (xs:annotation?, ( xs:element | xs:group | xs:choice | xs:sequence | xs:any)*)
    </xs:choice> 	 
    May be included in:	xs:choice, xs:choice (within a group), xs:complexType (reference or local definition), xs:complexType (global definition), xs:extension (complex content), xs:restriction (complex content), xs:sequence (within a group), xs:sequence

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    @emmanuel : juste par curiosité, d'où vient ta définition d'élément ?

    Moi j'utilise les specs de xml.com*, mais la réf que tu cites ici a l'air un peu différente et comme j'aime bien comparer les sources, si tu as un lien, je suis preneur


    *équivalent de celle que tu cites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    xs:choice
    Compositor to define group of mutually exclusive elements or compositors.
    <xs:choice 	 
      	id	= xs:ID
      	maxOccurs	= ( xs:nonNegativeInteger | "unbounded" ) : "1"
      	minOccurs	= xs:nonNegativeInteger : "1"
      	{any attributes with non-schema namespace}
      	>
      	Content: (xs:annotation?, ( xs:element | xs:group | xs:choice | xs:sequence | xs:any)*)
    </xs:choice> 	 
    May be included in:	xs:choice, xs:choice (within a group), xs:complexType (reference or local definition), xs:complexType (global definition), xs:extension (complex content), xs:restriction (complex content), xs:sequence (within a group), xs:sequence
    @Romain: w3schools (j'aime bien et c'est pluridisciplinaire).

    ERE

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Arf

    Heu... oui c'était pourtant évident et en plus j'ai déjà cette page en lien... je n'avais pas reconnu...

Discussions similaires

  1. [XSD] all et maxOccurs unbounded
    Par Spoutnik dans le forum Valider
    Réponses: 2
    Dernier message: 14/06/2007, 12h22
  2. Réponses: 2
    Dernier message: 07/01/2005, 20h40
  3. [OCaml] Toujours "Unbound value..."
    Par robfinck dans le forum Caml
    Réponses: 1
    Dernier message: 16/11/2004, 22h57
  4. union all couteux ?
    Par Maitre B dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 16/11/2004, 09h26
  5. [all]
    Par atao dans le forum Langage SQL
    Réponses: 5
    Dernier message: 22/08/2003, 20h16

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