<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <!-- 
  	'football' element: The root element
  -->
  <xs:element name="football">
    <xs:complexType>
      <xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="match"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="team"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="player"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="statistic"/>
      </xs:choice>
    </xs:complexType>
  </xs:element> 

  <!-- 
  	'match' element: A fixture involving two teams on a day.
  -->
  <xs:element name="match">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="description"/>
		<xs:element minOccurs="0" maxOccurs="unbounded" ref="statistic"/>
		<xs:element minOccurs="0" maxOccurs="2" ref="team"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:integer"/>
      <xs:attribute name="dateTime" use="required" type="xs:dateTime"/>
	  <xs:attribute name="status" use="required" type="xs:string"/>
	  <xs:attribute name="season" use="optional" type="xs:integer"/>
	  <xs:attribute name="statisticsAvailable" use="optional" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>

  <!-- 
  	'team' element: A sporting organisation consisting of a collection of players.
  -->   
  <xs:element name="team">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="name"/>
		<xs:element minOccurs="0" maxOccurs="unbounded" ref="statistic"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="player"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="match"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:integer"/>
      <xs:attribute name="home" use="optional" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>

  <!-- 
  	'player' element: A player.
  -->      
  <xs:element name="player">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="firstName"/>
        <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="lastName"/>
        <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="fullName"/>
        <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="position"/>
		<xs:element minOccurs="0" maxOccurs="1" ref="team"/>
		<xs:element minOccurs="0" maxOccurs="unbounded" ref="match"/>
		<xs:element minOccurs="0" maxOccurs="unbounded" ref="statistic"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>

  <!-- 
  	'statistic' element: A statistic.
  -->      
  <xs:element name="statistic">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="description"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="periodStat"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:string"/>
      <xs:attribute name="unit" use="required" type="xs:string"/>
      <xs:attribute name="value" use="optional" type="xs:decimal"/>
    </xs:complexType>
  </xs:element>  
  
  <!-- 
  	'periodStat' element: A statistic for a period.
  -->      
  <xs:element name="periodStat">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="intervalStat"/>
      </xs:sequence>
      <xs:attribute name="type" use="required" type="xs:string"/>
      <xs:attribute name="value" use="optional" type="xs:decimal"/>
    </xs:complexType>
  </xs:element>    

  <!-- 
  	'intervalStat' element: A statistic for an interval.
  -->      
  <xs:element name="intervalStat">
    <xs:complexType>
      <xs:attribute name="interval" use="required" type="xs:integer"/>
      <xs:attribute name="value" use="optional" type="xs:decimal"/>
    </xs:complexType>
  </xs:element>
  
</xs:schema>
