<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0"
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

<!--
a jegyzőkönyv struktúrája
a ref elemben hivatkozott elemek kifejtése lentebb található
-->
  <start>
    <element name="tdkKonferencia">

      <ref name="konferenciaAdatai"/>

      <element name="palyamunkak">
        <oneOrMore>
          <ref name="palyamunkaAdatai"/>
        </oneOrMore>
      </element>

    </element>
  </start>

<!--
konferencia adatai
-->
  <define name="konferenciaAdatai">
    <element name="konferenciaAdatai">
      <interleave>
        <!-- a rendezp intézmény kódja -->
        <element name="intezmenyKod">
          <text/>
        </element>

        <!-- a rendező kar kódja, ha kari/tanszéki -->
        <optional>
          <element name="karKod">
            <text/>
          </element>
        </optional>

        <!-- a rendező tanszék neve, ha tanszéki konferencia (nem kódja, mivel arról nincs egységes nyilvántartás) -->
        <optional>
          <element name="tanszekNev">
            <text/>
          </element>
        </optional>

        <!-- időpont -->
        <element name="idopont">
          <data type="date">
            <param name="minInclusive">2011-01-01</param>
            <param name="maxInclusive">2012-12-31</param>
          </data>
        </element>

        <!-- a konferencia egyéb adatai -->
        <optional>
          <element name="helyszin">
            <text/>
          </element>
        </optional>
        <optional>
          <element name="szekcio">
            <text/>
          </element>
        </optional>
      </interleave>
    </element>
  </define>


<!--
pályamunka adatai
-->
  <define name="palyamunkaAdatai">
    <element name="palyamunka">
      <!-- kötelező -->
      <element name="cim">
        <text/>
      </element>
      <interleave>
        <element name="otdkraJavasolt">
          <data type="boolean"/>
        </element>

        <!-- egyéb adatok -->
        <optional>
          <element name="osszesitettPontszam">
            <data type="double">
              <param name="minInclusive">0.0</param>
              <param name="maxInclusive">1000.0</param>
            </data>
          </element>
        </optional>
        <optional>
          <element name="helyezes">
            <data type="positiveInteger"/>
          </element>
        </optional>
        <optional>
          <element name="zsuriMegjegyzese">
            <text/>
          </element>
        </optional>
      </interleave>

      <!-- szerzők -->
      <element name="szerzok">
        <oneOrMore>
          <ref name="hallgatoAdatai"/>
        </oneOrMore>
      </element>

      <!-- témavezetők -->
      <element name="temavezetok">
        <oneOrMore>
          <ref name="temavezetoAdatai"/>
        </oneOrMore>
      </element>

    </element>
  </define>


<!--
hallgató adatai
-->
  <define name="hallgatoAdatai">
    <element name="hallgato">
      <!-- saját adatok -->
      <element name="nev">
        <text/>
      </element>
      <interleave>
        <optional> 
          <!-- ez ugyan XML-szinten optional, de a továbbjutott pályamunkáknál legalább egy hallgatónak meg kell adni -->
          <element name="email">
            <text/>
          </element>
        </optional>

        <!-- képzési adatok -->
        <element name="intezmenyKod">
          <text/>
        </element>
        <optional>
          <element name="karKod">
            <text/>
          </element>
        </optional>
        <element name="kepzesTipusa">
          <choice>
            <value type="string">o</value> <!-- osztatlan -->
            <value type="string">ba</value>
            <value type="string">bsc</value>
            <value type="string">ma</value>
            <value type="string">msc</value>
            <value type="string">k</value> <!-- középiskola -->
            <value type="string">egyeb</value> <!-- pl felsőfokú szakképzés. egyéb képzéstípussal a pályamunka nem juthat tovább az OTDK-ra -->
          </choice>
        </element>
        <optional>
          <!-- csak akkor lehet üresen hagyni, ha a hallgató középiskolás, azaz "k" képzéstípussal kerül rögzítésre -->
          <element name="aktivFelevekSzama">
            <data type="positiveInteger"/>
          </element>
        </optional>
      </interleave>

    </element>
  </define>


<!--
témavezető adatai
-->
  <define name="temavezetoAdatai">
    <element name="temavezeto">

      <element name="nev">
        <text/>
      </element>
      <element name="beosztas">
        <text/>
      </element>

    </element>
  </define>

</grammar>
