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


Help: OASIS Mailing Lists Help | MarkMail Help

relax-ng message

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

Subject: Re: What exactly is prohibited by the constraint of RELAX NG?

Kohsuke KAWAGUCHI wrote:

> restrictions:
> #1  For every group <group> p1 p2 </group> and <interleave> p1 p2
>     </interleave>, it is an error that p1 and p2 contains attribute
>     patterns whose name may collide.

This is our agreement and I think that this is fine.  The algorithm 
shown in your mail looks fine.

> #2  For every <oneOrMore> p1 </oneOrMore>, if p1 contains attribute
>     patterns, then no <group/> or <interleave/> is allowed between that
>     attribute and <oneOrMore/>

This is our agreement.  (I don' think that this is fine, though.  I much 
prefer <attribute>-less <oneOrMore> or <attribute>-and-<choice>-only 
<oneOrMore>, especially because we have disallowed colliding attributes.) 

> This algorithm detects the 2nd condition by invoking "check(p,false)"
> void check( Pattern p ) {
>     switch( p ) {
>     case <group> p1 p2 </group>:
>     case <interleave> p1 p2 </interleave>:
>     case <choice> p1 p2 </choice>:
>         check(p1,inOneOrMore);
>         check(p2,inOneOrMore);

Wht is "inOneOrMore"?  Why do we need the second argument?



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

Powered by eList eXpress LLC