<?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/statistics-v1.0.xsd"
  targetNamespace="http://feed.elasticstats.com/schema/nfl/statistics-v1.0.xsd"
  elementFormDefault="qualified" >

  <xs:complexType name="gameType">
    <xs:sequence>
      <xs:element name="team" type="tns:teamStatisticsType" maxOccurs="2" minOccurs="1" />
    </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:complexType name="teamStatisticsType">
    <xs:choice>
      <xs:sequence>
      <xs:element name="two_point_conversion" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:two_point_conversion" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:two_point_conversion" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="touchdowns" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:touchdowns" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:touchdowns"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="third_down_efficiency" type="tns:downEfficiencyType" minOccurs="0" maxOccurs="1"/>
      
      <xs:element name="rushing" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:rushing" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:rushing"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="redzone_efficiency" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:redzone_efficiency" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:redzone_efficiency"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="receiving" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:receiving" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:receiving"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="punting" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:punting" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:punting"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="punt_return" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:kick_return" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:kick_return"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="penalty" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:penalty" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:penalty"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="passing" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:passing" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:passing"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="kickoffs" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:kickoffs" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:kickoffs"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="kick_return" type="tns:kickReturnType" minOccurs="0" maxOccurs="1"/>
      
      <xs:element name="goal_efficiency" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:goal_efficiency" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:goal_efficiency"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="fumbles" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:fumbles" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:fumbles"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="fourth_down_efficiency" type="tns:downEfficiencyType" minOccurs="0" maxOccurs="1"/>
      
      <xs:element name="first_downs" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:first_downs" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:first_downs"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="field_goal_return" type="tns:kickReturnType" minOccurs="0" maxOccurs="1" />
      
      <xs:element name="field_goal" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:field_goal" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:field_goal"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="extra_point" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:extra_point" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:extra_point"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="defensive_conversion" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:attributeGroup ref="tns:playerBase" />
                  <xs:attributeGroup ref="tns:defensive_conversion" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attributeGroup ref="tns:defensive_conversion" />
          </xs:complexType>
        </xs:element>
      
      <xs:element name="defense" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attributeGroup ref="tns:playerBase" />
                <xs:attributeGroup ref="tns:defense" />
              </xs:complexType>         
            </xs:element>
          </xs:sequence>
          <xs:attributeGroup ref="tns:defense"/>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="blocked_punt_return" type="tns:kickReturnType" minOccurs="0" maxOccurs="1" />
      
      <xs:element name="blocked_field_goal_return" type="tns:kickReturnType" minOccurs="0" maxOccurs="1"/>
      
      <xs:element name="players" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="player" type="tns:playerStatisticsType" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>  
        </xs:complexType>
      </xs:element>
    </xs:sequence>
      <xs:element name="player" type="tns:playerStatisticsType" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:choice>
    <xs:attributeGroup ref="tns:teamBase" />
    <xs:attribute name="points" use="optional" type="xs:integer" />
    <xs:attribute name="remaining_challenges" use="optional" type="xs:integer" />
    <xs:attribute name="remaining_timeouts" use="optional" type="xs:integer" />
  </xs:complexType>
  
  <xs:complexType name="teamReferenceType">
    <xs:attributeGroup ref="tns:teamBase" />
  </xs:complexType>
  
  <xs:complexType name="playerStatisticsType">
    <xs:sequence>
      <xs:element name="two_point_conversion" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:two_point_conversion" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="touchdowns" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:touchdowns" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="rushing" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:rushing" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="receiving" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:receiving" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="punting" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:punting" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="punt_return" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:kick_return" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="penalty" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:penalty" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="passing" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:passing" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="kickoffs" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:kickoffs" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="kick_return" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:kick_return" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="fumbles" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:fumbles" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="first_downs" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:first_downs" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="field_goal_return" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:kick_return" />
         </xs:complexType>
      </xs:element>
      
      <xs:element name="field_goal" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:field_goal" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="extra_point" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:extra_point" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="defensive_conversion" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:defensive_conversion" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="defense" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:defense" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="blocked_punt_return" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:kick_return" />
        </xs:complexType>
      </xs:element>
      
      <xs:element name="blocked_field_goal_return" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attributeGroup ref="tns:kick_return" />
        </xs:complexType>
      </xs:element>
      
    </xs:sequence>
    <xs:attributeGroup ref="tns:playerBase" />
  </xs:complexType>
 
  <xs:complexType name="seasonType">
    <xs:sequence>
      <xs:element name="team" type="tns:teamStatisticsType" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="season" use="required" type="xs:integer"/>
    <xs:attribute name="season_type" use="optional" type="xs:string"/>
    <xs:attribute name="week" use="optional" type="xs:integer" />
  </xs:complexType>
  
  <xs:attributeGroup name="playerBase">
    <xs:attribute name="id" use="required" type="xs:string"/>
    <xs:attribute name="name" use="required" type="xs:string"/>
    <xs:attribute name="jersey" use="optional" type="xs:integer"/>
    <xs:attribute name="position" use="optional" type="xs:string"/>
    <xs:attribute name="games_played" use="optional" type="xs:integer" />
    <xs:attribute name="games_started" use="optional" type="xs:integer" />
  </xs:attributeGroup>  
  
  <xs:attributeGroup name="teamBase">
    <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:attributeGroup>
  
  <xs:attributeGroup name="two_point_conversion">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="failed" use="optional" type="xs:integer"/>
    <xs:attribute name="pass" use="required" type="xs:integer"/>
    <xs:attribute name="rush" use="required" type="xs:integer"/>
    <xs:attribute name="rec" use="required" type="xs:integer"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="defensive_conversion">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="failed" use="optional" type="xs:integer"/>
    <xs:attribute name="cmp" use="required" type="xs:integer"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="touchdowns">
    <xs:attribute name="fg_ret" use="required" type="xs:integer"/>
    <xs:attribute name="fum_ret" use="required" type="xs:integer"/>
    <xs:attribute name="int" use="required" type="xs:integer"/>
    <xs:attribute name="kick_ret" use="required" type="xs:integer"/>
    <xs:attribute name="other" use="required" type="xs:integer"/>
    <xs:attribute name="pass" use="required" type="xs:integer"/>
    <xs:attribute name="punt_ret" use="required" type="xs:integer"/>
    <xs:attribute name="rush" use="required" type="xs:integer"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="down_efficiency">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="conv" use="required" type="xs:integer"/>
    <xs:attribute name="pct" use="required" type="xs:decimal"/>
    <xs:attribute name="pass" use="required" type="xs:integer"/>
    <xs:attribute name="rush" use="required" type="xs:integer"/>
    <xs:attribute name="pen" use="required" type="xs:integer"/>
  </xs:attributeGroup>
 
  <xs:complexType name="downEfficiencyType">
    <xs:sequence>
      <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attributeGroup ref="tns:playerBase" />
          <xs:attributeGroup ref="tns:down_efficiency" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="tns:down_efficiency"/>
  </xs:complexType>
  
  <xs:attributeGroup name="rushing">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="avg" use="required" type="xs:decimal"/>
    <xs:attribute name="fd" use="optional" type="xs:integer"/>
    <xs:attribute name="fd_pct" use="optional" type="xs:decimal"/>
    <xs:attribute name="lg" use="required" type="xs:integer"/>
    <xs:attribute name="sfty" use="optional" type="xs:integer"/>
    <xs:attribute name="rz_att" use="optional" type="xs:integer"/>
    <xs:attribute name="fum" use="optional" type="xs:integer"/>
    <xs:attribute name="td" use="required" type="xs:integer"/>
    <xs:attribute name="yds" use="required" type="xs:integer"/>
    <xs:attribute name="yds_10_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_20_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_30_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_40_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_50_pls" use="optional" type="xs:integer" />
  </xs:attributeGroup>
 
  <xs:attributeGroup name="redzone_efficiency">
    <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:attributeGroup>

  <xs:attributeGroup name="receiving">
    <xs:attribute name="avg" use="required" type="xs:decimal"/>
    <xs:attribute name="fd" use="optional" type="xs:integer"/>
    <xs:attribute name="lg" use="required" type="xs:integer"/>
    <xs:attribute name="rec" use="required" type="xs:integer"/>
    <xs:attribute name="tar" use="required" type="xs:integer"/>
    <xs:attribute name="rz_tar" use="optional" type="xs:integer"/>
    <xs:attribute name="fum" use="optional" type="xs:integer"/>
    <xs:attribute name="td" use="required" type="xs:integer"/>
    <xs:attribute name="yac" use="required" type="xs:integer"/>
    <xs:attribute name="yds" use="required" type="xs:integer"/>
    <xs:attribute name="yds_10_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_20_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_30_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_40_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_50_pls" use="optional" type="xs:integer" />
  </xs:attributeGroup>
  
  <xs:attributeGroup name="punting">
    <xs:attribute name="avg" use="required" type="xs:decimal"/>
    <xs:attribute name="avg_ret" use="optional" type="xs:decimal"/>
    <xs:attribute name="blk" use="required" type="xs:integer"/>
    <xs:attribute name="in20" use="required" type="xs:integer"/>
    <xs:attribute name="in20_pct" use="required" type="xs:decimal"/>
    <xs:attribute name="lg" use="required" type="xs:integer"/>
    <xs:attribute name="net_avg" use="required" type="xs:decimal"/>
    <xs:attribute name="net_yds" use="required" type="xs:integer"/>
    <xs:attribute name="punts" use="required" type="xs:integer"/>
    <xs:attribute name="ret" use="required" type="xs:integer"/>
    <xs:attribute name="ret_yds" use="required" type="xs:integer"/>
    <xs:attribute name="tb" use="required" type="xs:integer"/>
    <xs:attribute name="tb_pct" use="required" type="xs:decimal"/>
    <xs:attribute name="yds" use="required" type="xs:integer"/>
    <xs:attribute name="sfty" use="optional" type="xs:integer" />
  </xs:attributeGroup>
  
  <xs:attributeGroup name="penalty">
    <xs:attribute name="fd" use="optional" type="xs:integer"/>
    <xs:attribute name="num" use="required" type="xs:integer"/>
    <xs:attribute name="yds" use="required" type="xs:integer"/>
  </xs:attributeGroup>
 
  <xs:attributeGroup name="passing">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="avg" use="required" type="xs:decimal"/>
    <xs:attribute name="cmp" use="required" type="xs:integer"/>
    <xs:attribute name="cmp_pct" use="required" type="xs:decimal"/>
    <xs:attribute name="cmp_avg" use="optional" type="xs:decimal"/>
    <xs:attribute name="fd" use="optional" type="xs:integer"/>
    <xs:attribute name="int" use="required" type="xs:integer"/>
    <xs:attribute name="int_pct" use="required" type="xs:decimal"/>
    <xs:attribute name="int_td" use="optional" type="xs:integer"/>
    <xs:attribute name="lg" use="required" type="xs:integer"/>
    <xs:attribute name="rating" use="required" type="xs:decimal"/>
    <xs:attribute name="sfty" use="optional" type="xs:integer"/>
    <xs:attribute name="rz_att" use="optional" type="xs:integer"/>
    <xs:attribute name="sk" use="required" type="xs:integer"/>
    <xs:attribute name="sk_yds" use="required" type="xs:decimal"/>
    <xs:attribute name="td" use="required" type="xs:integer"/>
    <xs:attribute name="td_pct" use="required" type="xs:decimal"/>
    <xs:attribute name="yds" use="required" type="xs:integer"/>
    <xs:attribute name="yds_10_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_20_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_30_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_40_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_50_pls" use="optional" type="xs:integer" />
  </xs:attributeGroup>
  
  <xs:attributeGroup name="kickoffs">
    <xs:attribute name="avg" use="required" type="xs:decimal"/>
    <xs:attribute name="avg_ret" use="optional" type="xs:decimal"/>
    <xs:attribute name="endzone" use="required" type="xs:integer"/>
    <xs:attribute name="in20" use="required" type="xs:integer"/>
    <xs:attribute name="in20_pct" use="required" type="xs:decimal"/>
    <xs:attribute name="kicks" use="required" type="xs:integer"/>
    <xs:attribute name="lg" use="required" type="xs:integer"/>
    <xs:attribute name="net_avg" use="required" type="xs:decimal"/>
    <xs:attribute name="net_yds" use="required" type="xs:integer"/>
    <xs:attribute name="ret" use="required" type="xs:integer"/>
    <xs:attribute name="ret_yds" use="required" type="xs:integer"/>
    <xs:attribute name="tb" use="required" type="xs:integer"/>
    <xs:attribute name="tb_pct" use="required" type="xs:decimal"/>
    <xs:attribute name="yds" use="required" type="xs:integer"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="kick_return">
    <xs:attribute name="avg" use="required" type="xs:decimal"/>
    <xs:attribute name="fc" use="optional" type="xs:integer"/>
    <xs:attribute name="lg" use="required" type="xs:integer"/>
    <xs:attribute name="returns" use="required" type="xs:integer"/>
    <xs:attribute name="td" use="required" type="xs:integer"/>
    <xs:attribute name="yds" use="required" type="xs:integer"/>
    <xs:attribute name="yds_10_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_20_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_30_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_40_pls" use="optional" type="xs:integer" />
    <xs:attribute name="yds_50_pls" use="optional" type="xs:integer" />    
  </xs:attributeGroup>
 
  <xs:complexType name="kickReturnType">
    <xs:sequence>
      <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attributeGroup ref="tns:playerBase" />
          <xs:attributeGroup ref="tns:kick_return" />
        </xs:complexType>         
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="tns:kick_return" />
  </xs:complexType>
  
  <xs:attributeGroup name="goal_efficiency">
    <xs:attribute name="att" use="optional" type="xs:integer"/>
    <xs:attribute name="pct" use="optional" type="xs:decimal"/>
    <xs:attribute name="td" use="optional" type="xs:integer"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="fumbles">
    <xs:attribute name="force_fum" use="required" type="xs:integer"/>
    <xs:attribute name="fum" use="required" type="xs:integer"/>
    <xs:attribute name="lost" use="required" type="xs:integer"/>
    <xs:attribute name="oob" use="required" type="xs:integer"/>
    <xs:attribute name="opp_rec" use="required" type="xs:integer"/>
    <xs:attribute name="opp_rec_td" use="required" type="xs:integer"/>
    <xs:attribute name="opp_rec_yds" use="required" type="xs:integer"/>
    <xs:attribute name="own_rec" use="required" type="xs:integer"/>
    <xs:attribute name="own_rec_td" use="required" type="xs:integer"/>
    <xs:attribute name="own_rec_yds" use="required" type="xs:integer"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="first_downs">
    <xs:attribute name="num" use="required" type="xs:integer"/>
    <xs:attribute name="pass" use="required" type="xs:integer"/>
    <xs:attribute name="pen" use="required" type="xs:integer"/>
    <xs:attribute name="rush" use="required" type="xs:integer"/>
  </xs:attributeGroup>
 
  <xs:attributeGroup name="field_goal">
    <xs:attribute name="att" use="required" type="xs:integer"/>
    <xs:attribute name="att_19" use="required" type="xs:integer"/>
    <xs:attribute name="att_29" use="required" type="xs:integer"/>
    <xs:attribute name="att_39" use="required" type="xs:integer"/>
    <xs:attribute name="att_49" use="required" type="xs:integer"/>
    <xs:attribute name="att_50" use="required" type="xs:integer"/>
    <xs:attribute name="lg" use="required" type="xs:integer"/>
    <xs:attribute name="made" use="required" type="xs:integer"/>
    <xs:attribute name="made_19" use="required" type="xs:integer"/>
    <xs:attribute name="made_29" use="required" type="xs:integer"/>
    <xs:attribute name="made_39" use="required" type="xs:integer"/>
    <xs:attribute name="made_49" use="required" type="xs:integer"/>
    <xs:attribute name="made_50" use="required" type="xs:integer"/>
    <xs:attribute name="pct" use="required" type="xs:decimal"/>
    <xs:attribute name="blk" use="optional" type="xs:integer"/>
 </xs:attributeGroup>
 
  <xs:attributeGroup name="extra_point">
   <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:attribute name="pct" use="required" type="xs:decimal"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="defense">
    <xs:attribute name="ast" use="required" type="xs:integer"/>
    <xs:attribute name="bk" use="optional" type="xs:integer"/>
    <xs:attribute name="comb" use="required" type="xs:integer"/>
    <xs:attribute name="force_fum" use="required" type="xs:integer"/>
    <xs:attribute name="fum_rec" use="required" type="xs:integer"/>
    <xs:attribute name="fum_td" use="required" type="xs:integer"/>
    <xs:attribute name="int" use="required" type="xs:integer"/>
    <xs:attribute name="int_lg" use="optional" type="xs:integer"/>
    <xs:attribute name="int_td" use="required" type="xs:integer"/>
    <xs:attribute name="int_yds" use="optional" type="xs:integer"/>
    <xs:attribute name="pd" use="required" type="xs:integer"/>
    <xs:attribute name="qh" use="required" type="xs:integer"/>
    <xs:attribute name="sack" use="required" type="xs:decimal"/>
    <xs:attribute name="sack_yds" use="required" type="xs:decimal"/>
    <xs:attribute name="sfty" use="optional" type="xs:integer"/>
    <xs:attribute name="tackle" use="required" type="xs:integer"/>
    <xs:attribute name="tlost" use="required" type="xs:integer"/>
    <xs:attribute name="sfty_1pt" use="optional" type="xs:integer"/>

    <xs:attribute name="sp_tackle" use="optional" type="xs:integer" />
    <xs:attribute name="sp_ast" use="optional" type="xs:integer"/>
    <xs:attribute name="sp_comb" use="optional" type="xs:integer"/>
    <xs:attribute name="sp_force_fum" use="optional" type="xs:integer"/>
    <xs:attribute name="sp_fum_rec" use="optional" type="xs:integer"/>
    
    <xs:attribute name="misc_tackle" use="optional" type="xs:integer" />
    <xs:attribute name="misc_ast" use="optional" type="xs:integer"/>
    <xs:attribute name="misc_comb" use="optional" type="xs:integer"/>
    <xs:attribute name="misc_force_fum" use="optional" type="xs:integer"/>
    <xs:attribute name="misc_fum_rec" use="optional" type="xs:integer"/>
  </xs:attributeGroup>
 
  <xs:element name="game" type="tns:gameType" />
  <xs:element name="games">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="game" minOccurs="0" maxOccurs="unbounded" type="tns:gameType"/>
      </xs:sequence>
      <xs:attribute name="season" use="required" type="xs:integer"/>
      <xs:attribute name="week" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="season" type="tns:seasonType"/>
  
  <xs:element name="player">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:season" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attributeGroup ref="tns:playerBase" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="leaders">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="passing" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="team" type="tns:teamReferenceType" />
                  </xs:sequence>
                  <xs:attributeGroup ref="tns:playerBase" />
                  <xs:attributeGroup ref="tns:passing" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>  
          </xs:complexType>
        </xs:element>  
        
        <xs:element name="rushing" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="team" type="tns:teamReferenceType" />
                  </xs:sequence>
                  <xs:attributeGroup ref="tns:playerBase" />
                  <xs:attributeGroup ref="tns:rushing" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>  
          </xs:complexType>
        </xs:element>  

        <xs:element name="receiving" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="team" type="tns:teamReferenceType" />
                  </xs:sequence>
                  <xs:attributeGroup ref="tns:playerBase" />
                  <xs:attributeGroup ref="tns:receiving" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>  
          </xs:complexType>
        </xs:element>  

        <xs:element name="field_goal" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="team" type="tns:teamReferenceType" />
                  </xs:sequence>
                  <xs:attributeGroup ref="tns:playerBase" />
                  <xs:attributeGroup ref="tns:field_goal" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>  
          </xs:complexType>
        </xs:element>
        
        <xs:element name="extra_point" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="player" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="team" type="tns:teamReferenceType" />
                  </xs:sequence>
                  <xs:attributeGroup ref="tns:playerBase" />
                  <xs:attributeGroup ref="tns:extra_point" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>  
          </xs:complexType>
        </xs:element>       
      </xs:sequence>      
      <xs:attribute name="season" use="optional" type="xs:integer"/>
      <xs:attribute name="type" use="optional" type="xs:string" />
      <xs:attribute name="week" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  
</xs:schema>
