<content  xmlns:rng="http://relaxng.org/ns/structure/1.0">
  <rng:group>
    <!-- globals as usual -->
    <rng:zeroOrMore>
      <rng:ref name="model.global"/>
    </rng:zeroOrMore>

    <!--possibly some divTops, interspersed with globals -->
    <rng:optional>
      <rng:group>
	<rng:group>
	  <rng:ref name="model.divTop"/>
	</rng:group>
	<rng:zeroOrMore>
	  <rng:choice>
	    <rng:ref name="model.global"/>
	    <rng:ref name="model.divTop"/>
	  </rng:choice>
	</rng:zeroOrMore>
      </rng:group>
    </rng:optional>
    
    <!-- possibly some generated divs, interspersed with globals -->
    <rng:optional>
      <rng:group>
	<rng:group>
	  <rng:ref name="model.divGenLike"/>
	</rng:group>
	<rng:zeroOrMore>
	  <rng:choice>
	    <rng:ref name="model.global"/>
	    <rng:ref name="model.divGenLike"/>
	  </rng:choice>
	</rng:zeroOrMore>
      </rng:group>
    </rng:optional>
    
    <rng:group>
      <!-- 
	   now a choice between
	   
	   a) some divLike things, with globals and generated divs
	     after them if needed 
	   b) some divN1Like things, with globals
	     and generated divs after them if needed 
	   c) same again, preceded by macro.component
      -->
      <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.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>

	  <!-- c -->	
	  <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 -->
		<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.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 divBottoms interspersed with globals  -->
    <rng:zeroOrMore>
      <rng:group>
	<rng:ref name="model.divBottom"/>
	<rng:zeroOrMore>
	  <rng:ref name="model.global"/>
	</rng:zeroOrMore>
      </rng:group>
    </rng:zeroOrMore>

  </rng:group>
  
</content>
