<?xml version="1.0"  encoding ='UTF-8' ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

    <xsd:annotation>
        <xsd:documentation>
                                This is the xsd for StrataBugs generated XML files, for v2.0 of the data model.
				The following namespace will be used when released...
				targetNamespace="http://www.stratadata.co.uk"
				xmlns="http://www.stratadata.co.uk"
                                
                                Modified 14 Jul 2011 PDB - added sample age to well interpretation
        </xsd:documentation>
    </xsd:annotation>


    <xsd:element name="StrataBugs">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="Prologue" minOccurs="1" maxOccurs="1"/>
                <xsd:element ref="StratigraphicScheme" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="EnvironmentScheme" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="AbundanceScheme" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="TaxonList" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="TaxonGroup" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="GroupSet" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="UserList" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="Event" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="CompositeStandard" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="Well" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="Prologue">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Organisation" type="xsd:string"/>
                <xsd:element name="Location" type="xsd:string"/>
                <xsd:element name="Date" type="xsd:date" minOccurs="1"/>
                <xsd:element name="Software" type="xsd:string" minOccurs="0"/>                
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:simpleType name="SectionType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Borehole"/>
            <xsd:enumeration value="Outcrop"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="WellHeader">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="WellCode" type="xsd:string"/>
                <xsd:element name="Country" type="xsd:string"/>
                <xsd:element name="Type" type="SectionType"/>
                <xsd:element name="Units" type="UomType"/>
                <xsd:element name="Operator" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Ocs" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Quadrant" type="xsd:short" minOccurs="0"/>
                <xsd:element name="Block" type="xsd:short" minOccurs="0"/>
                <xsd:element name="SubBlock" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Field" type="xsd:string" minOccurs="0"/>
                <xsd:element name="County" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Latitude" type="xsd:double" minOccurs="0"/>
                <xsd:element name="LatitudeIndicator" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Longitude" type="xsd:double" minOccurs="0"/>
                <xsd:element name="LongitudeIndicator" type="xsd:string" minOccurs="0"/>
                <xsd:element name="GeodeticDatum" type="xsd:string" minOccurs="0"/>
                <xsd:element name="GridX" type="xsd:double" minOccurs="0"/>
                <xsd:element name="GridY" type="xsd:double" minOccurs="0"/>
                <xsd:element name="SpudDate" type="xsd:date" minOccurs="0"/>
                <xsd:element name="CompletionDate" type="xsd:date" minOccurs="0"/>
                <xsd:element name="TerminalDepth" type="xsd:double"/>
                <xsd:element name="DepthDatum" type="DepthDatumType" minOccurs="0"/>
                <xsd:element name="RotaryTableElevation" type="xsd:double" minOccurs="0"/>
                <xsd:element name="SeaLevel" type="xsd:double" minOccurs="0"/>
                <xsd:element name="SeaBed" type="xsd:double" minOccurs="0"/>
                <xsd:element name="KickOffDepth" type="xsd:double" minOccurs="0"/>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:simpleType name="UomType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="feet"/>
            <xsd:enumeration value="metres"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="DepthDatumType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="RTE"/>
            <xsd:enumeration value="SL"/>
            <xsd:enumeration value="SB"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="SampleType">
        <xsd:annotation>
            <xsd:documentation>
            Sample types are fixed in StrataBugs, to the following types:
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="CU"/>
            <xsd:enumeration value="CO"/>
            <xsd:enumeration value="SC"/>
            <xsd:enumeration value="OC"/>
            <xsd:enumeration value="LOG"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="DisciplineType">
        <xsd:annotation>
            <xsd:documentation>
            The discipline as a noun. More commony used is the abbreviated form below, to which this forms a key
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Micropalaeontology"/>
            <xsd:enumeration value="Nannopalaeontology"/>
            <xsd:enumeration value="Palynology"/>
            <xsd:enumeration value="Macropalaeontology"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="DisciplineID">
        <xsd:annotation>
            <xsd:documentation>
            The discipline ID, see above.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="M"/>
            <xsd:enumeration value="N"/>
            <xsd:enumeration value="P"/>
            <xsd:enumeration value="A"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:annotation>
        <xsd:documentation>Depositional (Vail),  Genetic (Galloway)</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleType name="SequenceModelType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="D"/>
            <xsd:enumeration value="G"/>
        </xsd:restriction>
    </xsd:simpleType>


    <xsd:annotation>
        <xsd:documentation>age information removed here 14 Jul 2011 and moved to WellInterpretation</xsd:documentation>
    </xsd:annotation>
    <xsd:element name="Sample">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="SampleID" type="xsd:int" minOccurs="1"/>
                <xsd:element name="TopDepth" type="xsd:double" minOccurs="0"/>
                <xsd:element name="BaseDepth" type="xsd:double" minOccurs="0"/>
                <xsd:element name="Depth" type="xsd:double" minOccurs="0"/>
                <xsd:element name="Type" type="SampleType" />
                <xsd:element name="GridX" type="xsd:double" minOccurs="0"/>
                <xsd:element name="GridY" type="xsd:double" minOccurs="0"/>
                <xsd:element name="Label" type="xsd:string" minOccurs="0"/>
                <xsd:element ref="Audit" minOccurs="0"/>
                <xsd:element name="Lithology" minOccurs="0" maxOccurs="100">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Description" type="xsd:string"/>
                            <xsd:element name="Code" type="xsd:int"/>
                            <xsd:element name="Percent" type="xsd:int"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>

                <xsd:element name="Analysis" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="AnalysisID" type="xsd:int" minOccurs="0"/>
                            <xsd:element ref="Audit" minOccurs="0"/>
                            <xsd:element name="Picker" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="Source" type="xsd:string" minOccurs="0"/>
                            <xsd:element ref="AnalysisType" />
                            <xsd:element name="FieldsOfView" type="xsd:int" minOccurs="0"/>
                            <xsd:element name="Notes" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="Weight" type="xsd:float" minOccurs="0"/>
                            <xsd:element name="CoarseFraction" type="xsd:float" minOccurs="0"/>
                            <xsd:element name="MediumFraction" type="xsd:float" minOccurs="0"/>
                            <xsd:element name="FineFraction" type="xsd:float" minOccurs="0"/>
                            <xsd:element name="Proximal" type="xsd:int" minOccurs="0"/>
                            <xsd:element name="Distal" type="xsd:int" minOccurs="0"/>
                            <xsd:element name="Occurrence" minOccurs="0" maxOccurs="unbounded">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="SpeciesID" type="xsd:int" minOccurs="1"/>
                                        <xsd:element name="Species" type="xsd:string" minOccurs="0"/>
                                        <xsd:element name="SpeciesAlphacode" type="xsd:string" minOccurs="0"/>
                                        <xsd:element name="Reworked" type="xsd:boolean" default="false" minOccurs="0"/>
                                        <xsd:element name="Questionable" type="xsd:boolean" default="false" minOccurs="0"/>
                                        <xsd:element name="Abundance" type="xsd:string" minOccurs="0"/>
                                        <xsd:element name="SpeciesCount" type="xsd:int" minOccurs="0"/>
                                        <xsd:element name="SpeciesCountCoarse" type="xsd:int" minOccurs="0"/>
                                        <xsd:element name="SpeciesCountFine" type="xsd:int" minOccurs="0"/>
                                        <xsd:element name="Caved" type="xsd:boolean" default="false" minOccurs="0"/>
                                        <xsd:element name="Marker" type="xsd:boolean" default="false" minOccurs="0"/>
                                        <xsd:element name="Preservation" type="xsd:string" minOccurs="0"/>
                                        <xsd:element name="Colour" type="xsd:string" minOccurs="0"/>
                                        <xsd:element name="Comment" type="xsd:string" minOccurs="0"/>
                                        <xsd:element name="SpeciesType" type="xsd:string" minOccurs="0"/>
                                        <xsd:element ref="Image"  minOccurs="0" maxOccurs="unbounded"/>
                                        <xsd:element ref="Audit"  minOccurs="0"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="Label" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="Event">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="ID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="SpeciesID" type="xsd:int" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="Paired" type="xsd:boolean" minOccurs="1"/>
                <xsd:element name="Generate" type="xsd:boolean" minOccurs="0"/>
                <xsd:element name="Description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="CompositeStandard">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="ID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="MinAge" type="xsd:double" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="MaxAge" type="xsd:double" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="TopCSU" type="xsd:double" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="BaseCSU" type="xsd:double" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="Units" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="CompositeStandardEvent" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="CompositeStandardEvent">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="EventID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="CSU" type="xsd:double" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="Type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="WellEvent">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="EventID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="SampleID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="Type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="Qualifier" type="xsd:string" minOccurs="0" maxOccurs="1"/>                
                <xsd:element name="Analyst" type="xsd:int" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="Source" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="Comments" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="Company" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="DisciplineID" type="DisciplineID" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Event" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="LOC">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="CompositeStandard" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="CompositeStandardID" type="xsd:int" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="LineWidth" type="xsd:float" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="Colour" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="Node" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Depth" type="xsd:double" minOccurs="1" maxOccurs="1"/>
                            <xsd:element name="CSU" type="xsd:double" minOccurs="1" maxOccurs="1"/>
                            <xsd:element name="Boundary" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Species" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="TaxonGroup">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="GroupName" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="GroupID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="Abbreviation" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="Colour" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="Audit" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="TaxonList" minOccurs="1" maxOccurs="1"/>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="GroupSet">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="SetName" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="SetID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element ref="Audit" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="TaxonGroup" minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="TaxonList">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Taxon" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Category" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                            <xsd:element name="GenusID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                            <xsd:element name="GQ1" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="Genus" type="taxonNameString"/>
                            <xsd:element name="GQ2" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="GQ3" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="SubGenus" type="taxonNameString" minOccurs="0"/>
                            <xsd:element name="GQ4" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="SpeciesID" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                            <xsd:element name="SQ1" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="Species" type="taxonNameString"/>
                            <xsd:element name="SQ2" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="SQ3" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="SubSpecies" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="SQ4" type="taxonQualifier" minOccurs="0"/>
                            <xsd:element name="Author" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="Year" type="xsd:gYear" minOccurs="0"/>
                            <xsd:element name="Alphacode" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="Reference" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="Notes" type="xsd:string" minOccurs="0"/>
                            <xsd:element ref="ImageSet"  minOccurs="0" maxOccurs="unbounded"/>
                        </xsd:sequence>
                        <xsd:attribute name="Species" type="xsd:string"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="AnalysisType">
        <xsd:simpleType>
            <xsd:restriction base="xsd:string">
                <xsd:enumeration value="Barren"/>
                <xsd:enumeration value="Prepared"/>
                <xsd:enumeration value="Analysed"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:element>

    <xsd:simpleType name="taxonQualifier">
        <xsd:annotation>
            <xsd:documentation>
			The qualifier should really be a restricted list element, though this is complex because the values
			are ordered,optional and in some cases match other qualifiers e.g. a pair of quotes. Just restrict length for now.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="9"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="taxonNameString">
        <xsd:annotation>
            <xsd:documentation>
				This type just restricts the maxlength of the name elements
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="30"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="StratigraphicScheme">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="SchemeType" type="xsd:string" minOccurs="1"/>
                <xsd:element name="SchemeName" type="xsd:string" minOccurs="1"/>
                <xsd:element name="SchemeID" type="xsd:int" minOccurs="1"/>
                <xsd:element name="Discipline" type="DisciplineType" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="SequenceModel" type="SequenceModelType" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="Audit" minOccurs="0"/>
                <xsd:element name="Unit" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="UnitName" type="xsd:string" minOccurs="1"/>
                            <xsd:element name="Abbreviation" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                            <xsd:element name="Type" type="xsd:string" minOccurs="1"/>
                            <xsd:element name="Youngest" type="xsd:double"/>
                            <xsd:element name="Oldest" type="xsd:double"/>
                            <xsd:element name="DictionaryID" type="xsd:int" minOccurs="1"/>
                            <xsd:element ref="Colour" minOccurs="0"/>
                            <xsd:element ref="Audit" minOccurs="0"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element name="Surface" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="SurfaceID" type="xsd:int" minOccurs="1"/>
                            <xsd:element name="Name" type="xsd:string" minOccurs="1"/>
                            <xsd:element name="Type" type="xsd:string" minOccurs="1"/>
                            <xsd:element name="Age" type="xsd:double"/>
                            <xsd:element ref="Audit" minOccurs="0"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="EnvironmentScheme">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="SchemeName" type="xsd:string" minOccurs="0"/>
                <xsd:element name="SchemeID" type="xsd:int" minOccurs="0"/>
                <xsd:element name="Member" minOccurs="1" maxOccurs="20">             <!-- updated this from 12 to 20 6 Feb 2014 -->
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Term" type="xsd:string" minOccurs="1"/>
                            <xsd:element ref="Colour" minOccurs="0"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="AbundanceScheme">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="SchemeID" type="xsd:int" minOccurs="0"/>
                <xsd:element name="SchemeName" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Category" minOccurs="1" maxOccurs="12"> 
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Name" type="xsd:string"/>
                            <xsd:element name="Entry" type="xsd:string"/>
                            <xsd:element name="LowBound" type="xsd:short"/>
                            <xsd:element name="OutputValue" type="xsd:short" minOccurs="0"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="UserList">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="User" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="UserID" type="xsd:int" minOccurs="1"/>
                            <xsd:element name="UserName" type="xsd:string" minOccurs="1"/>
                            <xsd:element name="Abbreviation" type="xsd:string" minOccurs="1"/>
                            <xsd:element name="DisciplineID" type="DisciplineID" minOccurs="0"/>
                        </xsd:sequence>
                        <xsd:attribute name="Name" type="xsd:string"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="Image">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="ImageID" type="xsd:int" minOccurs="1"/>
                <xsd:element name="File" type="xsd:string" minOccurs="1"/>
                <xsd:element name="Caption" type="xsd:string" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="ImageSet">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="Image" minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="Audit">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Created" type="xsd:date" minOccurs="0"/>
                <xsd:element name="Creator" type="xsd:int" minOccurs="0"/>
                <xsd:element name="Modified" type="xsd:date" minOccurs="0"/>
                <xsd:element name="Modifier" type="xsd:int" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="Colour">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Red">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:int">
                            <xsd:minInclusive value="0"/>
                            <xsd:maxInclusive value="255"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="Green">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:int">
                            <xsd:minInclusive value="0"/>
                            <xsd:maxInclusive value="255"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="Blue">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:int">
                            <xsd:minInclusive value="0"/>
                            <xsd:maxInclusive value="255"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="AgeAudit">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Created" type="xsd:date" minOccurs="0"/>
                <xsd:element name="Creator" type="xsd:int" minOccurs="0"/>
                <xsd:element name="Modified" type="xsd:date" minOccurs="0"/>
                <xsd:element name="Modifier" type="xsd:int" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="CasingPoint">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Depth" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Diameter" type="xsd:string" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Depth" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="CoredInterval">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="CoreNumber" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Recovered">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:enumeration value="Yes"/>
                            <xsd:enumeration value="No"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="TopDepth" type="xsd:string" minOccurs="0"/>
                <xsd:element name="BaseDepth" type="xsd:string" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Depth" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="Well">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="WellHeader" minOccurs="0"/>
                <xsd:element ref="AnalystHeader" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="Sample" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="WellInterpretation" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="CasingPoint" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="CoredInterval" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="CoreShift" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="SeismicMarker" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="DeviationSurvey" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="TWTList" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="LithologyInterval" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="LithologyQualifier" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="Name" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="SeismicMarker">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Depth" type="xsd:string" minOccurs="1"/>
                <xsd:element name="Name" type="xsd:string" minOccurs="0"/>
                <xsd:element ref="Colour" minOccurs="0"/>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
        
    <xsd:element name="DeviationSurvey">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Header" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="TVDData" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="DrilledDepth" type="xsd:string" minOccurs="1"/>
                            <xsd:element name="TVDepth" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="Inclination" type="xsd:float" minOccurs="0"/>
                            <xsd:element name="Azimuth" type="xsd:float" minOccurs="0"/>                            
                            <xsd:element name="VerticalSection" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="North" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="East" type="xsd:string" minOccurs="0"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="CoreShift">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="CoreShiftDepth" minOccurs="0">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Depth" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="Shift" type="xsd:string" minOccurs="0"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="TWTList">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="TWTData" minOccurs="0">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="DrilledDepth" type="xsd:string" minOccurs="0"/>
                            <xsd:element name="TWT" type="xsd:string" minOccurs="0"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="LithologyInterval">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Lithology" type="xsd:string" minOccurs="0"/>
                <xsd:element name="TopDepth" type="xsd:string" minOccurs="0"/>
                <xsd:element name="BaseDepth" type="xsd:string" minOccurs="0"/>
                <xsd:element name="LithologyID" type="xsd:int" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Depth" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="LithologyQualifier">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Lithology" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Type" minOccurs="0">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:enumeration value="Accessory"/>
                            <xsd:enumeration value="Stringer"/>
                            <xsd:enumeration value="Qualifier"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="Depth" type="xsd:string" minOccurs="0"/>
                <xsd:element name="LithologyID" type="xsd:int" minOccurs="0"/>
                <xsd:element name="PlotPosition" type="xsd:float" minOccurs="0"/>
                <xsd:element name="Alignment" minOccurs="0">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:enumeration value="Left"/>
                            <xsd:enumeration value="Right"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="Width" type="xsd:float" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="Depth" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="AnalystHeader">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="AnalysisID" type="xsd:int" minOccurs="1" maxOccurs="1"/>                  <!-- updated this from 0 to 1 on  6 Feb 2014 -->
                <xsd:element name="DisciplineID" type="DisciplineID" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="Analyst" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="AnalysisNumber" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                <xsd:element name="DateFrom" type="xsd:date" minOccurs="0"/>
                <xsd:element name="DateTo" type="xsd:date" minOccurs="0"/>
                <xsd:element name="DepthFrom" type="xsd:string" minOccurs="0"/>
                <xsd:element name="DepthTo" type="xsd:string" minOccurs="0"/>
                <xsd:element name="Comments" type="xsd:string" minOccurs="0"/>
                <xsd:element name="EnvironmentSchemeID" type="xsd:int" minOccurs="0"/>
                <xsd:element name="AbundanceSchemeID" type="xsd:int" minOccurs="0"/>
                <xsd:element ref="Audit" minOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="DisciplineID" type="DisciplineID"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="SampleAge">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="SampleID" type="xsd:int" minOccurs="1"/>
                <xsd:element name="Age" type="xsd:double" minOccurs="0"/>
                <xsd:element name="AgeBelowUnconformity" type="xsd:double" minOccurs="0"/>
                <xsd:element name="AgeErrorPlus" type="xsd:float" minOccurs="0"/>
                <xsd:element name="AgeErrorMinus" type="xsd:float" minOccurs="0"/>
                <xsd:element name="Ratio" type="xsd:double" minOccurs="0"/>
                <xsd:element ref="AgeAudit" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="WellInterpretation">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="WellInterpretationID" type="xsd:int" minOccurs="1"/>
                <xsd:choice maxOccurs="unbounded">
                    <xsd:element name="IGDInterval" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="TopSampleDepth" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="BaseSampleDepth" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="Type" type="xsd:string" minOccurs="1"/>
                                <xsd:element name="Level" type="xsd:string" minOccurs="1"/>
                                <xsd:element name="SchemeID" type="xsd:int" minOccurs="1"/>
                                <xsd:element name="TopSampleID" type="xsd:int" minOccurs="1"/>
                                <xsd:element name="BaseSampleID" type="xsd:int" minOccurs="1"/>
                                <xsd:element name="TopAnalyst" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="BaseAnalyst" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="Separator" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="UpperDictionaryID" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="UpperInformalUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="UpperUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="LowerDictionaryID" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="LowerInformalUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="LowerUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="UpperBoundary" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="LowerBoundary" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="UpperQuestionable" minOccurs="0">
                                    <xsd:simpleType>
                                        <xsd:restriction base="xsd:string">
                                            <xsd:enumeration value="Yes"/>
                                            <xsd:enumeration value="No"/>
                                        </xsd:restriction>
                                    </xsd:simpleType>
                                </xsd:element>
                                <xsd:element name="LowerQuestionable" minOccurs="0">
                                    <xsd:simpleType>
                                        <xsd:restriction base="xsd:string">
                                            <xsd:enumeration value="Yes"/>
                                            <xsd:enumeration value="No"/>
                                        </xsd:restriction>
                                    </xsd:simpleType>
                                </xsd:element>
                                <xsd:element ref="Audit" minOccurs="0"/>
                            </xsd:sequence>
                            <xsd:attribute name="Depth" type="xsd:string"/>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element name="EnvironmentInterval" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="Palaeoenvironments" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="EnvironmentSchemeID" type="xsd:int" minOccurs="1"/>
                                <xsd:element name="TopSampleID" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="BaseSampleID" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="UpperProximalUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="UpperDistalUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="LowerProximalUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="LowerDistalUnit" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="EnvironmentQualifier" type="xsd:string" minOccurs="0"/>
                                <xsd:element ref="Audit" minOccurs="0"/>
                            </xsd:sequence>
                            <xsd:attribute name="Depth" type="xsd:string"/>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element name="BiostratigraphicComment" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="TopSampleID" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="BaseSampleID" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="DisciplineID" type="DisciplineID" minOccurs="0"/>
                                <xsd:element name="Analyst" type="xsd:int" minOccurs="0"/>
                                <xsd:element name="Source" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="Comment" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
                                <xsd:element ref="Audit" minOccurs="0"/>
                            </xsd:sequence>
                            <xsd:attribute name="Depth" type="xsd:string"/>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element name="SequencePick" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="SampleID" type="xsd:int" minOccurs="1"/>
                                <xsd:element name="SurfaceID" type="xsd:int" minOccurs="1"/>
                                <xsd:element name="SchemeID" type="xsd:int" minOccurs="1"/>
                                <xsd:element name="Name" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="Questionable" type="xsd:boolean" minOccurs="0"/>
                                <xsd:element name="Boundary" type="xsd:string" minOccurs="0"/>
                                <xsd:element ref="Audit" minOccurs="0"/>
                            </xsd:sequence>
                            <xsd:attribute name="Depth" type="xsd:string"/>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element name="IntervalComment" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="TopDepth" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="BaseDepth" type="xsd:string" minOccurs="0"/>
                                <xsd:element name="Comment" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
                                <xsd:element ref="Audit" minOccurs="0"/>
                            </xsd:sequence>
                            <xsd:attribute name="Depth" type="xsd:string"/>
                        </xsd:complexType>
                    </xsd:element>
                    <xsd:element ref="LOC" minOccurs="0" maxOccurs="1"/>
                    <xsd:element ref="WellEvent" minOccurs="0" maxOccurs="unbounded"/>
                    <xsd:element ref="SampleAge" minOccurs="0" maxOccurs="unbounded"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="Description" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

</xsd:schema>