<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
			datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
			xmlns:st="http://www.ascc.net/xml/schematron">
  <!-- Test inclusion of Schematron rules inside of schematron. -->

  <st:schema>

    <st:pattern name="doc schematron constraints">

      <st:rule context="doc">
         <st:assert test="@endDate &gt;= @startDate">
			  The endDate attribute value must be equal
			  to or greater than the startDate value.
         </st:assert>
        </st:rule>

      <st:rule context="fn">
         <st:report test=".//fn">
			  Footnotes are not allowed inside of other footnotes.
         </st:report>
        </st:rule>


    </st:pattern>


  </st:schema>

  <start>
    <ref name="doc"/>
  </start>
  <define name="doc.attlist">
    <attribute name="startDate">
      <data type="date"/>
    </attribute>
    <attribute name="endDate">
      <data type="date"/>
    </attribute>
  </define>
  <define name="doc">
    <element name="doc">
      <ref name="doc.attlist"/>
      <ref name="title"/>
      <zeroOrMore>
        <ref name="para"/>
      </zeroOrMore>
    </element>
  </define>
  <define name="title">
    <element name="title">
      <text/>
    </element>
  </define>
  <define name="para">
    <element name="para">
      <zeroOrMore>
        <choice>
          <text/>
          <ref name="fn"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <define name="fn">
    <element name="fn">
      <oneOrMore>
        <ref name="para"/>
      </oneOrMore>
    </element>
  </define>
</grammar>
