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] Comment gérer plusieurs éléments du même nom ?


Sujet :

Valider XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [XSD] Comment gérer plusieurs éléments du même nom ?
    Bonjour,

    Comme l'intitulé le montre, je cherche à gérer plusieurs éléments du même nom dans un schéma XML. Je m'explique. En fait, j'ai le fichier XML que je vous ai copié collé plus loin qui comprend un élément de type complexe "adresse" contenant des éléments fils (rue, codePostal, ville et pays). Mais plus loin, on retrouve un élément du même nom qui est un élément de type simple ! Donc en construisant mon schéma XML (par clonage), je déclare adresse en tant qu'élément simple mais après je dois aussi le déclarer en type complexe de ce fait là et forcément, ça ne peut pas fonctionner car NetBeans me dit qu'il y a deux éléments qui portent le même nom ! Donc, étant débutante, je suis vraiment bloquée pour ce problème... Quelqu'un aurait-il une idée pour m'aider ?? Merci d'avance !!!

    Voici le fichier XML :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <Librairie>
        <nom>Librairie Un</nom>
        <adresse>
            <rue> Rue 1</rue>
            <codePostal>XXXXX</codePostal>
            <ville>ville1</ville>
            <pays>france</pays>
        </adresse>
        <auteurs>
            <auteur auteur="hugo" tgenre="r p">
                <identite>
                    <nom>hugo</nom>
                    <prenom>victor</prenom>
                </identite>
                <adresse>Paris</adresse>
            </auteur>
            <auteur auteur="king" tgenre="h">
                <identite>
                    <nom>King</nom>
                    <prenom>Stephen</prenom>
                </identite>
                <adresse>New York</adresse>
            </auteur>
        </auteurs>
        <genres>
            <genre genre="h">horreur</genre>
            <genre genre="p">poesie</genre>
            <genre genre="r">roman</genre>
        </genres>
        <Livres>
            <titre ecrivain="hugo" typelivre="r">Notre Dame de Paris</titre>
            <titre ecrivain="king" typelivre="h">Bazaar</titre>
            <titre ecrivain="king" typelivre="h">Jessie</titre>
        </Livres>
    </Librairie>

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Une remarque préalable : Du point de vue de xsd, un élément de nom donné se validera toujours de la même façon, quel que soit son emplacement.
    Dit de manière plus rigoureuse, la validation des éléments ne dépend pas du contexte.

    De ce fait, je vois 4 possibilités :

    1 - SIMPLE - changer le nom de l'adresse de l'auteur. par exemple <adresse-auteur> ou simplement <ville>. Simple, pratique, élégant et sans rique.

    2 - NAMESPACES - Définir des espaces de nom pour ton document, et donner un namespace différent à l'adresse de la librairie et à l'adresse de l'auteur. Une solution sans doute trop compliquée pour le cas qui nous intéresse.

    3 - PRATIQUE - Valider l'élément <adresse> de sorte qu'il convienne aux deux types de contenus : autrement dit un PCDATA* qui peut contenir du texte, et autant d'éléments <rue>, <codePostal>, <ville> et <pays> qu'il veut, dans l'ordre qu'il veut. Ce n'est pas une solution idéale car ça peut valider des trucs un peu aberrants, mais si on ne peut pas renommer l'élément, au moins ça marche.

    4 - RELAXNG - Ne pas valider avec XSD mais avec RelaxNG. Les schémas RelaxNG peuvent dépendre du contexte, et donc valider différemment les éléments <adresse>.

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Une remarque préalable : Du point de vue de xsd, un élément de nom donné se validera toujours de la même façon, quel que soit son emplacement.
    C'est tout à fait exact, mais il existe une manière simple de contourner cela : ne pas déclarer globalement l'élément, mais uniquement localement.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Re !

    Le problème est résolu !!!! Vos réponses m'ont mises sur la piste. En fait, je devais en effet déclarer un élément adresse de type complexe au contenu simple et lors de la déclaration de l'élément "auteur", je faisais référence à <adresse> alors que je devais faire un 'name="adresse"' pour préciser que c'était un nouvel élément à ne pas confondre avec l'autre élément adresse ayant un contenu. En tout cas c'est grâce à vos réponses que j'ai pu résoudre de fichu problème, donc je vous remercie.

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

Discussions similaires

  1. [PHP 5.1] Comment attribuer plusieurs valeurs à un même nom de variable
    Par franckhelin dans le forum Langage
    Réponses: 7
    Dernier message: 18/02/2015, 15h07
  2. [WPF] Comment gérer plusieur ObservableCollection ayant le même objet?
    Par takinelinfo dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 21/06/2011, 20h18
  3. [MooTools] comment obtenir l'ID de plusieurs éléments de même NAME connu dont un seul est coché ?
    Par clavier12AZQSWX dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 11/01/2011, 20h30
  4. Comment gérer plusieurs sites sur un même hébergement ?
    Par Gaara-Manga dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 12/11/2009, 19h36
  5. Comment afficher des éléments de même nom en 1 seule fois
    Par magic8392 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 27/09/2005, 12h24

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