<?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:element>

  <xs:complexType name="OptaFeedType">
    <xs:sequence>
      <xs:element name="OptaDocument" type="OptaDocumentType"/>
    </xs:sequence>
  </xs:complexType>
  
    <xs:complexType name="OptaDocumentType">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="MatchData" type="MatchDataType"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Team" type="TeamType"/>
      </xs:sequence>
      <xs:attribute name="Type" use="required"/>
      <xs:attribute name="competition_code" type="xs:integer"/>
      <xs:attribute name="competition_id" use="required" type="xs:integer"/>
      <xs:attribute name="competition_name" use="required" type="xs:string"/>
      <xs:attribute name="season_id" use="required" type="xs:integer"/>
      <xs:attribute name="season_name" use="required" type="xs:string"/>
      <xs:attribute name="sport_id" use="required" type="xs:integer"/>
      <xs:attribute name="sport_name" use="required"  type="xs:string"/>
      <xs:attribute name="timestamp" use="required" type="xs:dateTime"/>
    </xs:complexType>
  
    <xs:complexType name="MatchDataType">
      <xs:sequence>
        <xs:element name="MatchInfo" type="MatchInfoType"/>
        <xs:element maxOccurs="unbounded" name="Stat" type="StatType"/>
        <xs:element maxOccurs="2" name="TeamData" type="TeamDataType"/>
      </xs:sequence>
      <xs:attribute name="uID" use="required" type="xs:string"/>
	  <xs:attribute name="match_uuid" use="optional" type="xs:string" />
    </xs:complexType>
 
    <xs:complexType name="TeamType">
      <xs:sequence>
        <xs:element name="Name" type="xs:string"/>
      </xs:sequence>
      <xs:attribute name="uID" use="required" type="xs:string"/>
	  <xs:attribute name="team_uuid" use="optional" type="xs:string"/>
    </xs:complexType> 
  
    <xs:complexType name="MatchInfoType">
      <xs:sequence>
        <xs:element name="Date" type="xs:dateTime"/>
        <xs:element name="TZ" type="xs:string"/>
      </xs:sequence>
      <xs:attribute name="ending" type="xs:string"/>
      <xs:attribute name="roundtype" type="xs:string"/>
      <xs:attribute name="period" use="required" type="xs:string"/>
      <xs:attribute name="venue_id" use="required" type="xs:string"/>
	  <xs:attribute name="fixture_name" type="xs:string" />
	  <xs:attribute name="venue_uuid" use="optional" type="xs:string" />
	  <xs:attribute name="coverage_level" use="optional" type="CoverageLevelType" />
    </xs:complexType>
  
    <xs:complexType mixed="true" name="StatType">
      <xs:attribute name="type" use="required" type="xs:string"/>
    </xs:complexType>
 
    <xs:complexType name="TeamDataType">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Goal" type="GoalType"/>
      </xs:sequence>
	  <xs:attribute name="rotation" use="optional" type="xs:integer"/>
      <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="seed_position" type="xs:string" />
    </xs:complexType>
  
    <xs:complexType name="GoalType">
      <xs:attribute name="Period" use="required" type="xs:integer"/>
      <xs:attribute name="PlayerRef" use="required" type="xs:string"/>
      <xs:attribute name="Type" use="required" type="xs:string"/>
    </xs:complexType> 

	<xs:simpleType name="CoverageLevelType">
	    <xs:restriction base="xs:normalizedString">
	        <xs:enumeration value="PBP"/>
	        <xs:enumeration value="Scoreboard"/>
	        <xs:enumeration value="Ext Scoreboard"/>
	    </xs:restriction>
	</xs:simpleType>
  
</xs:schema>
