[tei-council] another content model for body

Sebastian Rahtz sebastian.rahtz at oucs.ox.ac.uk
Thu Jan 18 10:45:03 EST 2007


OK, I think is now no longer controversial.
It keeps all the div/div1/div0 distinctions,
and also allows a 4th way, with paragraph-like
objects before optional divisions. It is now
not far off the existing model.

Personally, I think my original iteration
using Schematron was a lot more fun.

Tested for situations with div deleted, div1/div0 deleted,
and all div-like objects removed (testfand, testfand2,
testfand3 in Sourceforge)

  <content>
    <rng:group>
<!-- first, some globals or divWrappers interleaved -->
      <rng:zeroOrMore>
    <rng:choice>
      <rng:group>
        <rng:ref name="model.divWrapper"/>
      </rng:group>
      <rng:group>
        <rng:choice>
          <rng:ref name="model.global"/>
          <rng:ref name="model.divGenLike"/>
        </rng:choice>
      </rng:group>
    </rng:choice>
      </rng:zeroOrMore>

      <rng:group>
    <!--
         now a choice between
        
         a) some divLike things, with globals after them if needed
         b) some divN0Like things, with globals after them if needed
         c) some divN1Like things, with globals after them if
         needed

             and then d) the same again, but preceded by paragraphs
    -->
    <rng:choice>
    <!-- a -->
      <rng:oneOrMore>
        <rng:group>
          <rng:group>
        <rng:ref name="model.divLike"/>
          </rng:group>
          <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.global"/>
          <rng:ref name="model.divGenLike"/>
        </rng:choice>
          </rng:zeroOrMore>
        </rng:group>
      </rng:oneOrMore>

      <!-- b -->     
      <rng:oneOrMore>
        <rng:group>
          <rng:group>
        <rng:ref name="model.divN0Like"/>
          </rng:group>
          <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.global"/>
          <rng:ref name="model.divGenLike"/>
        </rng:choice>
          </rng:zeroOrMore>
        </rng:group>
      </rng:oneOrMore>

      <!-- c -->     
      <rng:oneOrMore>
        <rng:group>
          <rng:group>
        <rng:ref name="model.divN1Like"/>
          </rng:group>
          <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="model.global"/>
          <rng:ref name="model.divGenLike"/>
        </rng:choice>
          </rng:zeroOrMore>
        </rng:group>
      </rng:oneOrMore>

      <!-- d some compulsory paragraphs, followed by optional divs-->   
      <rng:group>
        <rng:oneOrMore>
          <rng:group>
        <rng:ref name="macro.component"/>
          </rng:group>
          <rng:zeroOrMore>
        <rng:ref name="model.global"/>
          </rng:zeroOrMore>
        </rng:oneOrMore>
        <rng:optional>
          <rng:choice>
        <!-- a (bis)-->
        <rng:oneOrMore>
          <rng:group>
            <rng:group>
              <rng:ref name="model.divLike"/>
            </rng:group>
            <rng:zeroOrMore>
              <rng:choice>
            <rng:ref name="model.global"/>
            <rng:ref name="model.divGenLike"/>
              </rng:choice>
            </rng:zeroOrMore>
          </rng:group>
        </rng:oneOrMore>
       
        <!-- b (bis)-->     
        <rng:oneOrMore>
          <rng:group>
            <rng:group>
              <rng:ref name="model.divN0Like"/>
            </rng:group>
            <rng:zeroOrMore>
              <rng:choice>
            <rng:ref name="model.global"/>
            <rng:ref name="model.divGenLike"/>
              </rng:choice>
            </rng:zeroOrMore>
          </rng:group>
        </rng:oneOrMore>
       
        <!-- c (bis)-->     
        <rng:oneOrMore>
          <rng:group>
            <rng:group>
              <rng:ref name="model.divN1Like"/>
            </rng:group>
            <rng:zeroOrMore>
              <rng:choice>
            <rng:ref name="model.global"/>
            <rng:ref name="model.divGenLike"/>
              </rng:choice>
            </rng:zeroOrMore>
          </rng:group>
        </rng:oneOrMore>
          </rng:choice>
        </rng:optional>
      </rng:group>       

    </rng:choice>
      <!-- end of choice -->
      </rng:group>   
      <!-- finally, some divWrappers -->
      <rng:zeroOrMore>
    <rng:ref name="model.divWrapper.bottom"/>
      </rng:zeroOrMore>
    </rng:group>

  </content>

-- 
Sebastian Rahtz      

Information Manager, Oxford University Computing Services
13 Banbury Road, Oxford OX2 6NN. Phone +44 1865 283431

OSS Watch: JISC Open Source Advisory Service
http://www.oss-watch.ac.uk




More information about the tei-council mailing list