Re: Soucis avec le motif "interleave" de relaxNG

Lionel Villard <[email protected]> Fri, 11 May 2007 16:42:35 -0400
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
La spec dit:
For a pattern <interleave> /p1/ /p2/ </interleave>,

    * there must not be a name that belongs to both the name class of an
      element pattern referenced by a ref pattern occurring in /p1/ and
      the name class of an element pattern referenced by a ref pattern
      occurring in /p2/, and

Je connais rien a RelaxNG mais il me semble que ton schema n'est pas 
valide car ton interleave fait reference a 2 elements ayant le meme nom.

Lionel


SCHNEIDER, Stephane wrote:
> 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
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "[email protected]" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de 
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant 
> la commande "unsubscribe" a [email protected]
> (mailto:[email protected]?Subject=unsubscribe)
>
>
>
>
>