﻿<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="cricsheet">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="meta">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="data_version"/>
              <xs:element type="xs:date" name="created"/>
              <xs:element type="xs:int" name="revision"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="info">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:int" name="balls_per_over"/>
              <xs:element name="bowl_out" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="bowl_out" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:string" name="bowler"/>
                          <xs:element type="xs:string" name="outcome"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element type="xs:string" name="city" minOccurs="0"/>
              <xs:element type="xs:string" name="competition" minOccurs="0"/>
              <xs:element name="dates">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:date" name="date" minOccurs="1" maxOccurs="unbounded"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element type="xs:string" name="gender"/>
              <xs:element name="lineups">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="lineup" minOccurs="1" maxOccurs="2">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:string" name="team"/>
                          <xs:element name="players">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element type="xs:string" name="player" minOccurs="11" maxOccurs="13"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element type="xs:string" name="match_type"/>
              <xs:element type="xs:int" name="match_type_number" minOccurs="0"/>
              <xs:element type="xs:boolean" name="neutral_venue" minOccurs="0"/>
              <xs:element name="outcome">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="bowl_out" minOccurs="0"/>
                    <xs:element name="by" minOccurs="0">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:boolean" name="innings" minOccurs="0"/>
                          <xs:element type="xs:int" name="runs" minOccurs="0"/>
                          <xs:element type="xs:int" name="wickets" minOccurs="0"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element type="xs:string" name="eliminator" minOccurs="0"/>
                    <xs:element type="xs:string" name="method" minOccurs="0"/>
                    <xs:element type="xs:string" name="result" minOccurs="0"/>
                    <xs:element type="xs:string" name="winner" minOccurs="0"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element type="xs:int" name="overs" minOccurs="0"/>
              <xs:element name="player_of_match" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="player_of_match" minOccurs="1" maxOccurs="unbounded"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="registry">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="people">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="person" minOccurs="2" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element type="xs:string" name="name"/>
                                <xs:element type="xs:string" name="identifier"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="supersubs" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="supersub" minOccurs="1" maxOccurs="2">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:string" name="team"/>
                          <xs:element type="xs:string" name="player"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="teams">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="team" minOccurs="2" maxOccurs="2"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="toss">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="decision"/>
                    <xs:element type="xs:boolean" name="uncontested" minOccurs="0"/>
                    <xs:element type="xs:string" name="winner"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="umpires" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="umpire" minOccurs="2" maxOccurs="unbounded"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element type="xs:string" name="venue"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="innings">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="inning" minOccurs="1" maxOccurs="6">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:int" name="inningsNumber"/>
                    <xs:element type="xs:string" name="team"/>
                    <xs:element type="xs:boolean" name="forfeited" minOccurs="0" maxOccurs="1"/>
                    <xs:element name="penalty_runs" minOccurs="0">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:int" name="pre" minOccurs="0"/>
                          <xs:element type="xs:int" name="post" minOccurs="0"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="deliveries" minOccurs="0" maxOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="delivery" minOccurs="1" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element type="xs:int" name="over"/>
                                <xs:element type="xs:int" name="ball"/>
                                <xs:element type="xs:string" name="batsman"/>
                                <xs:element type="xs:string" name="bowler"/>
                                <xs:element name="extras" minOccurs="0">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element type="xs:int" name="byes" minOccurs="0" />
                                      <xs:element type="xs:int" name="legbyes" minOccurs="0" />
                                      <xs:element type="xs:int" name="noballs" minOccurs="0" />
                                      <xs:element type="xs:int" name="penalty" minOccurs="0" />
                                      <xs:element type="xs:int" name="wides" minOccurs="0" />
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element type="xs:string" name="non_striker"/>
                                <xs:element name="replacements" minOccurs="0">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="match" minOccurs="0">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="match" minOccurs="1" maxOccurs="unbounded">
                                              <xs:complexType>
                                                <xs:sequence>
                                                  <xs:element type="xs:string" name="in"/>
                                                  <xs:element type="xs:string" name="out"/>
                                                  <xs:element type="xs:string" name="reason"/>
                                                  <xs:element type="xs:string" name="team"/>
                                                </xs:sequence>
                                              </xs:complexType>
                                            </xs:element>
                                          </xs:sequence>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="role" minOccurs="0">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="role" minOccurs="1" maxOccurs="unbounded">
                                              <xs:complexType>
                                                <xs:sequence>
                                                  <xs:element type="xs:string" name="in"/>
                                                  <xs:element type="xs:string" name="out" minOccurs="0" maxOccurs="1"/>
                                                  <xs:element type="xs:string" name="reason"/>
                                                  <xs:element type="xs:string" name="role"/>
                                                </xs:sequence>
                                              </xs:complexType>
                                            </xs:element>
                                          </xs:sequence>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="runs">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element type="xs:int" name="batsman"/>
                                      <xs:element type="xs:int" name="extras"/>
                                      <xs:element type="xs:boolean" name="non_boundary" minOccurs="0"/>
                                      <xs:element type="xs:int" name="total"/>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="wickets" minOccurs="0">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="wicket" minOccurs="1" maxOccurs="unbounded">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="fielders" minOccurs="0">
                                              <xs:complexType>
                                                <xs:sequence>
                                                  <xs:element type="xs:string" name="fielder" minOccurs="1" maxOccurs="unbounded"/>
                                                </xs:sequence>
                                              </xs:complexType>
                                            </xs:element>
                                            <xs:element type="xs:string" name="kind"/>
                                            <xs:element type="xs:string" name="player_out" />
                                          </xs:sequence>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element type="xs:boolean" name="declared" minOccurs="0" maxOccurs="1"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
