Soucis avec le motif "interleave" de relaxNG

"SCHNEIDER, Stephane" <[email protected]> Wed, 25 Apr 2007 17:42:02 +0200
Newsgroups gmane.text.xml.french.tech
Message-ID <B589F7D62E8DF644B5FC0B14352937B504975C39@laelia.ads.intra.inist.fr>
Bonjour à tous,
 
 J ai un probleme en relaxNG avec "interleave" et la notion d'ordre.
 
"Interleave " est censé introduire la notion d'ordre libre : cf http://xmlfr.org/oasis/committees/relax-ng/tutorial-20011203-fr.html#IDAN1YR <http://xmlfr.org/oasis/committees/relax-ng/tutorial-20011203-fr.html#IDAN1YR> 
 Cependant, la validation par <Oxygen/> me donne l'erreur suivante : "E overlapping element names in operands of "interleave" ,  en pointant sur l élement <struct>.
 Dans mon exemple, comment faire pour arriver à spécifier un ordre non determiné sur les éléments fils listés dans "grp-term". Etant donnée que j ai d'autres cas plus complexes, 
 je ne peux pas m'amuser à chaque fois à definir toutes les motifs possibles avec des "group", des "optional" et des "choice".
 
 
Voila un bout du RelaxNG simplifié : 
 
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0 <http://relaxng.org/ns/structure/1.0> ">
  <start>
    <ref name="root_element"/>
  </start>
 <define name="root_element">
    <element name="struct">
        <attribute name="type">
        <value>termSection</value>
      </attribute>
      <ref name="grp-term"/>
    </element>
  </define>
   <define name="grp-term">
    <interleave>
      <ref name="term_dc" />
      <ref name="admSta_dc" />
  </interleave>
 </define>
  <define name="admSta_dc">
    <element name="feat">
      <attribute name="type">
        <value>administrativeStatus</value>
      </attribute>
      <text  />
    </element>
  </define>
  <define name="term_dc">
    <element name="feat">
      <attribute name="type">
        <value>term</value>
      </attribute>
      <text  />
    </element>
  </define>
</grammar>
 
Il doit valider :
 
<struct type="termSection">
         <feat type="administrativeStatus">bad</feat>
         <feat type="term">acide</feat>
</struct>
 
ou 
 
<struct type="termSection">
         <feat type="term">acide</feat>
         <feat type="administrativeStatus">bad</feat>
</struct>
 
Une idée ???  Merci 
 
Li Mu Bai