Bonjour,
ce n'est malheureusement pas possible. Quand tu écris
<!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 :
<!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 :
<!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 :
<!ELEMENT section (parameter,(parameter|section)*)>
Seul le premier fils de section doit impérativement être un <parameter>, ensuite l'ordre est arbitraire.
</edit>
Partager