<?xml version="1.0"?>
<xsd:schema
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://geocaching.com.au/geocache/1"
	targetNamespace="http://geocaching.com.au/geocache/1"
	attributeFormDefault="unqualified"
	elementFormDefault="qualified"
>
  <xsd:element name="geocache">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="name"	type="xsd:string"/>
        <xsd:element name="owner"	type="xsd:string"/>
        <xsd:element name="locale"	type="xsd:string" minOccurs="0"/>
        <xsd:element name="state"		type="xsd:string" minOccurs="0"/>
        <xsd:element name="country"	type="xsd:string" minOccurs="0"/>

	      <xsd:element name="type" minOccurs="0">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="Traditional"/>
							<xsd:enumeration value="Multi"/>
							<xsd:enumeration value="Virtual"/>
							<xsd:enumeration value="Webcam"/>
							<xsd:enumeration value="Event"/>
							<xsd:enumeration value="Other"/>
							<xsd:enumeration value="Locationless"/>
							<xsd:enumeration value="Unknown Cache"/>
							<xsd:enumeration value="benchmark"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>

	      <xsd:element name="container" minOccurs="0">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="Virtual"/>
							<xsd:enumeration value="Nano"/>
							<xsd:enumeration value="Micro"/>
							<xsd:enumeration value="Small"/>
							<xsd:enumeration value="Regular"/>
							<xsd:enumeration value="Large"/>
							<xsd:enumeration value="Other"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>

        <xsd:element name="difficulty" minOccurs="0">
					<xsd:simpleType>
						<xsd:restriction base="xsd:decimal">
							<xsd:minInclusive value="1"/>
							<xsd:maxInclusive value="5"/>
							<xsd:fractionDigits value="1"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>

        <xsd:element name="terrain" minOccurs="0">
					<xsd:simpleType>
						<xsd:restriction base="xsd:decimal">
							<xsd:minInclusive value="1"/>
							<xsd:maxInclusive value="5"/>
							<xsd:fractionDigits value="1"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>

        <xsd:element name="summary" minOccurs="0">
          <xsd:complexType>
            <xsd:simpleContent >
              <xsd:extension base="xsd:string">
                <xsd:attribute name="html" type="xsd:boolean"/>
              </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>

        <xsd:element name="description" minOccurs="0">
          <xsd:complexType>
            <xsd:simpleContent >
              <xsd:extension base="xsd:string">
                <xsd:attribute name="html" type="xsd:boolean"/>
              </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>

        <xsd:element name="hints" type="xsd:string" minOccurs="0"/>

        <xsd:element name="licence"	type="xsd:string"/>

        <xsd:element name="logs" minOccurs="0">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="log" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:sequence>

                    <xsd:element name="time"			type="xsd:dateTime"/>
                    <xsd:element name="geocacher"	type="xsd:string"/>

							      <xsd:element name="type">
											<xsd:simpleType>
												<xsd:restriction base="xsd:string">
													<xsd:enumeration value="Found"/>
													<xsd:enumeration value="Didn't find it"/>
													<xsd:enumeration value="Not Attempted"/>
													<xsd:enumeration value="Note"/>
													<xsd:enumeration value="Other"/>
													<xsd:enumeration value="Will Attend"/>
													<xsd:enumeration value="Attended"/>
													<xsd:enumeration value="Publish Listing"/>
													<xsd:enumeration value="Retract Listing"/>
													<xsd:enumeration value="Needs Archived"/>
													<xsd:enumeration value="Temporarily Disable"/>
													<xsd:enumeration value="Enable Listing"/>
													<xsd:enumeration value="Needs Maintenance"/>
													<xsd:enumeration value="Owner Maintenance"/>
													<xsd:enumeration value="Webcam Photo Taken"/>
													<xsd:enumeration value="Archive"/>
													<xsd:enumeration value="Unarchive"/>
												</xsd:restriction>
											</xsd:simpleType>
										</xsd:element>

                    <xsd:element name="text" maxOccurs="unbounded">
                      <xsd:complexType>
                        <xsd:simpleContent >
                          <xsd:extension base="xsd:string">
                            <xsd:attribute name="encoding" type="xsd:string"/>
                          </xsd:extension>
                        </xsd:simpleContent>
                      </xsd:complexType>
                    </xsd:element>

                    <xsd:element name="coords" minOccurs="0">
                      <xsd:complexType>
                        <xsd:attribute name="lat" type="xsd:decimal"/>
                        <xsd:attribute name="lon" type="xsd:decimal"/>
                      </xsd:complexType>
                    </xsd:element>

                    <xsd:element name="log_wpt" minOccurs="0">
                      <xsd:complexType>
                        <xsd:attribute name="lat" type="xsd:decimal"/>
                        <xsd:attribute name="lon" type="xsd:decimal"/>
                      </xsd:complexType>
                    </xsd:element>

                  </xsd:sequence>

                  <xsd:attribute name="id" type="xsd:string"/>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>

			</xsd:sequence>

      <xsd:attribute name="id" type="xsd:string"/>
      <xsd:attribute name="status">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="Draft"/>
						<xsd:enumeration value="Available"/>
						<xsd:enumeration value="Unavailable"/>
						<xsd:enumeration value="Archived"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>

    </xsd:complexType>
  </xsd:element>
</xsd:schema>
