<?xml version = "1.0" encoding = "ISO-8859-1"?>
<xs:schema xmlns = "http://www.destatis.de/schema/datml-res/1.0/de"
	 targetNamespace = "http://www.destatis.de/schema/datml-res/1.0/de"
	 xmlns:xs = "http://www.w3.org/2001/XMLSchema"
	 version = "1.0"
	 elementFormDefault = "qualified">
	<xs:annotation>
		<xs:documentation xml:lang = "de" source = "http://www.statspez.de"> 
              Schema    : DatML/RES
              Version   : 1.0
              Variante  : D
              Edition   : 0
              Typ       : XML-Schema
              Namensraum: http://www.destatis.de/schema/datml-res/1.0/de
              Stand     : 20041209
              Autor     : Michael Schaefer
                          Statistisches Bundesamt
                          Gustav-Stresemann-Ring 11
                          D-65189 Wiesbaden
                          Tel. +49(0)611/75-3652
                          Fax +49(0)611/72-4000
                          mailto:michael.schaefer@destatis.de
              
              Beschreibung:
              
              Updates (U) und Korrekturen (K):
              
              *** Version 1.0.0 ***
              
              001 K YYYYMMDD/K/1.0.0/D//VORNAME_NAME_AUTOR
              
		</xs:documentation>
	</xs:annotation>

  <!-- Allgemeine Typen -->
  
  <xs:complexType name = "DatumTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string">
        <xs:attribute name = "format" fixed = "jjjjmmtt" type = "xs:normalizedString"/>
        <xs:attribute name = "klasse" fixed = "datum" type = "xs:normalizedString"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "TextKlasseTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string">
        <xs:attribute name = "klasse" default = "default" type = "xs:normalizedString"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "TextKlasseNoDefaultTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string">
        <xs:attribute name = "klasse" type = "xs:normalizedString"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "UhrzeitTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string">
        <xs:attribute name = "format" fixed = "hhmmss" type = "xs:normalizedString"/>
        <xs:attribute name = "klasse" fixed = "datum" type = "xs:normalizedString"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "VersionTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string"/>
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- Typen Optionen -->
  
  <xs:complexType name="OptionenTyp">
    <xs:sequence>
      <xs:element name = "test" type="TestTyp" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="TestTyp">
    <xs:attribute name = "kennung" type = "xs:normalizedString"/>
  </xs:complexType>

  <!-- Typen Protokollierung -->
  
  <xs:complexType name = "AnwendungTyp">
    <xs:sequence>
      <xs:element name = "anwendungsname" type = "xs:string"/>
      <xs:element name = "version" type = "VersionTyp" minOccurs = "0"/>
      <xs:element name = "server" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "hersteller" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "zertifikat" type = "TextKlasseNoDefaultTyp" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "DateneingangTyp">
    <xs:sequence>
      <xs:element name = "datum" type = "DatumTyp"/>
      <xs:element name = "uhrzeit" type = "UhrzeitTyp"/>
      <xs:element name = "eingangsstempel" type = "TextKlasseNoDefaultTyp"/>
      <xs:element ref = "anwendung"/>
      <xs:choice minOccurs = "0">
        <xs:element name = "papierformular" type = "FormularTyp"/>
        <xs:element name = "onlineformular" type = "FormularTyp"/>
        <xs:element name = "datei" type = "DateiTyp"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "DokumentinstanzTyp">
    <xs:sequence>
      <xs:element name = "dateiname" type = "DateinameTyp" minOccurs = "0"/>
      <xs:element name = "datum" type = "DatumTyp"/>
      <xs:element name = "uhrzeit" type = "UhrzeitTyp"/>
      <xs:element ref = "anwendung" minOccurs = "0"/>
      <xs:element name = "dokumentID" type = "DokumentIDTyp" minOccurs = "0"/>
      <xs:element name = "ressourceID" type = "RessourceIDTyp" minOccurs = "0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "DateiTyp">
    <xs:sequence>
      <xs:element name = "dateiname" type = "DateinameTyp" minOccurs = "0"/>
      <xs:element name = "datum" type = "DatumTyp" minOccurs = "0"/>
      <xs:element name = "uhrzeit" type = "UhrzeitTyp" minOccurs = "0"/>
      <xs:element ref = "anwendung" minOccurs = "0"/>
      <xs:element name = "dokumentID" type = "DokumentIDTyp" minOccurs = "0"/>
      <xs:element name = "datenformat" type = "DatenformatTyp" minOccurs = "0"/>
      <xs:choice minOccurs = "0">
        <xs:element name = "datentraeger" type = "DatentraegerTyp"/>
        <xs:element name = "upload"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "DateinameTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string"/>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "DatenformatTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string">
        <xs:attribute name = "typ">
          <xs:simpleType>
            <xs:restriction base = "xs:token">
              <xs:enumeration value = "undefiniert"/>
              <xs:enumeration value = "datml"/>
              <xs:enumeration value = "xml"/>
              <xs:enumeration value = "datensatz"/>
              <xs:enumeration value = "csv"/>
              <xs:enumeration value = "edifact"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "DatentraegerTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string">
        <xs:attribute name = "typ">
          <xs:simpleType>
            <xs:restriction base = "xs:token">
              <xs:enumeration value = "undefiniert"/>
              <xs:enumeration value = "diskette"/>
              <xs:enumeration value = "cdrom"/>
              <xs:enumeration value = "dvd"/>
              <xs:enumeration value = "kassette"/>
              <xs:enumeration value = "magnetband"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
    
  <xs:complexType name = "FormularTyp">
    <xs:sequence>
      <xs:element name = "formularID" type = "TextKlasseNoDefaultTyp" minOccurs = "0"/>
      <xs:element name = "formularname" type = "TextKlasseNoDefaultTyp" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "DokumentIDTyp">
    <xs:simpleContent>
      <xs:extension base = "TextKlasseNoDefaultTyp"/>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "RessourceIDTyp">
    <xs:simpleContent>
      <xs:extension base = "TextKlasseNoDefaultTyp"/>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "ProtokollTyp">
    <xs:sequence>
      <xs:element name = "dokumentinstanz" type = "DokumentinstanzTyp" minOccurs = "0" maxOccurs = "unbounded"/>
    </xs:sequence>
  </xs:complexType>
  
  <!-- Typen der Identifikation (Beteiligte) -->
  
  <xs:complexType name = "IdentifikationKontaktTyp">
    <xs:choice>
      <xs:element name = "zeile" type = "xs:string" maxOccurs = "unbounded"/>
      <xs:sequence>
        <xs:element name = "identitaet" type = "IdentitaetTyp"/>
        <xs:element name = "adresse" type = "AdresseTyp" minOccurs = "0"/>
        <xs:element name = "telefon" type = "xs:string" minOccurs = "0"/>
        <xs:element name = "email" type = "xs:string" minOccurs = "0"/>
        <xs:element name = "fax" type = "xs:string" minOccurs = "0"/>
        <xs:element name = "url" type = "xs:string" minOccurs = "0"/>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>
  
  <xs:complexType name = "IdentitaetTyp">
    <xs:sequence>
      <xs:element name = "organisation" type = "OrganisationTyp" minOccurs = "0"/>
      <xs:element name = "person" type = "PersonTyp" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "OrganisationTyp">
    <xs:sequence>
      <xs:element name = "name" type = "xs:string"/>
      <xs:element name = "niederlassung" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "zusatz" type = "xs:string" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "PersonTyp">
    <xs:sequence>
      <xs:element name = "anrede" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "titel" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "vorname" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "nachname" type = "xs:string"/>
      <xs:element name = "zusatz" type = "xs:string" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "AdresseTyp">
    <xs:sequence>
      <xs:element name = "strasse" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "hausnummer" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "postfach" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "postfachleitzahl" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "postfachort" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "postleitzahl" type = "xs:string"/>
      <xs:element name = "ort" type = "xs:string"/>
      <xs:element name = "kreis" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "bundesland" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "land" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "zusatz" type = "xs:string" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <!-- Typen Erhebung und Berichtszeitrum -->
  
  <xs:complexType name = "ErhebungTyp">
    <xs:sequence>
      <xs:element name = "kennung" type = "TextKlasseTyp"/>
      <xs:element name = "text" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "berechtigung" type = "TextKlasseTyp" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "BerichtszeitraumTyp">
    <xs:choice>
      <xs:element name = "string" type = "StringTyp"/>
      <xs:group ref = "BerichtszeitraumGruppe"/>
      <xs:sequence>
        <xs:element name = "beginn" type = "BeginnEndeTyp"/>
        <xs:element name = "ende" type = "BeginnEndeTyp"/>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>
  
  <xs:simpleType name="JahrTyp">
    <xs:restriction base="xs:positiveInteger">
      <xs:minInclusive value="0001"/>
      <xs:maxInclusive value="9999"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name = "HalbjahrTyp">
    <xs:restriction base = "xs:positiveInteger">
      <xs:minInclusive value = "1"/>
      <xs:maxInclusive value = "2"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name = "SemesterTyp">
    <xs:restriction base = "xs:positiveInteger">
      <xs:maxInclusive value = "2"/>
      <xs:minInclusive value = "1"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name = "QuartalTyp">
    <xs:restriction base = "xs:positiveInteger">
      <xs:maxInclusive value = "4"/>
      <xs:minInclusive value = "1"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name = "MonatTyp">
    <xs:restriction base = "xs:positiveInteger">
      <xs:maxInclusive value = "12"/>
      <xs:minInclusive value = "1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name = "WocheTyp">
    <xs:restriction base = "xs:positiveInteger">
      <xs:maxInclusive value = "53"/>
      <xs:minInclusive value = "1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name = "TagTyp">
    <xs:restriction base = "xs:positiveInteger">
      <xs:maxInclusive value = "31"/>
      <xs:minInclusive value = "1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name = "StringTyp">
    <xs:simpleContent>
      <xs:extension base = "xs:string">
        <xs:attribute name = "format" use = "required" type = "xs:normalizedString"/>
        <xs:attribute name = "klasse" use = "required">
          <xs:simpleType>
            <xs:restriction base = "xs:token">
              <xs:enumeration value = "undefiniert"/>
              <xs:enumeration value = "datum"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name = "BeginnEndeTyp">
    <xs:sequence>
      <xs:group ref = "BerichtszeitraumGruppe"/>
    </xs:sequence>
  </xs:complexType>
  
  <!-- Type Material -->
  
  <xs:complexType name = "MaterialTyp">
    <xs:sequence>
      <xs:element name = "name" type = "xs:string" minOccurs = "0"/>
      <xs:element name = "kennung" type = "TextKlasseTyp" minOccurs = "0"/>
      <xs:element name = "version" type = "xs:string" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <!-- Meldungs-Id und Meldungsart -->
  
  <xs:complexType name = "MeldungsIDTyp">
    <xs:simpleContent>
      <xs:extension base = "TextKlasseNoDefaultTyp"/>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "MeldungsartTyp">
    <xs:choice>
      <xs:element name = "original"/>
      <xs:element name = "berichtigung" type = "FunktionselementTyp"/>
      <xs:element name = "nachmeldung" type = "FunktionselementTyp"/>
      <xs:element name = "austausch" type = "FunktionselementTyp"/>
      <xs:element name = "loeschung" type = "FunktionselementTyp"/>
      <xs:element name = "nil"/>
    </xs:choice>
  </xs:complexType>
  
  <xs:complexType name = "FunktionselementTyp">
    <xs:sequence>
      <xs:element name = "meldungsID" type = "MeldungsIDTyp"/>
    </xs:sequence>
  </xs:complexType>
  
  <!-- Typen Fehler, Nachricht, Meldung -->
  
  <xs:simpleType name="SchluesselWertTyp">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  
  <xs:complexType name = "SchluesselTyp">
    <xs:simpleContent>
      <xs:extension base="SchluesselWertTyp">
	    <xs:attribute name="klasse" type="xs:string"/>
	  </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:simpleType name="GewichtWertTyp">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  
  <xs:complexType name = "GewichtTyp">
    <xs:simpleContent>
      <xs:extension base="GewichtWertTyp">
	    <xs:attribute name="klasse" type="xs:string"/>
	  </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:simpleType name="FormatPositionTyp">
    <xs:restriction base = "xs:token">
      <xs:enumeration value = "xpath"/>
      <xs:enumeration value = "byte"/>
      <xs:enumeration value = "char"/>
      <xs:enumeration value = "satz"/>
      <xs:enumeration value = "name"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name = "PositionTyp">
    <xs:simpleContent>
      <xs:extension base="xs:string">
	    <xs:attribute name="format" type="FormatPositionTyp"/>
 	  </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "MerkmalTyp">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
 	  </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "FehlerTyp">
    <xs:sequence>
      <xs:element name = "schluessel" type = "SchluesselTyp" minOccurs="0"/>
      <xs:element name = "gewicht" type = "GewichtTyp" minOccurs="0"/>
      <xs:element name = "text" type = "TextKlasseNoDefaultTyp" minOccurs="0"/>
      <xs:element name = "position" type = "PositionTyp" minOccurs="0"/>
      <xs:element name = "merkmal" type = "MerkmalTyp" minOccurs="0"/>
    </xs:sequence>
	<xs:attribute name="klasse" type="xs:string" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name = "NachrichtenIDTyp">
    <xs:simpleContent>
      <xs:extension base = "TextKlasseNoDefaultTyp"/>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name = "AbsenderTyp">
    <xs:sequence>
      <xs:element name = "kennung" type = "TextKlasseTyp" minOccurs = "1"/>
      <xs:element name = "berechtigung" type = "TextKlasseTyp" minOccurs = "0"/>
      <xs:element name = "identifikation" type = "IdentifikationKontaktTyp" minOccurs = "0"/>
      <xs:element name = "externeIdentifikation" type = "TextKlasseTyp" minOccurs = "0"/>
      <xs:element name = "kontakt" type = "IdentifikationKontaktTyp" minOccurs = "0"/>
      <xs:element name = "memo" type = "xs:string" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "EmpfaengerTyp">
    <xs:sequence>
      <xs:element name = "kennung" type = "TextKlasseTyp" minOccurs = "0"/>
      <xs:element name = "identifikation" type = "IdentifikationKontaktTyp" minOccurs = "0"/>
      <xs:element name = "externeIdentifikation" type = "TextKlasseTyp" minOccurs = "0"/>
      <xs:element name = "kontakt" type = "IdentifikationKontaktTyp" minOccurs = "0"/>
      <xs:element name = "memo" type = "xs:string" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name = "MeldungTyp">
    <xs:sequence>
      <xs:element name = "meldungsID" type = "MeldungsIDTyp" minOccurs = "0"/>
      <xs:element name = "meldungsart" type = "MeldungsartTyp" minOccurs = "0"/>
      <xs:group   ref = "KontextGruppe"  minOccurs = "1"/>
      <xs:element ref = "fehler" minOccurs = "0" maxOccurs="unbounded"/>
    </xs:sequence>
	<xs:attribute name="pruefstatus" type="PruefstatusTyp" use="required"/>
  </xs:complexType>
    
  <xs:complexType name = "NachrichtTyp">
    <xs:sequence>
      <xs:element name = "nachrichtenID" type = "NachrichtenIDTyp" minOccurs = "0"/>
      <xs:element ref = "fehler" minOccurs = "0" maxOccurs="unbounded"/>
      <xs:element ref = "meldung" minOccurs = "0" maxOccurs="unbounded"/>
    </xs:sequence>
	<xs:attribute name="pruefstatus" type="PruefstatusTyp" use="required"/>
  </xs:complexType>
    
  <xs:simpleType name="PruefstatusTyp">
    <xs:restriction base = "xs:token">
      <xs:enumeration value = "ungeprueft"/>
      <xs:enumeration value = "fehlerfrei"/>
      <xs:enumeration value = "fehlerhaft"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DokumentstatusTyp">
    <xs:restriction base = "xs:token">
      <xs:enumeration value = "akzeptiert"/>
      <xs:enumeration value = "abgewiesen"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PruefstufeWertTyp">
    <xs:restriction base="xs:integer">
	  <xs:enumeration value = "1"/>
	  <xs:enumeration value = "2"/>
	  <xs:enumeration value = "3"/>
	  <xs:enumeration value = "4"/>
	  <xs:enumeration value = "5"/>
	</xs:restriction>
  </xs:simpleType>
  
  <xs:complexType name = "PruefstufeTyp">
    <xs:simpleContent>
      <xs:extension base="PruefstufeWertTyp">
	    <xs:attribute name="klasse" type="xs:string"/>
	  </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="DokumenttypTyp">
	<xs:sequence>
	  <xs:element name="name" type="xs:string" minOccurs = "1"/>
      <xs:element name = "version" type = "VersionTyp" minOccurs = "0"/>
	</xs:sequence>
  </xs:complexType>

  <xs:complexType name="DokumentTyp">
	<xs:sequence>
      <xs:element name = "dateneingang" type = "DateneingangTyp" minOccurs = "0"/>
      <xs:element ref = "fehler" minOccurs = "0" maxOccurs="unbounded"/>
      <xs:element ref = "nachricht" minOccurs = "0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="pruefstatus" type="PruefstatusTyp" use="required"/>
	<xs:attribute name="dokumentstatus" type="DokumentstatusTyp" use="required"/>
  </xs:complexType>

  <xs:complexType name="SyntaxTyp">
	<xs:attribute name="pruefstatus" type="PruefstatusTyp" use="required"/>
  </xs:complexType>

  <xs:complexType name="SemantikTyp">
	<xs:attribute name="pruefstatus" type="PruefstatusTyp" use="required"/>
  </xs:complexType>

  <xs:complexType name="AutorisierungTyp">
	<xs:attribute name="pruefstatus" type="PruefstatusTyp" use="required"/>
  </xs:complexType>

  <xs:complexType name="DatenTyp">
	<xs:attribute name="pruefstatus" type="PruefstatusTyp" use="required"/>
  </xs:complexType>

  <xs:complexType name="PruefungTyp">
    <xs:sequence>
	  <xs:element name = "pruefstufe" type="PruefstufeTyp" minOccurs = "0"/>
      <xs:element name = "dokumenttyp" type = "DokumenttypTyp" minOccurs = "0"/>
      <xs:element name = "syntax" type = "SyntaxTyp" minOccurs = "0"/>
      <xs:element name = "semantik" type = "SemantikTyp" minOccurs = "0"/>
      <xs:element name = "autorisierung" type = "AutorisierungTyp" minOccurs = "0"/>
      <xs:element name = "daten" type = "DatenTyp" minOccurs = "0"/>
    </xs:sequence>
  </xs:complexType> 
  
  <xs:complexType name="PruefprotokollTyp">
    <xs:sequence>
      <xs:element name = "pruefung" type = "PruefungTyp" minOccurs = "1"/>
      <xs:element ref = "dokument" minOccurs = "1" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType> 
  
  
  <!-- Gruppen -->
  
  <xs:group name = "BerichtszeitraumGruppe">
    <xs:sequence>
      <xs:element name = "jahr" type="JahrTyp" minOccurs = "1"/>
      <xs:choice minOccurs = "0">
        <xs:element name = "halbjahr" type = "HalbjahrTyp"/>
        <xs:element name = "semester" type = "SemesterTyp"/>
        <xs:element name = "quartal" type = "QuartalTyp"/>
        <xs:element name = "woche" type = "WocheTyp"/>
        <xs:sequence>
          <xs:element name = "monat" type = "MonatTyp" minOccurs = "1"/>
          <xs:element name = "tag" type = "TagTyp" minOccurs = "0"/>
        </xs:sequence>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  
  <xs:group name = "KontextGruppe">
    <xs:sequence>
      <xs:element ref = "erhebung" minOccurs = "1"/>
      <xs:element ref = "berichtszeitraum" minOccurs = "1"/>
      <xs:element ref = "berichtspflichtiger" minOccurs = "0"/>
      <xs:element ref = "berichtsempfaenger" minOccurs = "0"/>
    </xs:sequence>
  </xs:group>
  
  <!-- Top Level Elementypdefinitionen
       Jedes dieser Elemente ist als Pseudo-Root validierbar
       -->
  
  <xs:element name = "anwendung" type = "AnwendungTyp"/>
  <xs:element name = "optionen" type="OptionenTyp"/>
  <xs:element name = "protokoll" type = "ProtokollTyp"/>
  <xs:element name = "absender" type = "AbsenderTyp"/>
  <xs:element name = "empfaenger" type = "EmpfaengerTyp"/>
  <xs:element name = "erhebung" type = "ErhebungTyp"/>
  <xs:element name = "berichtszeitraum" type = "BerichtszeitraumTyp"/>
  <xs:element name = "berichtspflichtiger" type = "AbsenderTyp"/>
  <xs:element name = "berichtsempfaenger" type = "EmpfaengerTyp"/>
  <xs:element name = "pruefprotokoll" type="PruefprotokollTyp"/>
  <xs:element name = "dokument" type = "DokumentTyp"/>
  <xs:element name = "nachricht" type = "NachrichtTyp"/>
  <xs:element name = "meldung" type = "MeldungTyp"/>
  <xs:element name = "fehler" type="FehlerTyp"/>
    
  <!-- Root Element
       -->
	
  <xs:element name = "DatML-RES-D">
    <xs:complexType>
      <xs:sequence>
        <xs:element name = "memo" type = "xs:string" minOccurs = "0"/>
        <xs:element ref = "optionen" minOccurs = "0"/>
        <xs:element ref = "protokoll" minOccurs = "0"/>
        <xs:element ref = "absender"/>
        <xs:element ref = "empfaenger"/>
        <xs:element ref = "pruefprotokoll"/>
      </xs:sequence>
      <xs:attribute name = "version" use = "required">
        <xs:simpleType>
          <xs:restriction base = "xs:token">
            <xs:enumeration value = "1.0"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
	
</xs:schema>