<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" targetNamespace="https://www.etc-consult.de/namespace/timetable" xmlns:tns="https://www.etc-consult.de/namespace/timetable" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="DailyTimetable" type="tns:dailyTimetable"/>

  <xs:complexType name="dailyTimetable">
    <xs:sequence>
      <xs:element name="trains" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="train" type="tns:train" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="tagesfahrplanWithBetriebstags" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="tagesfahrplanWithBetriebstag" type="tns:tagesfahrplanWithBetriebstag" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="type" type="xs:string" use="required"/>
    <xs:attribute name="date" type="xs:date" use="required"/>
    <xs:attribute name="railwayCompany" type="xs:string" use="required"/>
    <xs:attribute name="network" type="xs:string" use="required"/>
  </xs:complexType>

  <xs:complexType name="tagesfahrplanWithBetriebstag">
    <xs:attribute name="borkeridEvu" type="xs:int"/>
    <xs:attribute name="meldetag" type="xs:date"/>
    <xs:attribute name="zugnummer" type="xs:int"/>
    <xs:attribute name="ibnr" type="xs:string"/>
    <xs:attribute name="stopOrder" type="xs:double"/>
    <xs:attribute name="stopName" type="xs:string"/>
    <xs:attribute name="planzeitAn" type="xs:time"/>
    <xs:attribute name="planzeitAb" type="xs:time"/>
    <xs:attribute name="istzeitAn" type="xs:time"/>
    <xs:attribute name="istzeitAb" type="xs:time"/>
    <xs:attribute name="deltaAn" type="xs:int"/>
    <xs:attribute name="ursachedeltaAn" type="xs:int"/>
    <xs:attribute name="deltaAb" type="xs:int"/>
    <xs:attribute name="ursachedeltaAb" type="xs:int"/>
    <xs:attribute name="delta" type="xs:int"/>
    <xs:attribute name="ursachedelta" type="xs:int"/>
    <xs:attribute name="plangleis" type="xs:string"/>
    <xs:attribute name="istgleis" type="xs:string"/>
    <xs:attribute name="ursachegleis" type="xs:int"/>
    <xs:attribute name="meldung" type="xs:string"/>
    <xs:attribute name="lastchange" type="xs:dateTime"/>
    <xs:attribute name="prod" type="xs:string"/>
    <xs:attribute name="abschnitt" type="xs:string"/>
    <xs:attribute name="minfahrzeit" type="xs:int"/>
    <xs:attribute name="minstopzeit" type="xs:int"/>
    <xs:attribute name="plan_art" type="xs:string"/>
    <xs:attribute name="ausfpl" type="xs:string"/>
    <xs:attribute name="kilometrierung" type="xs:long"/>
    <xs:attribute name="deltaAnPrognose" type="xs:long"/>
    <xs:attribute name="deltaAbPrognose" type="xs:long"/>
    <xs:attribute name="editedByVu" type="xs:boolean"/>
    <xs:attribute name="betriebstag" type="xs:date"/>
    <xs:attribute name="zugnummerOriginal" type="xs:int"/>
    <xs:attribute name="planzeitAnEvu" type="xs:time"/>
    <xs:attribute name="planzeitAbEvu" type="xs:time"/>
    <xs:attribute name="linieRailml" type="xs:string"/>
    <xs:attribute name="deltaAnFzg" type="xs:int"/>
    <xs:attribute name="deltaAbFzg" type="xs:int"/>
    <xs:attribute name="istzeitAnFzg" type="xs:time"/>
    <xs:attribute name="istzeitAbFzg" type="xs:time"/>
    <xs:attribute name="istzeitAnGps" type="xs:time"/>
    <xs:attribute name="istzeitAbGps" type="xs:time"/>
    <xs:attribute name="deltaAnEvu" type="xs:int"/>
    <xs:attribute name="deltaAbEvu" type="xs:int"/>
    <xs:attribute name="deltaAnGps" type="xs:int"/>
    <xs:attribute name="deltaAbGps" type="xs:int"/>
    <xs:attribute name="prodTr" type="xs:string"/>
    <xs:attribute name="linieTr" type="xs:string"/>
    <xs:attribute name="anzBusSev" type="xs:int"/>
    <xs:attribute name="zusatzinfo" type="xs:string"/>
    <xs:attribute name="insertedTimestamp" type="xs:dateTime"/>
    <xs:attribute name="fahrzeit" type="xs:string"/>
    <xs:attribute name="id_fahrzeug" type="xs:string"/>
    <xs:attribute name="fahrzeugeIdListe" type="xs:string"/>
    <xs:attribute name="idAnwendungsfall" type="xs:string"/>
    <xs:attribute name="plan_halt" type="xs:boolean"/>
    <xs:attribute name="idErsatzbefoerderung" type="xs:string"/>
    <xs:attribute name="idRichtung" type="xs:string"/>
    <xs:attribute name="idUmlauf" type="xs:string"/>
    <xs:attribute name="einsteigeverbot" type="xs:boolean"/>
    <xs:attribute name="aussteigeverbot" type="xs:boolean"/>
    <xs:attribute name="lastchangeVdv" type="xs:dateTime"/>
    <xs:attribute name="deltaAnPrognoseSek" type="xs:long"/>
    <xs:attribute name="deltaAbPrognoseSek" type="xs:long"/>
    <xs:attribute name="istzeitAnPlt" type="xs:time"/>
    <xs:attribute name="istzeitAbPlt" type="xs:time"/>
    <xs:attribute name="deltaAnPlt" type="xs:int"/>
    <xs:attribute name="deltaAbPlt" type="xs:int"/>
    <xs:attribute name="ursachedeltaMob" type="xs:int"/>
    <xs:attribute name="metainfo" type="xs:string"/>
    <xs:attribute name="evuBetriebstag" type="xs:date"/>
    <xs:attribute name="planzeitAnTimestamp" type="xs:dateTime"/>
    <xs:attribute name="planzeitAbTimestamp" type="xs:dateTime"/>
    <xs:attribute name="istzeitAnTimestamp" type="xs:dateTime"/>
    <xs:attribute name="istzeitAbTimestamp" type="xs:dateTime"/>
    <xs:attribute name="abStatus" type="xs:string"/>
    <xs:attribute name="anStatus" type="xs:string"/>
    <xs:attribute name="stopOnRequest" type="xs:boolean"/>
    <xs:attribute name="tuerAufTimestamp" type="xs:dateTime"/>
    <xs:attribute name="tuerZuTimestamp" type="xs:dateTime"/>
    <xs:attribute name="idT" type="xs:long"/>
    <xs:attribute name="status" type="xs:int"/>
    <xs:attribute name="planzeitAnInfra" type="xs:dateTime"/>
    <xs:attribute name="planzeitAbInfra" type="xs:dateTime"/>
    <xs:attribute name="railmlIdFahrplanSource" type="xs:int"/>
    <xs:attribute name="distanceNextStop" type="xs:long"/>
    <xs:attribute name="nextStop" type="xs:string"/>
    <xs:attribute name="throughServiceTrainnumber" type="xs:string"/>
  </xs:complexType>




  <xs:complexType name="train">
    <xs:sequence>
	  <xs:element name="throughService" type="tns:throughService" minOccurs="0" maxOccurs="1"/>
	  <xs:element name="constructionTrain" type="tns:constructionTrain" minOccurs="0" maxOccurs="1"/>
	  <xs:element name="stops" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="stop" type="tns:stop" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="number" type="xs:int" use="required"/>
    <xs:attribute name="trainNumberSub" type="xs:int"/>
    <xs:attribute name="trainNumberCommercial" type="xs:int"/>
    <xs:attribute name="trainNumberOperational" type="xs:int" use="required"/>
    <xs:attribute name="originalTrainNumber" type="xs:string"/>
    <xs:attribute name="dayOfOperation" type="xs:string" use="required"/>
    <xs:attribute name="networkName" type="xs:string"/>
    <xs:attribute name="direction" type="xs:int"/>
  </xs:complexType>

 <xs:complexType name="throughService">
    <xs:sequence>
     <xs:element name="administrationFrom" type="xs:string"  minOccurs="1" maxOccurs="1"/>
	 <xs:element name="administrationTo" type="xs:string"  minOccurs="1" maxOccurs="1"/>
	 <xs:element name="trainnumber" type="xs:string" minOccurs="1" maxOccurs="1"/>
	 <xs:element name="ibnr" type="xs:string" minOccurs="1" maxOccurs="1"/>   
  </xs:sequence>
  </xs:complexType>
  
   <xs:complexType name="constructionTrain">
    <xs:sequence>
     <xs:element name="originalTrainNumber" type="xs:string"  minOccurs="0" maxOccurs="1"/>
	 <xs:element name="constructionTrainNumber" type="xs:string"  minOccurs="0" maxOccurs="1"/>
	 <xs:element name="validFrom" type="xs:date" minOccurs="0" maxOccurs="1"/>
	 <xs:element name="validTo" type="xs:date" minOccurs="0" maxOccurs="1"/>   
	 <xs:element name="sectionFromName" type="xs:string" minOccurs="0" maxOccurs="1"/>
	 <xs:element name="sectionToName" type="xs:string" minOccurs="0" maxOccurs="1"/>
	 <xs:element name="operationDayDiff" type="xs:int" minOccurs="0" maxOccurs="1"/>
	 <xs:element name="reason" type="xs:string" minOccurs="0" maxOccurs="1"/>
  </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stop">
    <xs:sequence>
      <xs:element name="planHalt" type="xs:boolean" minOccurs="0"/>
      <xs:element name="idAnwendungsfall" type="xs:string" minOccurs="0"/>
      <xs:element name="line" type="xs:string" minOccurs="0"/>
      <xs:element name="category" type="xs:string" minOccurs="0"/>
      <xs:element name="distanceNextStop" type="xs:long" minOccurs="0"/>
      <xs:element name="stopOnRequest" type="xs:boolean"/>
      <xs:element name="cancellationComment" type="xs:string" minOccurs="0"/>
      <xs:element name="plangleis" type="xs:string" minOccurs="0"/>
      <xs:element name="istgleis" type="xs:string" minOccurs="0"/>
      <xs:element name="ursachegleis" type="xs:int" minOccurs="0"/>
      <xs:element name="arrival" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="departure" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="arrivalDelta" type="xs:duration" minOccurs="0"/>
      <xs:element name="departureDelta" type="xs:duration" minOccurs="0"/>
      <xs:element name="deltaOrigin" type="xs:string" minOccurs="0"/>
      <xs:element name="arrivalDeltaCalculatedMinute" type="xs:duration" minOccurs="0"/>
      <xs:element name="departureDeltaCalculatedMinute" type="xs:duration" minOccurs="0"/>
      <xs:element name="arrivalDeltaCalculatedSecond" type="xs:duration" minOccurs="0"/>
      <xs:element name="departureDeltaCalculatedSecond" type="xs:duration" minOccurs="0"/>

        <xs:element name="coordinates" minOccurs="0"  maxOccurs="1">
      <xs:complexType>
        <xs:sequence>
           <xs:element name="location" type="tns:location" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
        </xs:complexType>
      </xs:element>   
      <xs:element name="vehicles" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="vehicle" type="tns:vehicle" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>   
    </xs:sequence>
    <xs:attribute name="order" type="xs:double" use="required"/>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="ibnr" type="xs:string"/>
    <xs:attribute name="cancelled" type="xs:boolean"/>
    <xs:attribute name="cancellationCode" type="xs:int"/>
  </xs:complexType>
  
  <xs:complexType name="location">
    <xs:sequence>
      <xs:element name="latitude" type="xs:decimal" minOccurs="1" maxOccurs="1"/>
      <xs:element name="longitude" type="xs:decimal" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
  </xs:complexType>
  
  <xs:complexType name="vehicle">
    <xs:sequence>
      <xs:element name="number" type="xs:string" minOccurs="0"/>
      <xs:element name="idFahrzeug" type="xs:string" minOccurs="0"/>
      <xs:element name="abbreviation" type="xs:string" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="position" type="xs:int" use="required"/>
    <xs:attribute name="trainNumber" type="xs:int" use="required"/>
    <xs:attribute name="circulation" type="xs:string"/>
    <xs:attribute name="circulationStart" type="xs:string"/>
    <xs:attribute name="circulationEnd" type="xs:string"/>
  </xs:complexType>
  
 
</xs:schema>

