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] Intérêt de la définition d'un élément dans un XSD


Sujet :

Valider XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    hlr
    hlr est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 57
    Par défaut [XSD] Intérêt de la définition d'un élément dans un XSD
    Voilà mon souci : je suis en train de reprendre des XSD définis par d'autres personnes, et je me pose une question.
    Dans le XSD, j'ai ce fragment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<xs:simpleType name="TauxTVAType">
    		<xs:restriction base="xs:double"/>
    	</xs:simpleType>
    	<xs:element name="TauxTVA" type="tva:TauxTVAType"/>
    Ma question est : quel est le réel intérêt de définir l'élément TauxTVA dans ce XSD ?
    Lors de l'utilisation, quelles sont les différences entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
              <xs:element minOccurs="0" ref="tva:TauxTVA"/>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
              <xs:element minOccurs="0" name="TauxTVA" type="tva:TauxTVAType"/>
    (à part le fait que dans la 2e déclaration, je peux remplacer le nom de l'élément par autre chose que TauxTVA

    Merci de vos réponses

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    du point de vue de la validation proprement dite, cela revient au même ; par contre, ça ne l'est pas pour ce qui concerne la conception et les possibilités d'évolution du XSD.

    on peut imaginer qu'un élément TauxTVA puisse se retrouver en plusieurs endroits du schéma ; dans ce cas, on a tout intérêt à le définir une seule fois comme élément de premier ordre (directement sous xs:schema) puis à le référencer avec l'attribut « ref » partout où c'est nécessaire. Un genre de factorisation, quoi.
    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
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut
    tout à fait d'accord avec GrandFa,

    sur la forme qu'un xml doit avoir pour satisfaire le schéma, c'est la même chose.

    mais si on envisage par exemple une évolution future du format, il sera plus facile d'effectuer les changement en un seul endroit.

    j'y vois aussi un autre interet, si le schéma est utilisé pour généré un méta-modèle via un outil automatisé (EMF par exemple) on aboutira pas à la même chose :

    dans le cas factorisé : une seul classe représentant l'élément

    dans le cas non factorisé : une ribambelle de classes, identiques sauf que leurs noms forment une succession du style NomElem NomElem1 NomElem2 ....
    et il est ensuite difficile de gérer efficacement et de façon générique ses différent types qui ont en réalité le même sens dans un fichier xml

    bon me suis mal exprimé, mais par exemple, je suis confronté à une série de neufs schémas interdépendants, formant un ensemble de 1500 lignes à peu près, et où l'utilisation d'une factorisation ou alors d'un élément à part est faite de façon assez hasardeuse, le modèle généré était complètement b........ je peux vous dire que j'ai du passé cinq jours à dés-emmêler le truc !

    pour résumer, si on veut penser à ceux d'après : définir les types, puis les elem, en préférant faire des ref à des éléments déjà définis plutôt que d'en créer.
    Idem pour les attributs qui ont même nom et même sens ...

    Bon dimanche

  4. #4
    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
    A ce propos je me demandais : vos remarques concernent-elles uniquement la forme avec des "ref", genre :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xs:element name="machin" type="xs:string"/>
     
    <xs:element ref="machin"/>
    ou bien aussi la forme qui consiste à définir des types :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xs:simpleType name="type_machin">
       <xs:restriction base="xs:string"/>
    </xs:simpleType>
     
    <xs:element name="machin" type="type_machin"/>
    ^^ ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/11/2010, 15h16
  2. [XSD] éléments uniques dans un xsd:list
    Par nono_31 dans le forum Valider
    Réponses: 5
    Dernier message: 20/08/2009, 09h39
  3. Réponses: 3
    Dernier message: 14/05/2008, 17h07
  4. [XSD] définition d'un élément conteneur
    Par kij dans le forum Valider
    Réponses: 2
    Dernier message: 17/01/2008, 17h11
  5. [XSD] comment faire des tests sur des éléments
    Par attila771 dans le forum Valider
    Réponses: 1
    Dernier message: 11/10/2007, 12h32

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