<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  
  <xs:element name="OptaFeed" type="OptaFeedType"/>
  
  <xs:complexType name="OptaFeedType">
    <xs:sequence>
      <xs:element name="OptaDocument" type="OptaDocumentType"/>
    </xs:sequence>
    <xs:attribute name="timestamp" use="required" type="xs:dateTime"/>
  </xs:complexType>
  
    <xs:complexType name="OptaDocumentType">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Competition" type="CompetitionType"/>
        <xs:element name="MatchData" type="MatchDataType"/>
        <xs:element name="Team" type="TeamType"/>
        <xs:element name="Venue" type="VenueType"/>
      </xs:choice>
      <xs:attribute name="type" use="required" type="xs:string"/>
      <xs:attribute name="sport_id" use="required" type="xs:integer"/>
      <xs:attribute name="sport_name" use="required"/>
      <xs:attribute name="uID" use="required" type="xs:string"/>
    </xs:complexType>
   
    <xs:complexType name="CompetitionType">
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element name="Name" type="xs:string"/>
		<xs:element name="Country" type="xs:string"/>
        <xs:element name="Stat" type="CompetitionStatType"/>
      </xs:choice>
      <xs:attribute name="uID" use="required" type="xs:string"/>
    </xs:complexType>

    <xs:complexType mixed="true" name="CompetitionStatType">
      <xs:attribute name="Type" use="required"/>
      <xs:attribute name="period" use="optional"/>
      <xs:attribute name="parent_event_type_id" type="xs:integer"/>
    </xs:complexType>
  
    <xs:complexType  name="MatchDataType">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="MatchInfo" type="MatchInfoType"/>
        <xs:element name="TeamData" type="TeamDataType"/>
      </xs:choice>
    </xs:complexType>
  
    <xs:complexType name="MatchInfoType">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="MatchOfficial" type="MatchOfficialType"/>
        <xs:element name="Date" type="xs:dateTime"/>
        <xs:element name="Result" type="ResultType"/>
        <xs:element name="Stat" type="StatType"/>
      </xs:choice>
      <xs:attribute name="matchtype" use="required" type="xs:string"/>
      <xs:attribute name="period" use="required" type="xs:string"/>
	  <xs:attribute name="ending" type="xs:string"/>
	  <xs:attribute name="time_remaining" type="xs:string"/>
    </xs:complexType>
   
    <xs:complexType name="MatchOfficialType">
      <xs:all>
        <xs:element name="OfficialData" type="OfficialDataType"/>
        <xs:element name="OfficialName" type="NameType"/>
      </xs:all>
    </xs:complexType>
   
    <xs:complexType name="OfficialDataType">
      <xs:sequence>
        <xs:element name="OfficialRef" type="OfficialRefType"/>
      </xs:sequence>
    </xs:complexType>
  
    <xs:complexType name="OfficialRefType">
      <xs:sequence>
        <xs:element name="Type" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  
    <xs:complexType name="NameType">
      <xs:all>
        <xs:element name="First" type="xs:string"/>
        <xs:element name="Last" type="xs:string"/>
      </xs:all>
    </xs:complexType>

    <xs:complexType name="ResultType">
      <xs:attribute name="type" use="required" type="xs:string"/>
      <xs:attribute name="winner" use="required" type="xs:string"/>
    </xs:complexType>
  
    <xs:complexType name="TeamDataType">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Goal" type="GoalType"/>
        <xs:element name="PlayerLineUp" type="PlayerLineUpType"/>
        <xs:element name="Stat" type="StatType"/>
      </xs:choice>
      <xs:attribute name="score" use="required" type="xs:integer"/>
      <xs:attribute name="side" use="required" type="xs:string"/>
      <xs:attribute name="team_id" use="required" type="xs:string"/>
	  <xs:attribute name="shootoutscore" use="optional" type="xs:integer"/>
    </xs:complexType>
  
    <xs:complexType  name="GoalType">
      <xs:attribute name="eventid" use="required" type="xs:integer"/>
      <xs:attribute name="eventnumber" use="required" type="xs:integer"/>
      <xs:attribute name="period" use="required" type="xs:string"/>
      <xs:attribute name="player_id" use="required" type="xs:string"/>
      <xs:attribute name="time" use="required" type="xs:integer"/>
      <xs:attribute name="type" use="required" type="xs:string"/>
      <xs:attribute name="uID" use="required" type="xs:string"/>
    </xs:complexType>
  
    <xs:complexType name="PlayerLineUpType">
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="MatchPlayer" type="MatchPlayerType"/>
      </xs:sequence>
    </xs:complexType>
  
    <xs:complexType name="MatchPlayerType">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Stat" type="StatType"/>
      </xs:sequence>
      <xs:attribute name="ingame" use="required" type="xs:string"/>
      <xs:attribute name="player_id" use="required" type="xs:string"/>
      <xs:attribute name="position" use="required" type="xs:string"/>
      <xs:attribute name="jersey_num" use="required" type="xs:string"/>
    </xs:complexType>
  
    <xs:complexType name="TeamType">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Name" type="xs:string"/>
        <xs:element name="Player" maxOccurs="unbounded" type="PlayerType"/>
      </xs:choice>
      <xs:attribute name="uID" use="required" type="xs:string"/>
    </xs:complexType>
  
    <xs:complexType name="PlayerType">
      <xs:sequence>
        <xs:element name="PersonName" type="PersonNameType"/>
      </xs:sequence>
      <xs:attribute name="position" use="required" type="xs:string"/>
      <xs:attribute name="uID" use="required" type="xs:string"/>
    </xs:complexType>
   
    <xs:complexType name="PersonNameType">
      <xs:all>
        <xs:element name="First" type="xs:string"/>
        <xs:element name="Last" type="xs:string"/>
      </xs:all>
    </xs:complexType>
  
    <xs:complexType name="VenueType">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Name" type="xs:string"/>
        <xs:element name="Address" type="xs:string"/>
        <xs:element name="City" type="xs:string"/>
        <xs:element name="Postcode" type="xs:string"/>
        <xs:element name="Capacity" type="xs:string"/>
      </xs:choice>
      <xs:attribute name="uID" use="required" type="xs:string"/>
    </xs:complexType>

    <xs:complexType mixed="true" name="StatType">
      <xs:attribute name="type" use="required"/>
      <xs:attribute name="period" use="optional"/>
      <xs:attribute name="parent_event_type_id" type="xs:integer"/>
    </xs:complexType>
  

</xs:schema>
