<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="https://eAbwasser.rlp-umwelt.de/eAbwasserSUEVOA"
  xmlns="https://eAbwasser.rlp-umwelt.de/eAbwasserSUEVOA"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified">

  <!-- ================================================== -->
  <!-- Include Kataloge -->
  <!-- ================================================== -->
  <xs:include schemaLocation="catalog-types.xsd"/>

  <!-- ================================================== -->
  <!-- Simple Types -->
  <!-- ================================================== -->


<!-- TT.MM.JJJJ -->
<xs:simpleType name="DayMonthType">
  <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>

  <!-- HH:MM -->
  <xs:simpleType name="TimeHHMMType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([01][0-9]|2[0-3]):[0-5][0-9]"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- TT.MM (für Berichtszeitraum Von/Bis) -->
  <xs:simpleType name="DayMonthShortType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- YYYY -->
  <xs:simpleType name="YearType">
    <xs:restriction base="xs:gYear"/>
  </xs:simpleType>

  <!-- Allgemeiner Text (nicht leer) -->
  <xs:simpleType name="NonEmptyString">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Dezimalzahl (für Werte) -->
  <xs:simpleType name="DecimalType">
    <xs:restriction base="xs:decimal"/>
  </xs:simpleType>

  <!-- Integer (>=0) -->
  <xs:simpleType name="NonNegativeInt">
    <xs:restriction base="xs:nonNegativeInteger"/>
  </xs:simpleType>

  <!-- 0/1 Enum für MessungUeber12Grad -->
  <xs:simpleType name="Bool01Type">
    <xs:restriction base="xs:integer">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Zul. Werte fuer Wetterschluessel -->
  <xs:simpleType name="WetterschluesselEnumType">
	<xs:restriction base="xs:string">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
      <xs:enumeration value="4"/>
      <xs:enumeration value="5"/>
      <xs:enumeration value="6"/>
      <xs:enumeration value="7"/>
      <xs:enumeration value="8"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Count-Typen -->
  <xs:simpleType name="EinzelwerteCountType">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:maxInclusive value="366"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- IDs -->
  <xs:simpleType name="AnlagennummerType">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:maxInclusive value="9999999999"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="MessstellennummerType">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:maxInclusive value="9999999999"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- ================================================== -->
  <!-- Complex Types -->
  <!-- ================================================== -->

  <xs:complexType name="BerichtszeitraumType">
    <xs:sequence>
      <xs:element name="Von" type="DayMonthShortType"/>
      <xs:element name="Bis" type="DayMonthShortType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="KopfdatenType">
    <xs:sequence>
      <xs:element name="Versionsnummer" type="NonEmptyString"/>
      <xs:element name="Berichtsjahr" type="YearType"/>
      <xs:element name="Berichtszeitraum" type="BerichtszeitraumType"/>
      <xs:element name="Anlagennummer" type="AnlagennummerType"/>
      <xs:element name="Anlagenname" type="NonEmptyString" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EinzelMesswertType">
    <xs:sequence>
      <xs:element name="Datum" type="DayMonthType"/>
      <xs:element name="Uhrzeit" type="TimeHHMMType" minOccurs="0"/>
      <xs:element name="Wert" type="DecimalType"/>
      <xs:element name="Schwelle" type="NonEmptyString" minOccurs="0"/>
      <xs:element name="MessungUeber12Grad" type="Bool01Type" minOccurs="0"/>
      <xs:element name="Wetterschluessel" type="WetterschluesselEnumType" minOccurs="0"/>
      <xs:element name="Konzentration" type="DecimalType" minOccurs="0"/>
      <xs:element name="Abwassermenge" type="DecimalType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EinzelwerteType">
    <xs:sequence>
      <xs:element name="AnzahlEinzelwerte" type="EinzelwerteCountType"/>
      <xs:element name="Einzelwert"
                  type="EinzelMesswertType"
                  minOccurs="1"
                  maxOccurs="366"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="JahreswertType">
    <xs:sequence>
      <xs:element name="Wert" type="DecimalType"/>
      <xs:element name="Schwelle" type="NonEmptyString" minOccurs="0"/>
      <xs:element name="AnzahlMessungen" type="NonNegativeInt" minOccurs="0"/>
      <xs:element name="MaxKonzentrationswert" type="DecimalType" minOccurs="0"/>
      <xs:element name="AnzahlMessungenUeber12Grad" type="NonNegativeInt" minOccurs="0"/>
      <xs:element name="MittlereKonzentration" type="DecimalType" minOccurs="0"/>
      <xs:element name="MittlereAbwassermenge" type="DecimalType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ParameterType">
    <xs:sequence>
      <xs:element name="Parameternummer" type="ParameternummerEnumType"/>
      <xs:element name="Parametername" type="NonEmptyString"/>
      <xs:element name="EinheitMesswert" type="EinheitEnumType"/>
	  <xs:element name="EinheitKonzentration" type="EinheitEnumType" minOccurs="0"/>
      <xs:element name="EinheitAbwassermenge" type="EinheitEnumType" minOccurs="0"/>
      <xs:element name="Probenahme" type="ProbenahmeEnumType"/>
      <xs:element name="Einzelwerte" type="EinzelwerteType" minOccurs="0"/>
      <xs:element name="Jahreswert" type="JahreswertType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MessstelleType">
    <xs:sequence>
      <xs:element name="Messstellennummer" type="MessstellennummerType"/>
      <xs:element name="Messstellenbezeichnung" type="NonEmptyString" minOccurs="0"/>
      <xs:element name="Parameter" type="ParameterType" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MessstellenType">
    <xs:sequence>
      <xs:element name="Messstelle" type="MessstelleType" minOccurs="1"  maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- ================================================== -->
  <!-- Root -->
  <!-- ================================================== -->

  <xs:element name="eAbwasserSUEVOA">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Kopfdaten" type="KopfdatenType"/>
        <xs:element name="Messstellen" type="MessstellenType"/>
      </xs:sequence>
      <xs:attribute name="version" type="NonEmptyString" use="required"/>
    </xs:complexType>
  </xs:element>

</xs:schema>
