<?xml version='1.0' encoding='UTF-8'?>
<!-- AUTO-GENERATED — do not edit directly.
     Source:      schema/grobid.training.references.rng
     Regenerate:  python scripts/build-schema.py -->

<grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.tei-c.org/ns/1.0">

  <define name="teiHeader">
    <element name="teiHeader">
      <zeroOrMore>
        <choice>
          <ref name="encodingDesc"/>
          <ref name="fileDesc"/>
          <ref name="revisionDesc"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="fileDesc">
    <element name="fileDesc">
      <optional>
        <attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <zeroOrMore>
        <choice>
          <ref name="editionStmt"/>
          <ref name="publicationStmt"/>
          <ref name="sourceDesc"/>
          <ref name="titleStmt"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="titleStmt">
    <element name="titleStmt">
      <zeroOrMore>
        <choice>
          <ref name="author"/>
          <ref name="respStmt"/>
          <ref name="title"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="respStmt">
    <element name="respStmt">
      <zeroOrMore>
        <choice>
          <ref name="persName"/>
          <ref name="resp"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="resp">
    <element name="resp">
      <text/>
    </element>
  </define>

  <define name="editionStmt">
    <element name="editionStmt">
      <zeroOrMore>
        <ref name="edition"/>
      </zeroOrMore>
    </element>
  </define>

  <define name="edition">
    <element name="edition">
      <interleave>
        <text/>
        <zeroOrMore>
          <choice>
            <ref name="title"/>
            <ref name="date"/>
            <ref name="idno"/>
          </choice>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <define name="publicationStmt">
    <element name="publicationStmt">
      <zeroOrMore>
        <choice>
          <ref name="availability"/>
          <ref name="date"/>
          <ref name="idno"/>
          <ref name="ptr"/>
          <ref name="publisher"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="sourceDesc">
    <element name="sourceDesc">
      <zeroOrMore>
        <choice>
          <ref name="sourceDescBibl"/>
          <ref name="biblStruct"/>
          <ref name="licence"/>
          <ref name="ptr"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="sourceDescBibl">
    <element name="bibl">
      <text/>
    </element>
  </define>

  <define name="encodingDesc">
    <element name="encodingDesc">
      <zeroOrMore>
        <ref name="appInfo"/>
      </zeroOrMore>
    </element>
  </define>

  <define name="appInfo">
    <element name="appInfo">
      <zeroOrMore>
        <ref name="application"/>
      </zeroOrMore>
    </element>
  </define>

  <define name="application">
    <element name="application">
      <optional>
        <attribute name="ident"/>
      </optional>
      <optional>
        <attribute name="type"/>
      </optional>
      <optional>
        <attribute name="version"/>
      </optional>
      <optional>
        <attribute name="when"/>
      </optional>
      <zeroOrMore>
        <choice>
          <ref name="desc"/>
          <ref name="label"/>
          <ref name="ref"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="desc">
    <element name="desc">
      <text/>
    </element>
  </define>

  <define name="revisionDesc">
    <element name="revisionDesc">
      <zeroOrMore>
        <ref name="change"/>
      </zeroOrMore>
    </element>
  </define>

  <define name="change">
    <element name="change">
      <optional>
        <attribute name="status"/>
      </optional>
      <optional>
        <attribute name="when"/>
      </optional>
      <optional>
        <attribute name="who"/>
      </optional>
      <interleave>
        <text/>
        <zeroOrMore>
          <ref name="note"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="desc"/>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <define name="note">
    <element name="note">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>


  <!-- ============================================================ -->
  <!-- biblStruct and child elements                                -->
  <!-- ============================================================ -->

  <define name="biblStruct">
    <element name="biblStruct">
      <optional>
        <attribute name="type"/>
      </optional>
      <optional>
        <attribute name="status"/>
      </optional>
      <optional>
        <attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <group>
        <!-- Zero or more analytic elements (for articles, chapters, etc.) -->
        <zeroOrMore>
          <ref name="analytic"/>
        </zeroOrMore>
        <!-- One or more monogr elements (for books, journals, etc.) -->
        <oneOrMore>
          <ref name="monogr"/>
          <!-- Each monogr can optionally be followed by series elements -->
          <zeroOrMore>
            <ref name="series"/>
          </zeroOrMore>
        </oneOrMore>
        <!-- Trailing elements -->
        <zeroOrMore>
          <choice>
            <ref name="bibl-struct_note"/>
            <ref name="ptr"/>
            <ref name="ref"/>
            <ref name="idno"/>
          </choice>
        </zeroOrMore>
      </group>
    </element>
  </define>

  <define name="analytic">
    <element name="analytic">
      <zeroOrMore>
        <choice>
          <ref name="author"/>
          <ref name="editor"/>
          <ref name="title"/>
          <ref name="meeting"/>
          <ref name="date"/>
          <ref name="idno"/>
          <ref name="ptr"/>
          <ref name="ref"/>
          <ref name="availability"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="monogr">
    <element name="monogr">
      <zeroOrMore>
        <choice>
          <ref name="author"/>
          <ref name="editor"/>
          <ref name="title"/>
          <ref name="imprint"/>
          <ref name="biblScope"/>
          <ref name="bibl-struct_edition"/>
          <ref name="date"/>
          <ref name="idno"/>
          <ref name="ptr"/>
          <ref name="ref"/>
          <ref name="availability"/>
          <ref name="bibl-struct_note"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="series">
    <element name="series">
      <interleave>
        <text/>
        <zeroOrMore>
          <choice>
            <ref name="title"/>
            <ref name="editor"/>
            <ref name="biblScope"/>
            <ref name="idno"/>
            <ref name="availability"/>
          </choice>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <!-- ============================================================ -->
  <!-- Person and name elements                                     -->
  <!-- ============================================================ -->

  <define name="author">
    <element name="author">
      <optional>
        <attribute name="role"/>
      </optional>
      <optional>
        <attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <interleave>
        <text/>
        <zeroOrMore>
          <choice>
            <ref name="persName"/>
            <ref name="forename"/>
            <ref name="surname"/>
            <ref name="middlename"/>
          </choice>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <define name="editor">
    <element name="editor">
      <optional>
        <attribute name="role"/>
      </optional>
      <optional>
        <attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <interleave>
        <text/>
        <zeroOrMore>
          <choice>
            <ref name="persName"/>
            <ref name="forename"/>
            <ref name="surname"/>
            <ref name="middlename"/>
          </choice>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <define name="persName">
    <element name="persName">
      <optional>
        <attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <interleave>
        <text/>
        <zeroOrMore>
          <ref name="forename"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="surname"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="middlename"/>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <define name="forename">
    <element name="forename">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="surname">
    <element name="surname">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="middlename">
    <element name="middlename">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>

  <!-- ============================================================ -->
  <!-- Title, imprint, and publication elements                     -->
  <!-- ============================================================ -->

  <define name="title">
    <element name="title">
      <optional>
        <attribute name="type"/>
      </optional>
      <optional>
        <attribute name="level">
          <choice>
            <value datatypeLibrary="">a</value>  <!-- analytic -->
            <value datatypeLibrary="">m</value>  <!-- monographic -->
            <value datatypeLibrary="">j</value>  <!-- journal -->
            <value datatypeLibrary="">s</value>  <!-- series -->
            <value datatypeLibrary="">u</value>  <!-- unpublished -->
          </choice>
        </attribute>
      </optional>
      <text/>
    </element>
  </define>

  <define name="imprint">
    <element name="imprint">
      <zeroOrMore>
        <choice>
          <ref name="publisher"/>
          <ref name="pubPlace"/>
          <ref name="date"/>
          <ref name="biblScope"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="publisher">
    <element name="publisher">
      <optional>
        <attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="pubPlace">
    <element name="pubPlace">
      <text/>
    </element>
  </define>

  <define name="biblScope">
    <element name="biblScope">
      <optional>
        <attribute name="unit"/>
      </optional>
      <optional>
        <attribute name="from"/>
      </optional>
      <optional>
        <attribute name="to"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="date">
    <element name="date">
      <optional>
        <attribute name="type"/>
      </optional>
      <optional>
        <attribute name="when"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="idno">
    <element name="idno">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="bibl-struct_edition">
    <element name="edition">
      <text/>
    </element>
  </define>

  <define name="availability">
    <element name="availability">
      <optional>
        <attribute name="status"/>
      </optional>
      <interleave>
        <text/>
        <zeroOrMore>
          <ref name="licence"/>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <define name="licence">
    <element name="licence">
      <optional>
        <attribute name="target"/>
      </optional>
      <empty/>
    </element>
  </define>

  <define name="meeting">
    <element name="meeting">
      <optional>
        <attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <text/>
    </element>
  </define>

  <!-- ============================================================ -->
  <!-- Disambiguated note variant for biblStruct context           -->
  <!-- bibl-struct_note: <note @type?> used inside biblStruct/monogr -->
  <!-- ============================================================ -->

  <define name="bibl-struct_note">
    <element name="note">
      <optional>
        <attribute name="type"/>
      </optional>
      <interleave>
        <text/>
        <zeroOrMore>
          <ref name="lb"/>
        </zeroOrMore>
      </interleave>
    </element>
  </define>


  <define name="lb">
    <element name="lb">
      <empty/>
    </element>
  </define>

  <define name="ptr">
    <element name="ptr">
      <attribute name="target"/>
      <empty/>
    </element>
  </define>

  <define name="ref">
    <element name="ref">
      <optional>
        <attribute name="target"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="label">
    <element name="label">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>



  <start>
    <ref name="TEI"/>
  </start>

  <define name="TEI">
    <element name="TEI">
      <zeroOrMore>
        <choice>
          <ref name="teiHeader"/>
          <ref name="text"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <!-- ============================================================ -->
  <!-- training.references main elements                            -->
  <!-- ============================================================ -->

  <define name="text">
    <element name="text">
      <optional>
        <attribute name="lang" ns="http://www.w3.org/XML/1998/namespace"/>
      </optional>
      <optional>
        <element name="front"><empty/></element>
      </optional>
      <optional>
        <element name="body"><empty/></element>
      </optional>
      <element name="back">
        <element name="listBibl">
          <oneOrMore>
            <ref name="bibl"/>
          </oneOrMore>
        </element>
      </element>
    </element>
  </define>

  <define name="bibl">
    <element name="bibl">
      <interleave>
        <text/>
        <zeroOrMore>
          <choice>
            <ref name="label"/>
            <ref name="lb"/>
            <ref name="author"/>
            <ref name="orgName"/>
            <ref name="title"/>
            <ref name="date"/>
            <ref name="biblScope"/>
            <ref name="publisher"/>
            <ref name="pubPlace"/>
            <ref name="editor"/>
            <ref name="references_edition"/>
            <ref name="references_ptr"/>
            <ref name="idno"/>
            <ref name="references_note"/>
          </choice>
        </zeroOrMore>
      </interleave>
    </element>
  </define>

  <define name="orgName">
    <element name="orgName">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>

  <define name="references_edition">
    <element name="edition">
      <optional>
        <attribute name="n"/>
      </optional>
      <text/>
    </element>
  </define>  

  <!-- <ptr type="web"> contains the URL as text content -->
  <define name="references_ptr">
    <element name="ptr">
      <optional>
        <attribute name="type"/>
      </optional>
      <optional>
        <attribute name="target"/>
      </optional>
      <text/>
    </element>
  </define>

  <!-- <note> and <note type="report"> for misc. reference annotations -->
  <define name="references_note">
    <element name="note">
      <optional>
        <attribute name="type"/>
      </optional>
      <text/>
    </element>
  </define>

</grammar>
