[tei-council] @min and @max

Lou Burnard lou.burnard at retired.ox.ac.uk
Wed Jun 20 05:35:03 EDT 2012


Maybe I am missing something, but this example seems Broken As Designed 
to me. It seems to be changing <l> so that it can appear some number of 
times within <l>, presumably to test the @min and @max attributes. But 
<l> cannot appear within <l> and this doesn't happen inside the test 
file anyway.



On 19/06/12 20:53, Martin Holmes wrote:
> In the IRC chatroom, something came up that we need to look at.
>
> There's a test in P5-Test which we think should be failing, but it's not
> failing. It's called testcardinality, and consists of:
>
> /trunk/P5/Test/testcardinality.odd
>                  testcardinality.xml
>
> The ODD file creates a constraint on the number of times a member of
> model.lLike can appear inside a parent:
>
> <schemaSpec ident="testcardinality">
>             <moduleRef key="tei"/>
>             <moduleRef key="core"/>
>             <moduleRef key="header"/>
>             <moduleRef key="textstructure"/>
> 	<elementSpec ident="l" mode="change">
> 	<classes mode="replace">
> 	<memberOf key="att.global"/>
> 	<memberOf key="att.metrical"/>
> 	<memberOf key="att.enjamb"/>	
> 	<memberOf key="model.lLike" min="2" max="6"/>
> 	</classes>
> 	</elementSpec>
>         </schemaSpec>
>
> And the test.xml file has an<lg>  which clearly violates that constraint:
>
>             <lg>
> <!--  Why doesn't this fail validation? It should, surely. MDH
> 2012-06-19.          -->
>               <l>Bent double, like old beggars under sacks,</l>
>             </lg>
>
> (It has only one<l>.)
>
> I'm pretty sure that DTDs cannot support min and max occurrence
> constraints, but I think RNGs should; the RNG generated from this ODD
> file, however, allows a single model.lLike to occur:
>
> <group>
>           <zeroOrMore>
>             <choice>
>               <ref name="model.divTop"/>
>               <ref name="model.global"/>
>             </choice>
>           </zeroOrMore>
>           <choice>
>             <ref name="model.lLike"/>
>             <ref name="model.stageLike"/>
>             <ref name="model.labelLike"/>
>             <ref name="lg"/>
>           </choice>
>           <zeroOrMore>
>             <choice>
>               <ref name="model.lLike"/>
>               <ref name="model.stageLike"/>
>               <ref name="model.labelLike"/>
>               <ref name="model.global"/>
>               <ref name="lg"/>
>             </choice>
>           </zeroOrMore>
>           <zeroOrMore>
>             <group>
>               <ref name="model.divBottom"/>
>             </group>
>             <zeroOrMore>
>               <ref name="model.global"/>
>             </zeroOrMore>
>           </zeroOrMore>
>         </group>
>
> So my question is: is this supposed to work? If so, is it supposed to
> work in RNG files? And if so, is this an example of an ODD processing error?
>
> If it's not supposed to work -- if it's just a feature of ODD, and not
> of schemas we currently generate from ODD -- then we can just switch off
> this test for the moment. But I don't know the background to @min and
> @max well enough to understand what should be happening.
>
> Cheers,
> Martin



More information about the tei-council mailing list