<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="urn:spielplan"
           xmlns="urn:spielplan"
           elementFormDefault="qualified">

  <xs:annotation>
    <xs:documentation xml:lang="de">
      Stufe 3: Inhaltsprüfung. Dieses Schema validiert Inhalte
      (Datumsformat, Uhrzeit, Wochentag, Pflichtfelder, Duplikate).
    </xs:documentation>
  </xs:annotation>

  <xs:simpleType name="tDateDE">
    <xs:restriction base="xs:string">
      <xs:pattern value="(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])\.[0-9]{4}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="tDateFlexible">
    <xs:union memberTypes="xs:date tDateDE"/>
  </xs:simpleType>

  <xs:simpleType name="tTimeHM">
    <xs:restriction base="xs:string">
      <xs:pattern value="([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="tTimeFlexible">
    <xs:union memberTypes="xs:time tTimeHM"/>
  </xs:simpleType>

  <!-- Datensatz -->
  <xs:complexType name="tRow">
    <xs:sequence>
      <xs:element name="Mannschaft" type="xs:string"/>
      <xs:element name="TeamId" type="xs:string"/>
      <xs:element name="Tag" type="xs:string"/>
      <xs:element name="Termin" type="tDateFlexible"/>
      <xs:element name="Uhrzeit" type="tTimeFlexible"/>
      <xs:element name="Halle" type="xs:string"/>
      <xs:element name="Heim" type="xs:string"/>
      <xs:element name="Gast" type="xs:string"/>
      <xs:element name="Kampfgericht_1" type="xs:string" minOccurs="0"/>
      <xs:element name="Kampfgericht_2" type="xs:string" minOccurs="0"/>
      <xs:element name="Kampfgericht_3" type="xs:string" minOccurs="0"/>
      <xs:element name="Schiedsrichter_1" type="xs:string" minOccurs="0"/>
      <xs:element name="Schiedsrichter_2" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Root -->
  <xs:element name="spielplan">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="row" type="tRow" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>

    <!-- Keine doppelten Spielansetzungen -->
    <xs:unique name="uniq_game">
      <xs:selector xpath="row"/>
      <xs:field xpath="Termin"/>
      <xs:field xpath="Uhrzeit"/>
      <xs:field xpath="Halle"/>
    </xs:unique>
  </xs:element>

</xs:schema>
