[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? Cheers, Makoto
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC