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 :

G�rer les r�f�rences et les attributs d'une balise + question element maxOccurs


Sujet :

Valider XML

  1. #1
    Membre �clair�
    Homme Profil pro
    Inscrit en
    F�vrier 2013
    Messages
    347
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2013
    Messages : 347
    Par d�faut G�rer les r�f�rences et les attributs d'une balise + question element maxOccurs
    Bonjour � tout le monde,

    Je d�bute avec le XML/XSD et j'ai un petit probl�me avec un sch�ma XSD que je voudrais faire. Voici le contexte (exemple purement fictif, je ne peux pas partager l'enti�ret� du code) :

    J'ai une balise "Ident" qui contient elle m�me trois balises (Sex, FirstName, LastName), mais qui contient aussi deux attributs pour elle : type (passport obligatoirement), et le pays qui doit �tre dans contenu dans les trois pays suivants : France, Anglette, ou Pays-Bas.
    Je ne sais pas trop comment je dois faire pour aller les deux dans mon XSD. Voici le code

    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
     
    <xsd:element name="Ident">  
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element ref="sex"/>
            <xsd:element ref="firstName"/>
            <xsd:element ref="lastName"/>
          </xsd:sequence>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute name="type"  use="optional" fixed="passport"/>
              <xsd:attribute name="Country" use="required">
                <xsd:simpleType>
                  <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="France"/>
                    <xsd:enumeration value="Angleterre"/>
                    <xsd:enumeration value="Pays-Bas"/>
                  </xsd:restriction>
                </xsd:simpleType>
              </xsd:attribute>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    J'ai entr� mon XML et mon XSD dans un validateur en ligne et j'obtiens ce warning : The content of '#AnonType_livre' is invalid. Element 'simpleContent' is invalid, misplaced, or occurs too often.
    Il indique clairement les lignes simpleContent du code que j'indique plus haut.

    Je voudrais d�j� savoir si un XSD avec des warnings uniquement peut �tre consid�r� comme correct ou non.
    Ensuite, pourriez-vous m'aiguiller pour ce que je souhaite faire ?

    Enfin j'ai une question bonus au sujet des maxOccurs, j'en ai mis plein dans mon XSD sur des elements, j'ai vu �a sur Internet. Mais j'ai des warnings : Attribute 'maxOccurs' cannot appear in element 'element'.

    Par exemple sur ce code-ci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <xsd:element name="firstName"     type="xsd:string" maxOccurs="1"/>
    Avez-vous une id�e ? Des versions diff�rentes de XSD/XML utilis�es ? Je ne sais pas...

    Merci beaucoup,

    alers

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par d�faut
    [0] Pous s'ajouter les attributs type et Country, on fait comme �a.
    Code xsd : 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
    <xsd:element name="Ident">  
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="sex"/>
                <xsd:element ref="firstName"/>
                <xsd:element ref="lastName"/>
            </xsd:sequence>
            <xsd:attribute name="type" use="optional" fixed="passport" />
            <xsd:attribute name="Country" use="required">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="France"/>
                        <xsd:enumeration value="Angleterre"/>
                        <xsd:enumeration value="Pays-Bas"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>

    [1] La cardinalit� ne pourrait mettre dans des �l�ments globaux, c'est-�-dire des xsd:element directement sous xsd:schema, la racine. Ce ne devrait pas un "warning", c'est une erreur et la moteur devrait s'arr�ter tout court. Par exemple, le fragment fait r�f�rence � xsd:element name="firstName" qui devrait �tre pr�cis�ment un �l�ment global dans ce sens: il ne devrait pas y avoir un attribut @maxOccurs ou @minOccurs. Pour dire que firstName puisse avoir plusieurs, 3 par exemple, on fait �a.
    Code xsd : S�lectionner tout - Visualiser dans une fen�tre � part
                <xsd:element ref="firstName" maxOccurs="3' />
    Mais, pas �a.
    Code xsd : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <xsd:schema version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <!-- etc -->
    <xsd:element name="firstName" type="xsd:string" maxOccurs="3" />    <!-- c'est faux. -->
    <!-- etc -->
    </xsd:schema>
    [1.1] Ou bien, si c'est local, c'est permis.
    Code xsd : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
                <xsd:element ref="sex"/>
                <xsd:element name="firstName" maxOccurs="3" />
                <xsd:element ref="lastName"/>

  3. #3
    Membre �clair�
    Homme Profil pro
    Inscrit en
    F�vrier 2013
    Messages
    347
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2013
    Messages : 347
    Par d�faut
    �a fonctionne comme �a, merci beaucoup !

    Si je comprends bien pour les maxOccurs, la r�gle serait : si un xsd:element est d�clar� en r�f�rence quelque part, alors le maxOccurs doit �tre plac� � l'endroit o� est d�clar�e la diff�rence (pas dans le bloc de l'�l�ment en question). C'est bien �a ?

  4. #4
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par d�faut
    Si je comprends bien pour les maxOccurs, la r�gle serait : si un xsd:element est d�clar� en r�f�rence quelque part, alors le maxOccurs doit �tre plac� � l'endroit o� est d�clar�e la diff�rence (pas dans le bloc de l'�l�ment en question). C'est bien �a ?
    Pas tout � fait : l'essentiel est que la cardinalit� ne puisse �tre parue que dans des �l�ments xsd:element locaux (muni un @ref ou un @name n'est peu importe). Qu'elle ne puisse absolument pas �tre parue dans des �l�ments xsd:element globaux. La raison est quelque peu comme �a : un element global xsd:element est tout � fait capable d'�tre utilis� pour valider un document o� le balise de son nom soit la raicine du document lui-m�me. Or il n'a pas de sens d'avoir une cardinalit� qui ne soit pas (1, 1) pour (minOccurs, maxOccurs). C'est du raisonnement primaire.

Discussions similaires

  1. Personnaliser les attributs d'une balise html
    Par artistenherbe dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 7
    Dernier message: 09/05/2012, 19h11
  2. [WD16] Afficher les attributs d'une balise XML
    Par bombseb dans le forum WinDev
    R�ponses: 8
    Dernier message: 01/03/2012, 15h43
  3. Recuperer les attributs d'une balise XML
    Par chwal dans le forum Langage
    R�ponses: 2
    Dernier message: 21/08/2010, 14h40
  4. Avoir tous les attributs d'une balise
    Par Nulenprogra dans le forum G�n�ral JavaScript
    R�ponses: 9
    Dernier message: 15/10/2007, 19h21
  5. g�rer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    R�ponses: 1
    Dernier message: 14/06/2002, 13h39

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