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

XML/XSL et SOAP Discussion :

[XSD] usage du use="required" [Débutant(e)]


Sujet :

XML/XSL et SOAP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 36
    Points
    36
    Par défaut [XSD] usage du use="required"
    Bonjour,

    je travaille sur un xsd et je ne suis pas sûr de bien comprendre un truc.
    Bon mais j'ai cherché quand même avant d'écrire ici alors je vous dis ce que j'ai compris :

    Pour un attribut on précise use="required" si l'attribut est obligatoire.
    Jusque là OK.

    Mais pour un élément ?
    Il n'y a pas de "use", tout ce que j'ai trouvé c'est minOccurs et maxOccurs OK
    mais le use="required" des attributs serait bien pratique pour les éléments.

    Merci bonne soirée.

  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
    mais le use="required" des attributs serait bien pratique pour les éléments.
    On n'a pas "use" pour élément justement parcequ'il a pour régler la cardinalité d'occurence minOccurs et maxOccurs. On se peut imaginer les derniers seraient au contraire bien pratique, comme vous dites dans l'autre sens, pour les attributs: mais il y a une différence maxOccurs pour un attribut serait forcément 1 et c'est pourquoi effectivement on a pratiquement le même règle pour éléments (minOccurs, maxOccurs) comme pour attributs ("required" = (1,1) et "optional" = (0,1)) où (n,m) pour (minOccurs,maxOccurs) si ces derniers seraient appliquant aux attributs.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Ok merci je comprends mieux mais du coup ça me met le doute sur ce que je suis en train de faire

    Quelqu'un peut-il me dire si ce que je fais est correct :

    à la base mon XSD (généré par XMLSpy) contenait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xs:element maxOccurs="unbounded" name="item">
      <xs:complexType>
        <xs:attribute name="section" type="xs:string" use="required" />
        <xs:attribute name="variable" type="xs:string" use="required" />
        <xs:attribute name="value" type="xs:boolean" use="required" />
      </xs:complexType>
    </xs:element>
    Mais comme j'ai des attributs fixes je le modifie de cette façon :

    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
     
    <xs:element name="item">
      <xs:complexType>
        <xs:attribute name="section" type="xs:string" fixed="Manager" />
        <xs:attribute name="variable" type="xs:string" fixed="Test1" />
        <xs:attribute name="value" type="xs:boolean" use="required" default="1" />
      </xs:complexType>
    </xs:element>
     
    <xs:element name="item">
      <xs:complexType>
        <xs:attribute name="section" type="xs:string" fixed="Manager" />
        <xs:attribute name="variable" type="xs:string" fixed="Test2" />
        <xs:attribute name="value" type="xs:boolean" use="required" default="1" />
      </xs:complexType>
    </xs:element>
     
    <xs:element name="item">
      <xs:complexType>
        <xs:attribute name="section" type="xs:string" fixed="Manager" />
        <xs:attribute name="variable" type="xs:string" fixed="Test3" />
        <xs:attribute name="value" type="xs:boolean" use="required" default="1" />
      </xs:complexType>
    </xs:element>
     
    etc ...
    Je ne sais pas si c'est correct parce qu'en écrivant :
    <xs:element name="item">
    c'est comme si le minOccurs et le maxOccurs étaient égaux à 1
    or c'est pas le cas puisque j'ai plusieurs éléments "item"
    et je ne peux pas non plus le laisser en maxOccurs="unbounded" (comme c'était au début) parce que sinon je ne peux pas préciser les valeurs fixes "Manager", "Test1", "Test2" ...

    Comment faire ?

    Merci.
    Bonne journée.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu n'es pas censé faire ça, en fait, c'est pas prévu pour.
    <item> c'est censé être le même partout, s'il est fixe une fois, il est fixe toujours.

    En tout cas c'est comme ça que XML Schema est prévu... Mais rien ne t'empêche de faire une séquence dans laquelle tu déclares trois <item> à la suite, en les définissant chacun différemment.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 16
    Points : 31
    Points
    31
    Par défaut
    Personnellement je ferais comme ceci :

    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
     
    <xs:element name="items">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="item" minOccurs="3" maxOccurs="3"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
     
        <xs:element name="item">
            <xs:complexType>
                <xs:attribute name="section" type="xs:string" fixed="Manager"/>
                <xs:attribute name="variable">
                    <xs:simpleType>
                        <xs:restriction base="xs:ID">
                            <xs:enumeration value="Test1"/>
                            <xs:enumeration value="Test2"/>
                            <xs:enumeration value="Test3"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="value" type="xs:boolean" use="required"/>
            </xs:complexType>
        </xs:element>
    Mais je ne suis pas sur d'avoir cerné tes besoins..

  6. #6
    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
    @ZeNoob

    D'abord ceci:
    <xs:attribute name="value" type="xs:boolean" use="required" default="1" />
    Il n'a aucune chance; il est carrément faux. Voice la correcte réalization.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:attribute name="value" type="xs:boolean" use="optional" default="1" />
    Voyez la différence? Pourtant, ce n'est pas de tournures quelque peu sombres de schema qu'on doit s'en occuper trop de temps au début pour un "débutant": on a mieux à faire avec raisonable rendabilité.

    Et puis pour chercher de faire Test1, Test2 etc c'est aussi chercher à faire des choses à l'encontre du scheme au sens de w3c. Il vaut mieux réléguer la fonctionalité recherchée au niveau d'application logicielle. C'est possible de faire quelque presque la même, mais c'est compliqué et pas très naturel: il vaut mieux faire quelque chose de moins obscure et de plus naturelle pour apprendre mieux au départ.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Merci à tous,

    Je comprends un peu mieux, je vois surtout que mon problème était de vouloir mélanger à la fois :
    - un modèle générique avec certains noms
    ET
    - des éléments fixés du même nom
    Ce qui est peut-être faisable mais sans doute pas terrible.

    Bref je vais opter pour une solution générique, ça sera plus simple.

    Merci.

    bye bye.

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

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