<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:tns="http://feed.elasticstats.com/schema/nfl/summary-v1.0.xsd"
  targetNamespace="http://feed.elasticstats.com/schema/nfl/summary-v1.0.xsd" 
  elementFormDefault="qualified">
  
  <xs:element name="game">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="team" type="tns:teamSummaryType" maxOccurs="2" minOccurs="2"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:string"/>
      <xs:attribute name="scheduled" use="required" type="xs:dateTime"/>
      <xs:attribute name="away" use="required" type="xs:string"/>
      <xs:attribute name="home" use="required" type="xs:string"/>
      <xs:attribute name="status" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="scheduled" />
            <xs:enumeration value="created" />
            <xs:enumeration value="inprogress" />
            <xs:enumeration value="complete" />
            <xs:enumeration value="closed" />
            <xs:enumeration value="delayed" />
            <xs:enumeration value="reopened" />
            <xs:enumeration value="flex-schedule" />
            <xs:enumeration value="time-tbd" />
            
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>      
    </xs:complexType>
  </xs:element>
  
  <xs:complexType name="teamSummaryType">
    <xs:sequence>
      <xs:element name="first_downs" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="tns:downConversionType">
              <xs:attribute name="total" use="required" type="xs:integer"/>
            </xs:extension>
          </xs:complexContent>  
        </xs:complexType>
      </xs:element>
      <xs:element name="third_down_efficiency" type="tns:downEfficiencyType" minOccurs="0" maxOccurs="1"/>
      <xs:element name="fourth_down_efficiency" type="tns:downEfficiencyType" minOccurs="0" maxOccurs="1"/>
      <xs:element name="total_yards" type="tns:netYardageType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="rushing_yards" type="tns:netYardageType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="passing" type="tns:passingType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="return_yards" type="tns:returnYardageType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="kickoffs" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="endzone" use="required" type="xs:integer"/>
          <xs:attribute name="number" use="required" type="xs:integer"/>
          <xs:attribute name="tb" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="punts" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="avg" use="required" type="xs:decimal"/>
          <xs:attribute name="blk" use="required" type="xs:integer"/>
          <xs:attribute name="net_avg" use="required" type="xs:decimal"/>
          <xs:attribute name="number" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="penalties" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="number" use="required" type="xs:integer"/>
          <xs:attribute name="yds" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="fumbles" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="lost" use="required" type="xs:integer"/>
          <xs:attribute name="number" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="touchdowns" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="passing" type="xs:integer" minOccurs="1" maxOccurs="1"/>
            <xs:element name="rushing" type="xs:integer" minOccurs="1" maxOccurs="1"/>
            <xs:element name="interception" type="xs:integer" minOccurs="0" maxOccurs="1"/>
            <xs:element name="fumble_return" type="xs:integer" minOccurs="0" maxOccurs="1"/>
            <xs:element name="punt_return" type="xs:integer" minOccurs="0" maxOccurs="1"/>
            <xs:element name="kickoff_return" type="xs:integer" minOccurs="0" maxOccurs="1"/>
            <xs:element name="field_goal_return" type="xs:integer" minOccurs="0" maxOccurs="1"/>
            <xs:element name="other" type="xs:integer" minOccurs="0" maxOccurs="1" />
          </xs:sequence>
          <xs:attribute name="number" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="extra_points" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="kicking" type="tns:kickConversionType" minOccurs="1" maxOccurs="1" />
            <xs:element name="two_points" type="tns:kickConversionType" minOccurs="0" maxOccurs="1"/>
          </xs:sequence>
          <xs:attribute name="att" use="required" type="xs:integer"/>
          <xs:attribute name="made" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="field_goals" type="tns:kickConversionType" minOccurs="1" maxOccurs="1" />
      <xs:element name="redzone_efficiency" type="tns:zoneEfficiencyType" minOccurs="1" maxOccurs="1" />
      <xs:element name="goal_efficiency" type="tns:zoneEfficiencyType" minOccurs="1" maxOccurs="1" />
      <xs:element name="safeties" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="number" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="turnovers" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="number" use="required" type="xs:integer"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="final_score" type="xs:integer" minOccurs="1" maxOccurs="1"/>
      <xs:element name="possession_time" type="xs:string" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="id" use="required" type="xs:string"/>
    <xs:attribute name="market" use="optional" type="xs:string"/>
    <xs:attribute name="name" use="required" type="xs:string"/>
  </xs:complexType>
  
  <xs:complexType name="downConversionType">
    <xs:sequence>
      <xs:element name="passing" type="xs:integer" minOccurs="0" maxOccurs="1"/>
      <xs:element name="rushing" type="xs:integer" minOccurs="0" maxOccurs="1"/>
      <xs:element name="penalty" type="xs:integer" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="downEfficiencyType">
    <xs:complexContent>
      <xs:extension base="tns:downConversionType">
        <xs:attribute name="att" use="required" type="xs:integer"/>
        <xs:attribute name="converted" use="required" type="xs:integer"/>
        <xs:attribute name="pct" use="required" type="xs:decimal"/>
      </xs:extension>
    </xs:complexContent>  
  </xs:complexType>
  
  <xs:complexType name="netYardageType">
    <xs:attribute name="avg" use="required" type="xs:decimal"/>
    <xs:attribute name="plays" use="required" type="xs:integer"/>
    <xs:attribute name="yds" use="required" type="xs:decimal"/>
  </xs:complexType>

  <xs:complexType name="passingType">
    <xs:sequence>
      
      <xs:element name="yards" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="gross_yds" use="required" type="xs:integer"/>
          <xs:attribute name="net_yds" use="required" type="xs:decimal"/>
          <xs:attribute name="sack_yds" use="required" type="xs:decimal"/>
        </xs:complexType>
      </xs:element>
      
    </xs:sequence>
    <xs:attribute name="att" type="xs:integer"/>
    <xs:attribute name="avg" type="xs:decimal"/>
    <xs:attribute name="cmp" type="xs:integer"/>
    <xs:attribute name="int" type="xs:integer"/>
    <xs:attribute name="sack" type="xs:integer"/>
  </xs:complexType>
  
  <xs:complexType name="returnAttemptType">
    <xs:attribute name="number" type="xs:integer"/>
    <xs:attribute name="yds" type="xs:integer"/>
  </xs:complexType>
  
  <xs:complexType name="returnYardageType">
    <xs:sequence>
      <xs:element name="punt_return" type="tns:returnAttemptType" minOccurs="1" maxOccurs="1" />
      <xs:element name="kickoff_return" type="tns:returnAttemptType" minOccurs="1" maxOccurs="1" />
      <xs:element name="int_return" type="tns:returnAttemptType" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="total" use="required" type="xs:integer"/>
  </xs:complexType>
  
  <xs:complexType name="kickConversionType">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="blk" use="optional" type="xs:integer"/>
    <xs:attribute name="made" use="required" type="xs:integer"/>
  </xs:complexType>
  
  <xs:complexType name="zoneEfficiencyType">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="pct" use="required" type="xs:decimal"/>
    <xs:attribute name="td" use="required" type="xs:integer"/>
  </xs:complexType>
  
</xs:schema>
