<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	   elementFormDefault="qualified">
  <xs:annotation>
    <xs:documentation>
      Copyright (C) 2002-2011  The FreeCol Team

      This file is part of FreeCol.

      FreeCol is free software: you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
      the Free Software Foundation, either version 2 of the License, or
      (at your option) any later version.

      FreeCol is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
      GNU General Public License for more details.

      You should have received a copy of the GNU General Public License
      along with FreeCol. If not, see http://www.gnu.org/licenses
    </xs:documentation>
  </xs:annotation>

  <xs:include schemaLocation="data-common.xsd" />
  <xs:include schemaLocation="data-nationOptions.xsd" />
  <xs:include schemaLocation="data-player.xsd" />
  <xs:include schemaLocation="data-map.xsd" />
  <xs:include schemaLocation="data-modelMessage.xsd" />
  <xs:include schemaLocation="data-specification.xsd" />

  <xs:element name="game">
    <xs:annotation>
      <xs:documentation>
	This class contains the game.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>

      <xs:choice minOccurs="0" maxOccurs="unbounded">
	<xs:element ref="gameOptions" />
	<xs:element ref="nationOptions" />
	<xs:element ref="mapGeneratorOptions" />
	<xs:element ref="player" />
	<xs:element ref="map" />
	<xs:element ref="modelMessage" />
        <xs:element ref="cibola" />
        <xs:element ref="freecol-specification" />
        <xs:element name="newWorld" />
      </xs:choice>

      <xs:attribute name="ID" type="GameId" use="required" />
      <xs:attribute name="UUID" type="xs:string" use="optional" />
      <xs:attribute name="turn" type="xs:int" use="required" />
      <xs:attribute name="spanishSuccession" type="xs:boolean" use="optional"
		    default="false" />
      <xs:attribute name="currentPlayer" type="PlayerId" use="optional" >
        <xs:annotation>
          <xs:documentation>
	    May be absent in map files.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>

      <xs:attribute name="nextID" type="xs:int" use="required" />

    </xs:complexType>
  </xs:element>

  <xs:element name="cibola">
    <xs:complexType>
      <xs:attribute name="id" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="gameOptions">
    <xs:annotation>
      <xs:documentation>
	This class contains the game options.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>

      <xs:choice minOccurs="0" maxOccurs="unbounded">
	<xs:element ref="booleanOption" />
	<xs:element ref="integerOption" />
	<xs:element ref="selectOption" />
      </xs:choice>

    </xs:complexType>
  </xs:element>

  <xs:element name="mapGeneratorOptions">
    <xs:annotation>
      <xs:documentation>
	This class contains the game options.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>

      <xs:choice minOccurs="0" maxOccurs="unbounded">
	<xs:element ref="booleanOption" />
	<xs:element ref="integerOption" />
	<xs:element ref="selectOption" />
	<xs:element ref="fileOption" />
      </xs:choice>

    </xs:complexType>
  </xs:element>

</xs:schema>
