OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

relax-ng-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: Re: [relax-ng-comment] interleave vs mixed



> If I have a model thus,
>
> <interleave>
>   <zeroOrMore>
>     <element name="A"><text/></element>
>   </zeroOrMore>
>   <zeroOrMore>
>     <element name="B"><text/></element>
>   </zeroOrMore>
>   <zeroOrMore>
>     <element name="C"><text/></element>
>   </zeroOrMore>
> </interleave>
>
> I seem to be able to have arbitrary numbers of
> <A>, <B> and <C> elements in any order, e.g.
>
> <C>c</C><A>a</A><B>b</B><A>a</A><C>c</C><C>c</C>
>
> i.e. an interleaving of the sequences
>
> <A>a</A><A>a</A>
> <B>b</B>
> <C>c</C><C>c</C><C>c</C>
>
> If I change the keyword to mixed, (which adds a
> <text/> element to the interleave) it doesn't quite
> give me the result I'd expect

Changing "interleave" to "mixed" does not have the effect of adding "text"
to the "interleave".

<mixed>
  <zeroOrMore>
    <element name="A"><text/></element>
  </zeroOrMore>
  <zeroOrMore>
    <element name="B"><text/></element>
  </zeroOrMore>
  <zeroOrMore>
    <element name="C"><text/></element>
  </zeroOrMore>
</mixed>

is short for

<mixed>
  <group>
    <zeroOrMore>
      <element name="A"><text/></element>
    </zeroOrMore>
    <zeroOrMore>
      <element name="B"><text/></element>
    </zeroOrMore>
    <zeroOrMore>
      <element name="C"><text/></element>
    </zeroOrMore>
  </group>
</mixed>

which is short for

<interleave>
  <text/>
  <group>
    <zeroOrMore>
      <element name="A"><text/></element>
    </zeroOrMore>
    <zeroOrMore>
      <element name="B"><text/></element>
    </zeroOrMore>
    <zeroOrMore>
      <element name="C"><text/></element>
    </zeroOrMore>
  </group>
</interleave>

which is, of course, quite different from:

<interleave>
  <text/>
  <zeroOrMore>
    <element name="A"><text/></element>
  </zeroOrMore>
  <zeroOrMore>
    <element name="B"><text/></element>
  </zeroOrMore>
  <zeroOrMore>
    <element name="C"><text/></element>
  </zeroOrMore>
</interleave>

You need to wrap the <interleave> in a <mixed> instead of changing the
<interleave> to a <mixed>.

James








[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC