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] création d'un schema à partir d'une description textuelle


Sujet :

Valider XML

  1. #1
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut [XSD] création d'un schema à partir d'une description textuelle
    bonjour
    j'aimerai créer un xml schema
    j'ai:
    toute personne doit avoir un Identifiant
    une personne de type: homme -femme
    une personne peut etre enseignant ou étudiant
    une personne peut avoir un lien de parenté avec une autre personne (frère, soeur père, mère)

    et chaque personne à 1 ou plusieurs enfants qui sont aussi des personnes bien sur e qui ont un identifiant bien sûr
    j'ai ce code mais il n'est pas complet:
    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
    27
     
    <xsd:element name="personnes">
    <xsd:xomplexType>
    <xsd:sequence>
    <xsd:element name="personne" minOccur="0" maxOccur="unbounted"><!-- ça -->
     <xsd:complexType>
      <xsd:sequence> 
       <xsd:element name="nom" type="xsd:string"/>
    <!-- sexe est un choix entre homme ou femme -->
       <xsd:element name="famille">
       <!--reflechir sur la famille-->
     
     
     
    <xsd:simpleType name="personneId" type="xsd:ID"/>
     
     
       </xsd:element>
     
     
      </xsd:sequence>
     </xsd:complexType>
    </xsd:element>
    <!--on ferme tout-->
     </xsd:sequence>
     </xsd:complexType>
    </xsd:element>
    merci d'avance

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    avant toute chose tu dois définir ce que tu considère comme des attributs ou des éléments

  3. #3
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    justement je sais pas
    j'ai posé le probleme comme ça parceque je sais pas comment le resprésenter.
    je sais qu'une personne peut avoir des enfants qui sont eux meme des personnes donc enfant doit etre considérer comme atribut ou element je sais pas.
    une personne peut avoir des liens de parenté( frere, pere, mere)
    je sais pas si "lien" doit etre un element avec un attribut: nature-parenté ou bien non.
    sachant que "lien" doit etre dans "personne" mais en tant que élément ou attribut je sais pas.

    merci d'avance

  4. #4
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour fatjoe,

    je ne sais pas comment font les autres programmeurs pour faire de tels choix,
    mais pour ma part :
    - je commence par faire une liste des éléments XML et des relations entre ces éléments,
    - ensuite, je construis un graphe que je transforme en arbre sachant que
    -- un attribut permet de différencier le type d'un éléments;
    -- l'ensemble des attributs d'un élément n'admet pas de structure d'ordre
    (ainsi <personne type="femme" lien="parent"/> est identique à
    <personne lien="parent" type="femme"/>)
    -- l'ensemble des éléments d'un arbre admet une structure d'ordre.
    (ainsi <personne name="unNom"/><personne name="autreNom"/> est différent de <personne name="autreNom"/><personne name="unNom"/>)

    Enfin, la structure de ton arbre dépends de ce que tu veux en faire.
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  5. #5
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    j'ai fait ça mais je sais pas si c'est juste ou non
    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
    <xs:element name="frere">
      <xs:complexType>
        <xs:simpleContent>
            <xs:attribute id="mettre_ici_identifiant" type="xs:string" />
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
     
     
    <xsd:element name="personne" minOccur="0" maxOccur="unbounted"><!-- ça -->
     <xsd:complexType>
      <xsd:sequence> 
       <xsd:element name="nom" type="xsd:string"/>
      <xsd:element id="mettre_ici_identifiant" type="xsd:frere"/>
       </xsd:sequence>
     </xsd:complexType>
    </xsd:element>

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Non c'est complétement faux

    Bon, il est visible que tu as du mal avec xml schema & Co , dans un premier temps, essaye de faire un exemple du xml que tu souhaiterais avec quelques valeurs fictives, ensuite on verra pour fabriquer son xml schema

  7. #7
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    < personne nom="n" identifiant="A01">
     
    <enfant1 nature="garçon" identifiant="A02">
    <lien type="cousin">l'identifiant d'une personne<lien/>
    <enfant1/>
     
    <enfant2 nature="garçon" identifiant="A03">
    <lien type="oncle">une personne ou un enfant d'une autre personne<lien/>
    <enfant2/>
    <enfant3 nature="fille" identifiant="A04"><enfant3/>
     
    <lien type="cousin">identifiant d'une autre personne<lien/>
     
    < personne/>

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Les conseils que je peux déjà te donner:
    Les identifiant en attribut comme tu l'as fait c'est très bien, nature aussi.
    Les noms de balises ne doivent pas porter de nom séquentiel.
    Cela ne sert à rien (les analyseurs XML savent très bien compter,ordonner et atteindre un élément précis dans une liste) et en plus ça complexifie énormément les xml schéma
    donc pas de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <enfant1>
    ...
    </enfant1> 
    <enfant2 >
    ...
    </enfant2>
    mais simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <enfant>
    ...
    </enfant> 
    <enfant>
    ...
    </enfant>


    Pour la balise lien
    <lien type="oncle">une personne ou un enfant d'une autre personne<lien/>
    je prendrais cette structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <lien>
    <type>oncle</type>
    <id>une personne ou un enfant d'une autre personne</id>
    </lien>
    oncle n'est pas un "type" permettant d'identifier un lien, mais le lien lui-même, je ne le placerais pas en attribut même si cela reste envisageable.
    De plus le lien n'est la personne ou l'enfant mais avec la personne ou l'enfant, donc cela ne doit pas être directement dans la balise.
    En faire deux éléments fils me semble la structure la plus clair et elle permet aussi d'utiliser lme même lien vers plusieurs personnes (différents éléments id).

  9. #9
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Pour expliquer un peu plus ma réticence sur oncle et la différence entre type et nature.
    Dans ce lien , la nature peut être "oncle","cousin" etc...
    Le type , qu'on pourrait plutot alors placé en attribut serait plutot "maternel" ou "paternel" , ce qui est une information qui permettrait de différencier deux "oncles"
    Un autre point, plus sémantique.
    Je trouve une petite faiblesse dans les sens .
    Oncle ou tante , c'est finalement le même lien de parenté, il faudrait que tu trouve un terme plus "neutre" je trouve.Au final c'est le sexe de la personne (un attribut que tu devrais rajouter dans personne)

    Sur ce point j'ai oublié une chose
    nom ne doit pas être placé en attribut mais doit être rajouté en tant qu'élément.Ce n'est ni une clé (plusieurs personnes peuvent avoir le même nom) ni le type d'une personne

  10. #10
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <lien>
    <type>oncle</type>
    <id>une personne ou un enfant d'une autre personne</id>
    </lien>
    doit être mise dans <enfant></enfant> ?

    et puisse je la mettre dans <personne></personne>

    donc ça sera comme ça
    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
    <personne  identifiant="A01">
    <nom>n</nom>
     
    <enfant>
     
    <nom>n</nom>
     
    <lien>
    <type>oncle</type>
    <id>une personne ou un enfant d'une autre personne</id>
    </lien>
     
    </enfant> 
     
    <enfant>
    ...
    </enfant>
     
    <lien>
    <type>oncle</type>
    <id>une personne ou un enfant d'une autre personne</id>
    </lien>
     
    < personne/>
    juste 2 remarques:
    - balise personne doit être répéter plusieurs fois dans le même fichiers.
    - type de lien doit etre connus : {oncle,pere,tante..}
    je suppose que ces deux informations doivent etre exprimer en XSD et non pas XML

    merci

  11. #11
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Plus je regarde et plus je me demandes si les balises enfants ont un intérêt dans ta structure
    je me demandes si


    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
     <liste_personnes> <personne  identifiant="A01">
    <nom>Bob</nom>
    <lien>
    <type>pere</type>
    <id>A02</id>
    <id>A03</id>
    </lien>
    </personne>
    <personne  identifiant="A02">
    <nom>Bill</nom>
    </personne>
    <personne  identifiant="A03">
    <nom>Willma</nom>
    </personne>
    </personne>
    <personne  identifiant="A04">
    <nom>Will</nom>
    <lien>
    <type>oncle</type>
    <id>A03</id>
    </lien>
    </personne></liste_personnes>
    En lisant ce code on sait que Bob est le père de Bill et Wilma, indiqué que Bill est le fils de Bob ou Willma sa fille tient un peu de la redondance d'information.
    Avec ceci on peut même déduire que Willma n'est que la demi-soeur de Bill puisque Will est son oncle sans être celui de Bill alors qu'ils ont le même père

    juste 2 remarques:
    - balise personne doit être répéter plusieurs fois dans le même fichiers.
    - type de lien doit etre connus : {oncle,pere,tante..}
    je suppose que ces deux informations doivent etre exprimer en XSD et non pas XML
    Oui, pour le premier on va utiliser les xs:sequence pour le deuxième point il faut que tu explique un peu.
    Tu veux créer un type énuméré ?

  12. #12
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    comment faire pour la redandance?
    je crois pas qu'il y as un moyen de contourner ça

    pour la deuxième question:
    type de lien doit etre connus : {oncle,pere,tante..}

    je crois qu'il faut un type énuméré, mais je sais pas.

    maintenant que la structure XML est presque claire
    pourriez vous me donnez sa représentation en XSD
    SVP
    merci d'avance

  13. #13
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Tu as la plupart des élément-s pour essayer seul
    Dans ce que tu as écrit,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xs:element name="...">
      <xs:complexType>
        <xs:simpleContent>
            <xs:attribute id="..." type="xs:string" />
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
    Ceci est la bonne façon de décrire un élément avec un attribut

    personne doit être placé dans une xs:sequence


    un type énuméré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xs:simpleType name="...">
    <xs:restriction base="...">
    <xs:enumeration value="..."/>
    <xs:enumeration value="..."/>
    </xs:restriction>
    </xs:simpleType>

  14. #14
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    merci
    et pour la redondance il n'y as pas de solution?

  15. #15
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    pas au niveau du xml schema

    Par contre tu peux et dois t'assurer que les identifiants utilisé dans les liens existe bien dans le XML avec les KEY et KEYREF

  16. #16
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    pour la redondance il faut s'assurer de ça par la programmation?
    et pour le key et keyref, c'est au niveau xsd?

  17. #17
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par fatjoe Voir le message
    pour la redondance il faut s'assurer de ça par la programmation?
    Ne te fixe pas trop sur la redondance pour l'instant, c'est à voir après

    Citation Envoyé par fatjoe Voir le message
    et pour le key et keyref, c'est au niveau xsd?
    Oui ce sont des éléments xml schema

  18. #18
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    dans un cous : Keyref doit référencer une clé déclarée dans le même élément ou dans un de ses descendants.
    alors que dans mon cas, un keyref peut référencer un élément qui n'est pas dans un de ses descendants

  19. #19
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Je pense que tu as mal compris .
    Dans le cas qui nous concerne cela ne pose aucun soucis , KEY doit simplement être déclaré dans l'élément liste_personnes

  20. #20
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    déclarer pour chaque personne non?

    une remarque, je doit faire un key pour un element et un key pour un sous element de cet element (c'est à dire son fils)
    par la suite je veux référencer ou bien le pere ou bien le fils sachant que chacun de ces élément a un identifiant unique
    est ce que c'est possible?

    j'ai pas compris selector et path
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsd:key name="myId"> 
          <xsd:selector xpath="./AAA/a"/> 
          <xsd:field xpath="@id"/>

Discussions similaires

  1. Création d'un état à partir d'une requête
    Par keeepcoool dans le forum IHM
    Réponses: 1
    Dernier message: 31/03/2009, 06h44
  2. [A-03] Création d'un tableau à partir d'une requête
    Par helprojet dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/02/2009, 12h41
  3. Création d'un arbre à partir d'une liste contigue
    Par karaz_karaz dans le forum C
    Réponses: 2
    Dernier message: 28/06/2008, 23h51
  4. Création d'un contact à partir d'une VCard
    Par myrddin772 dans le forum VBA Outlook
    Réponses: 8
    Dernier message: 28/05/2008, 15h38
  5. Création d'un vecteur à partir d'une structure
    Par lilyla dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/02/2008, 13h45

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