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 :

Comment spécifier la valeur d'un attribut dans un type héritant? [XSD]


Sujet :

Valider XML

  1. #1
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut Comment spécifier la valeur d'un attribut dans un type héritant?
    Bonjour,

    j'ai posé la question là : http://stackoverflow.com/questions/4...-children-type

    Mais n'ayant eu aucune réponse pour l'instant( ) je tente ici aussi :

    Dans un fichier xsd j'ai cette definition d'un type de base d'element :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xs:complexType name="event" abstract="true" >
        <xs:attribute name="move" type="aos:move_ref" use="required" />
        <xs:attribute name="type" type="aos:event_type" use="required" />
    </xs:complexType>

    Et je veux définir la valeur de l'attribut "type" dans les types enfants, donc j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xs:complexType name="signal" >
        <xs:complexContent>
          <xs:extension base="aos:event">
            <xs:attribute name="type" type="aos:event_type" fixed="signal" />
            <xs:attribute name="source" type="aos:signal_source" use="required" />
          </xs:extension>
        </xs:complexContent>
     </xs:complexType>

    Ca ne pose pas de problème à Visual Studio mais le generateur de code CodeSynthesis C++ n'a pas l'air d'être d'accord :

    error: attribute 'type' is already defined in base
    Comment suis-je censé écrire cela? Je veux juste que la valeur de l'attribut "type" soit défini différemment pour chaque type enfant.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Points : 21
    Points
    21
    Par défaut
    Sans trop m'avancer je dirais que tu n'as pas le droit de nommer une variable avec le nom "type".. type étant un mot-clé... utilisé dans la déclaration de l'attribut..

    Essayes en modifiant le nom de ta variable "type".
    Mets plutot name="mytype" par exemple

  3. #3
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Et si tu as le droit

    Non seulement tu as le droit de nommer un attribute "type" ou ce que tu veux parceque c'est un attribut donc ya pas de mot clé associé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <montag type="mon_type" />
    Mais en plus tu peux très bien utiliser "type" comme nom d'element parce que c'est dans ton namespace

    <type>MonType</type>

    Et pour revenir à notre cas, tu peux aussi utiliser comme nom de type d'element pour la simple raison que je définis aussi un namespace.
    Par exemple dans mon fichier tout est sous le namespace "aos" donc si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xs:complexType name="type" > ...
    Je peu utiliser ce type en précisant le namespace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:element name="type" type="aos:type" /> <--j'ai précisé le namespace
    Je peux utiliser

    <dans mon fichier xml parce que j'aurais précisé que tout est sous le namespace aos. Si je dois mélanger des tags de différents formats, je précise le namespace et hop.


    Sinon j'ai résolu le problème, voir la réponse selectionnée sur stackoverflow : http://stackoverflow.com/questions/4...n-element-type

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Points : 21
    Points
    21
    Par défaut
    Aux temps pour moi...

    Bon et bien j'aurai appris quelque chose. Je m'abstenais d'utiliser "type" mais tes explications sont vraiment très claires.

    Merci beaucoup pour ces précieuses informations.

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

Discussions similaires

  1. [SH] Comment récupérer la valeur d un attribut dans un XML
    Par devjava83 dans le forum Shell et commandes POSIX
    Réponses: 4
    Dernier message: 24/01/2014, 09h48
  2. Réponses: 2
    Dernier message: 29/05/2006, 14h02
  3. Réponses: 1
    Dernier message: 17/05/2006, 16h32
  4. Réponses: 9
    Dernier message: 04/05/2006, 17h33
  5. Comment récupérer la valeur d'un dbGrid dans des fenêtres MDI ?
    Par sylvie cl dans le forum Composants VCL
    Réponses: 5
    Dernier message: 19/07/2005, 13h42

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