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 :

[DTD] imbrication multiple d'éléments


Sujet :

Valider XML

  1. #1
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut [DTD] imbrication multiple d'éléments
    Bonjour,
    j'essaye de définir un document DTD pour un fichier XML qui contient des balises "récursives". C'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <section name="fantassin">
       <parameter typename="pseudo" name="pseudo fantassin" />
       <section name="uneautre">
          <parameter typename="int" name="EEPROMSize" />
       </section>
       <parameter typename="StDonneeFantassin" name="lesdonnees" />
    </section>
    L'idéal serait d'arriver à dire en DTD que :
    une balise "section" doit contenir une ou plusieurs balises "parameter" et peut contenir plusieurs balises "section"
    Il n'y a pas de limite sur la profondeur d'imbrication des "section".


    J'ai essayé de traduire ça en DTD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <!ELEMENT parameter (#PCDATA)>
    <!ELEMENT section (section* | parameter+)>
    <!ATTLIST section
    	name CDATA #REQUIRED>
    <!ATTLIST parameter
    	typename IDREF #REQUIRED
    	name CDATA #REQUIRED>
    mais XmlNotepad me jette à la validation sur la définition de la deuxième section imbriquée. L'erreur est "parameter attendu".

    Comment fait-on ça en DTD ?

    Merci !

  2. #2
    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
    Bonjour,

    ce n'est malheureusement pas possible. Quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT (section*|parameter+)>
    le parseur XML s'attend à trouver dans une <section> une suite de <section> ou une suite de <parameter> ou rien du tout (induit par la cardinalité * de section).
    Une solution, ou plutôt un compromis, serait d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT (section|parameter)+>
    Là, tu peux avoir une imbrication de <section> et de <parameter>. Le problème est que tu peux te retrouver avec une <section> sans <parameter> et avec une ou plusieurs <section> enfants.
    La seule véritable solution est d'ordonner tes éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT (parameter+,section*)>
    En placant tout tes <parameter> avant <section> (ou le contraire), tu peux contrôler efficacement la cardinalité.

    <edit>
    Une variante de la dernière solution, peut-être moins contraignante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT section (parameter,(parameter|section)*)>
    Seul le premier fils de section doit impérativement être un <parameter>, ensuite l'ordre est arbitraire.
    </edit>
    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

Discussions similaires

  1. multiplication d'éléments de listes
    Par Inopsis dans le forum Général Python
    Réponses: 3
    Dernier message: 15/02/2015, 12h38
  2. [AC-2010] Imbrications multiples de requêtes
    Par macakou99 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 16/01/2014, 22h52
  3. Multiplication des éléments d'un tableau
    Par zone-x dans le forum x86 16-bits
    Réponses: 12
    Dernier message: 01/02/2013, 00h00
  4. [DTD] déclaration d'un élément
    Par bertoulono dans le forum Valider
    Réponses: 1
    Dernier message: 19/07/2006, 21h08
  5. Probleme d'imbrication multiple
    Par Gwipi dans le forum Requêtes
    Réponses: 5
    Dernier message: 27/03/2006, 17h36

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