Bonjour,

Je cherche à créer une DTD pour des xml ou un élément a pourrait contenir un nombre quelconque d'éléments b, c, et d. b, c, et d peuvent être dans n'importe quel ordre, mais ils doivent être groupés.

Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<a>
    <c/>
    <c/>
    <d/>
    <b/>
    <b/>
    <b/>
</a>
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<a>
    <b/>
    <b/>
    <c/>
    <d/>
    <d/>
</a>
sont valides.
En revanche,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<a>
    <b/>
    <c/>
    <b/>
    <d/>
</a>
n'est pas valide car une balise c est intercalée entre deux balises b, qui doivent être groupées.

J'ai pensé à écrire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<!ELEMENT a(b*, c*, d*)>
mais celà forcerait l'écriture de b, c et d dans cet ordre alors que n'importe quel ordre doit être valable : il validerait mon deuxième exemple mais pas le premier.
Je pourrai utiliser | pour avoir tous les ordres possibles, mais mon cas réel contient plusieurs dizaines d'éléments.

Bref, je sèche. Quelqu'un a une idée?

Merci d'avance.