<?xml version="1.0" encoding="UTF-8"?>
<!-- PA Olympics XML Schema v2.0 Change Log

	v1.1 - 09/02/2012 
		- Added identifier attribute to disciplineDescription and eventDescription elements 
	
	v1.2 - 16/02/2012 
		- Added medalCast elements and made entrant/@order optional 
		- Added phaseDescription element to eventUnit 
	
	v1.3 - 23/02/2012 
		- Added optional horse element to competitor (for Equestrian based events) 
		- Updated official to make type and order optional attributes (to cater for when they are not applicable) 
	
	v1.4 - 27/02/2012 
		- Added an optional description to the extension element 
		- Added optional result element on phase to support phase level results 
		- Added optional properties and statistics on participant 
		- Added action on result/entrant 
	
	v1.5 - 03/04/2012 
		- Added unitStartListsAvailable and unitResultsAvailable elements to the phase element. 
	
	v1.6 - 10/04/2012 
		- Added phaseDescription to the event element. 
		- Added medalInfo to event. - Removed medalInfo from eventUnit. 
	
	v1.7 - 23/04/2012 
		- Changed optional tableEntry/participant to entrant. 
		- Added extensionsAvailable element on result to indicate if and extensions are available. 
	
	v1.8 - 04/05/2012 
		- Changed action time from integer to string 
		- some times are minutes only and some are minute:second 
		- Added bronzeMedalEvent element 
	
	v1.9 - 15/05/2012 
		- Added the active element to discipline, venue and games. 
	
	v1.9.1 
		- 01/06/2012 - Added the interest element to olympics.

    v2.0
	    - 14/11/2013 - Added property to actions and type to resultAvailable

    v2.1
        - 15/03/2016
        - Added configuration element to phase detail
        - Added utc attribute to start and end date.

    v2.2
        - 04/05/2016
        - Added brackets to event element.
        - Added nextEventUnit to eventUnit for bracket use.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <!-- Top Level Olympics element -->
    <xs:element name="olympics">
        <xs:complexType>
            <xs:choice>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="competitor" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="country" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="discipline" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="event" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="eventUnit" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="games" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="schedule" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="scheduledEvent" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="venue" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="bio" />
            </xs:choice>
        </xs:complexType>
    </xs:element>

    <!-- Competitor element -->
    <xs:element name="competitor">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="1" ref="firstName" />
                <xs:element minOccurs="1" maxOccurs="1" ref="lastName" />
                <xs:element minOccurs="1" maxOccurs="1" ref="fullName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="printName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="tvName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="printInitialName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="tvInitialName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="gender" />
                <xs:element minOccurs="0" maxOccurs="1" ref="dob" />
                <xs:element minOccurs="0" maxOccurs="1" ref="height" />
                <xs:element minOccurs="0" maxOccurs="1" ref="weight" />
                <xs:element minOccurs="0" maxOccurs="1" ref="country" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="discipline" />
                <xs:element minOccurs="0" maxOccurs="1" ref="medalTable" />
            </xs:sequence>
            <xs:attribute name="identifier" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Country element -->
    <xs:element name="country">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="name" />
                <xs:element minOccurs="0" maxOccurs="1" ref="longName" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="competitor" />
                <xs:element minOccurs="0" maxOccurs="1" ref="medalTable" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="medalCast" />
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Discipline element -->
    <xs:element name="discipline">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="medalTable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="active" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="medalCast" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="event" />
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Event element -->
    <xs:element name="event">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="type" />
                <xs:element minOccurs="0" maxOccurs="1" ref="teamEvent" />
                <xs:element minOccurs="0" maxOccurs="1" ref="h2hEvent" />
                <xs:element minOccurs="0" maxOccurs="1" ref="gender" />
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" name="disciplineDescription" type="identifierValueType" />
                <xs:element minOccurs="0" maxOccurs="1" name="phaseDescription" type="identifierValueType" />
                <xs:element minOccurs="0" maxOccurs="1" ref="cumulativeResultAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="standingsAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="bracketsAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="worldRecord" />
                <xs:element minOccurs="0" maxOccurs="1" ref="olympicRecord" />
                <xs:element minOccurs="0" maxOccurs="1" ref="bracket" />
                <xs:choice>
                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="eventUnit" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="phase" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="result" />
                    <xs:element minOccurs="0" maxOccurs="1" ref="medalTable" />
                </xs:choice>
                <xs:element minOccurs="0" maxOccurs="1" ref="medalInfo" />
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- EventUnit element -->
    <xs:element name="eventUnit">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="nextEventUnit" />
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="unitType" />
                <xs:element minOccurs="0" maxOccurs="1" ref="medalEvent" />
                <xs:element minOccurs="0" maxOccurs="1" ref="bronzeMedalEvent" />
                <xs:element minOccurs="0" maxOccurs="1" name="disciplineDescription" type="identifierValueType" />
                <xs:element minOccurs="0" maxOccurs="1" name="eventDescription" type="identifierValueType" />
                <xs:element minOccurs="0" maxOccurs="1" name="phaseDescription" type="identifierValueType" />
                <xs:element minOccurs="0" maxOccurs="1" ref="scheduleInfo" />
                <xs:element minOccurs="0" maxOccurs="1" ref="startList" />
                <xs:element minOccurs="0" maxOccurs="1" ref="result" />
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Games Element (A specific Olympic Games) -->
    <xs:element name="games">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="year" />
                <xs:element minOccurs="0" maxOccurs="1" ref="city" />
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="medalTable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="active" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="medalCast" />
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Horse element -->
    <xs:element name="horse">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="1" ref="name" />
                <xs:element minOccurs="1" maxOccurs="1" ref="yearBorn" />
                <xs:element minOccurs="1" maxOccurs="1" ref="sex" />
            </xs:sequence>
            <xs:attribute name="identifier" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Medal Table Element -->
    <xs:element name="medalTable">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="unbounded" ref="tableEntry" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- Bio element -->
    <xs:element name="bio">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="country" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="interest" />
            </xs:sequence>
            <xs:attribute name="identifier" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Interest element -->
    <xs:element name="interest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="nickName" type="xs:string" />
                <xs:element name="previousName" type="xs:string" />
                <xs:element name="hobbies" type="xs:string" />
                <xs:element name="occupation" type="xs:string" />
                <xs:element name="education" type="xs:string" />
                <xs:element name="maritalStatus" type="xs:string" />
                <xs:element name="family" type="xs:string" />
                <xs:element name="languageSpoken" type="xs:string" />
                <xs:element name="clubName" type="xs:string" />
                <xs:element name="positionStyle" type="xs:string" />
                <xs:element name="hand" type="xs:string" />
                <xs:element name="sportingRelatives" type="xs:string" />
                <xs:element name="otherSports" type="xs:string" />
                <xs:element name="debut" type="xs:string" />
                <xs:element name="injuries" type="xs:string" />
                <xs:element name="addInformation" type="xs:string" />
                <xs:element name="previousOlympics" type="xs:string" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>



    <!-- Table Entry Element -->
    <xs:element name="tableEntry">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" name="gold" type="medalType" />
                <xs:element minOccurs="0" maxOccurs="1" name="silver"
                            type="medalType" />
                <xs:element minOccurs="0" maxOccurs="1" name="bronze"
                            type="medalType" />
                <xs:element minOccurs="0" maxOccurs="1" name="total"
                            type="medalType" />
                <xs:choice minOccurs="0" maxOccurs="1">
                    <xs:element ref="country" />
                    <xs:element ref="entrant" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="position" use="required" type="xs:integer" />
        </xs:complexType>
    </xs:element>

    <!-- MedalCast Element -->
    <xs:element name="medalCast">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="1" ref="event" />
                <xs:element minOccurs="1" maxOccurs="1" ref="entrant" />
            </xs:sequence>
            <xs:attribute name="type" use="required" type="xs:string" />
            <xs:attribute name="date" use="required" type="xs:date" />
            <xs:attribute name="time" use="required" type="xs:time" />
        </xs:complexType>
    </xs:element>

    <!-- Schedule element -->
    <xs:element name="schedule">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="eventCount" />
            </xs:sequence>
            <xs:attribute name="date" use="required" type="xs:date" />
        </xs:complexType>
    </xs:element>

    <!-- Scheduled Event element -->
    <xs:element name="scheduledEvent">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="start" />
                <xs:element minOccurs="0" maxOccurs="1" ref="end" />
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="status" />
                <xs:element minOccurs="0" maxOccurs="1" ref="session" />
                <xs:element minOccurs="0" maxOccurs="1" ref="medalEvent" />
                <xs:element minOccurs="0" maxOccurs="1" ref="bronzeMedalEvent" />
                <xs:element minOccurs="0" maxOccurs="1" ref="venue" />
                <xs:element minOccurs="0" maxOccurs="1" ref="startListAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="resultAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="discipline" />
            </xs:sequence>
            <xs:attribute name="timestamp" use="required" type="xs:dateTime" />
        </xs:complexType>
    </xs:element>

    <!-- Schedule Info element -->
    <xs:element name="scheduleInfo">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="start" />
                <xs:element minOccurs="0" maxOccurs="1" ref="end" />
                <xs:element minOccurs="0" maxOccurs="1" ref="status" />
                <xs:element minOccurs="0" maxOccurs="1" ref="session" />
                <xs:element minOccurs="0" maxOccurs="1" ref="venue" />
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="startListAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="resultAvailable" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Venue element -->
    <xs:element name="venue">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="name" />
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="geo" />
                <xs:element minOccurs="0" maxOccurs="1" ref="wikipediaURL" />
                <xs:element minOccurs="0" maxOccurs="1" ref="active" />
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Results element -->
    <xs:element name="result">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="extensionsAvailable" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="entrant" />
            </xs:sequence>
            <xs:attribute name="type" use="required" type="xs:string" />
            <xs:attribute name="timestamp" use="required" type="xs:dateTime" />
        </xs:complexType>
    </xs:element>

    <!-- medalInfo element -->
    <xs:element name="medalInfo">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="awarded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- awarded element -->
    <xs:element name="awarded">
        <xs:complexType>
            <xs:attribute name="date" type="xs:date" />
        </xs:complexType>
    </xs:element>

    <!-- World Record Element -->
    <xs:element name="worldRecord">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="value" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="record" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Olympic Record Element -->
    <xs:element name="olympicRecord">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="value" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="record" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Record Element -->
    <xs:element name="record">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="holder" />
            </xs:sequence>
            <xs:attribute name="date" use="required" type="xs:date" />
        </xs:complexType>
    </xs:element>

    <!-- Holder Element - A record holder -->
    <xs:element name="holder">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="country" />
                <xs:element minOccurs="0" maxOccurs="1" ref="competitor" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Bracket Element -->
    <xs:element name="bracket">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="stage" />
            </xs:sequence>
            <xs:attribute name="type" use="optional" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Stage Element -->
    <xs:element name="stage">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="eventUnit" />
            </xs:sequence>
            <xs:attribute name="type" use="optional" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- nextEventUnit Element -->
    <xs:element name="nextEventUnit">
        <xs:complexType>
            <xs:attribute name="winner" use="optional" type="xs:string" />
            <xs:attribute name="loser" use="optional" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- StartList element -->
    <xs:element name="startList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="official" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="entrant" />
            </xs:sequence>
            <xs:attribute name="timestamp" use="required" type="xs:dateTime" />
        </xs:complexType>
    </xs:element>

    <!-- Official element -->
    <xs:element name="official">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="1" ref="firstName" />
                <xs:element minOccurs="1" maxOccurs="1" ref="lastName" />
                <xs:element minOccurs="1" maxOccurs="1" ref="fullName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="printName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="tvName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="printInitialName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="tvInitialName" />
                <xs:element minOccurs="0" maxOccurs="1" ref="gender" />
                <xs:element minOccurs="0" maxOccurs="1" ref="dob" />
                <xs:element minOccurs="0" maxOccurs="1" ref="height" />
                <xs:element minOccurs="0" maxOccurs="1" ref="weight" />
                <xs:element minOccurs="0" maxOccurs="1" ref="country" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="discipline" />
            </xs:sequence>
            <xs:attribute name="order" use="optional" type="xs:integer" />
            <xs:attribute name="type" use="optional" type="xs:string" />
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Entrant element -->
    <xs:element name="entrant">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="rank" />
                <xs:element minOccurs="0" maxOccurs="1" ref="value" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="statistic" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="resultExtension" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="action" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="phaseResult" />
                <xs:element minOccurs="0" maxOccurs="1" ref="country" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="participant" />
            </xs:sequence>
            <xs:attribute name="order" use="optional" type="xs:integer" />
            <xs:attribute name="type" use="required" type="xs:string" />
            <xs:attribute name="code" use="optional" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Participant element -->
    <xs:element name="participant">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="bib" />
                <xs:element minOccurs="0" maxOccurs="1" ref="position" />
                <xs:element minOccurs="0" maxOccurs="1" ref="captain" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="statistic" />
                <xs:element minOccurs="1" maxOccurs="1" ref="competitor" />
                <xs:element minOccurs="0" maxOccurs="1" ref="horse" />
            </xs:sequence>
            <xs:attribute name="order" use="optional" type="xs:integer" />
        </xs:complexType>
    </xs:element>

    <!-- Phase element -->
    <xs:element name="phase">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="code" />
                <xs:element minOccurs="0" maxOccurs="1" ref="type" />
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="resultAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="standingsAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="unitStartListsAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="unitResultsAvailable" />
                <xs:element minOccurs="0" maxOccurs="1" ref="groupPhase" />
                <xs:element minOccurs="0" maxOccurs="1" ref="standings" />
                <xs:element minOccurs="0" maxOccurs="1" ref="result" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="eventUnit" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="configuration"/>
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Configuration Element (A container for extensions of configuration) -->
    <xs:element name="configuration">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="value" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension" />
            </xs:sequence>
            <xs:attribute name="type" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Phase result element -->
    <xs:element name="phaseResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="code" />
                <xs:element minOccurs="0" maxOccurs="1" ref="rank" />
                <xs:element minOccurs="0" maxOccurs="1" ref="value" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
            </xs:sequence>
            <xs:attribute name="identifier" use="required" type="xs:string" />
            <xs:attribute name="order" use="required" type="xs:integer" />
        </xs:complexType>
    </xs:element>

    <!-- Standings element -->
    <xs:element name="standings">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="type" />
                <xs:element minOccurs="1" maxOccurs="unbounded" ref="entrant" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Property Element (A container for key-value properties) -->
    <xs:element name="property">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="type" type="xs:string"></xs:attribute>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <!-- Result Extension Element (A container for extensions of result) -->
    <xs:element name="resultExtension">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="value" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension" />
            </xs:sequence>
            <xs:attribute name="type" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Statistic Element (A container for key-value statistics) -->
    <xs:element name="statistic">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="type" type="xs:string"></xs:attribute>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <!-- Extension Element (A container for extensions of result) -->
    <xs:element name="extension">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="1" ref="description" />
                <xs:element minOccurs="0" maxOccurs="1" ref="value" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
            </xs:sequence>
            <xs:attribute name="position" use="optional" type="xs:integer" />
        </xs:complexType>
    </xs:element>

    <!-- Action Element -->
    <xs:element name="action">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
                <xs:element minOccurs="1" maxOccurs="1" ref="competitor" />
            </xs:sequence>
            <xs:attribute name="type" use="required" type="xs:string" />
            <xs:attribute name="time" use="required" type="xs:string" />
        </xs:complexType>
    </xs:element>

    <!-- Base Elements -->
    <xs:element name="active" type="xs:string" />
    <xs:element name="bib" type="xs:string" />
    <xs:element name="bronzeMedalEvent" type="xs:string" />
    <xs:element name="captain" type="xs:string" />
    <xs:element name="city" type="xs:string" />
    <xs:element name="code" type="xs:string" />
    <xs:element name="description" type="xs:string" />
    <xs:element name="disciplineDescription" type="xs:string" />
    <xs:element name="dob" type="xs:date" />
    <xs:element name="eventCount" type="xs:integer" />
    <xs:element name="eventDescription" type="xs:string" />
    <xs:element name="extensionsAvailable" type="xs:string" />
    <xs:element name="firstName" type="xs:string" />
    <xs:element name="fullName" type="xs:string" />
    <xs:element name="gender" type="xs:string" />
    <xs:element name="group" type="xs:string" />
    <xs:element name="groupPhase" type="xs:string" />
    <xs:element name="height" type="xs:integer" />
    <xs:element name="h2hEvent" type="xs:string" />
    <xs:element name="lastName" type="xs:string" />
    <xs:element name="lat" type="xs:decimal" />
    <xs:element name="long" type="xs:decimal" />
    <xs:element name="longName" type="xs:string" />
    <xs:element name="medalAwarded" type="xs:string" />
    <xs:element name="medalEvent" type="xs:string" />
    <xs:element name="position" type="xs:string" />
    <xs:element name="printInitialName" type="xs:string" />
    <xs:element name="printName" type="xs:string" />
    <xs:element name="name" type="xs:string" />
    <xs:element name="rank" type="xs:integer" />
    <xs:element name="recordSet" type="xs:string" />
    <xs:element name="sortOrder" type="xs:integer" />
    <xs:element name="session" type="xs:string" />
    <xs:element name="sex" type="xs:string" />
    <xs:element name="status" type="xs:string" />
    <xs:element name="standingsAvailable" type="xs:string" />
    <xs:element name="bracketsAvailable" type="xs:string" />
    <xs:element name="startListAvailable" type="xs:string" />

    <xs:element name="unitStartListsAvailable" type="xs:string" />
    <xs:element name="unitResultsAvailable" type="xs:string" />
    <xs:element name="cumulativeResultAvailable" type="xs:string" />
    <xs:element name="teamEvent" type="xs:string" />
    <xs:element name="tvInitialName" type="xs:string" />
    <xs:element name="tvName" type="xs:string" />
    <xs:element name="type" type="xs:string" />
    <xs:element name="unitType" type="xs:string" />
    <xs:element name="weight" type="xs:integer" />
    <xs:element name="wikipediaURL" type="xs:anyURI" />
    <xs:element name="year" type="xs:integer" />
    <xs:element name="yearBorn" type="xs:integer" />

    <xs:element name="resultAvailable">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="type" use="optional" type="xs:string" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>


    <xs:element name="start">
        <xs:complexType>
            <xs:attribute name="date" use="required" type="xs:date" />
            <xs:attribute name="time" use="required" type="xs:time" />
            <xs:attribute name="utc" use="required" type="xs:dateTime" />
        </xs:complexType>
    </xs:element>

    <xs:element name="end">
        <xs:complexType>
            <xs:attribute name="date" use="required" type="xs:date" />
            <xs:attribute name="time" use="required" type="xs:time" />
            <xs:attribute name="utc" use="required" type="xs:dateTime" />
        </xs:complexType>
    </xs:element>

    <xs:element name="geo">
        <xs:complexType>
            <xs:sequence minOccurs="0" maxOccurs="1">
                <xs:element ref="long" />
                <xs:element ref="lat" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="medalType">
        <xs:sequence>
            <xs:element minOccurs="1" maxOccurs="1" ref="value" />
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="event" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="identifierValueType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="identifier" use="required" type="xs:string" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:element name="value">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="type" use="optional" type="xs:string" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

</xs:schema>