<?xml version='1.0' encoding='UTF-8'?>
<!-- The element annotations in this document are drawn from the appropriate standard.  -->
<!-- For EML - see https://eml.ecoinformatics.org/ -->
<!-- For NCD - see Natural Collections Descriptions (NCD) v0.9 2008  http://wiki.tdwg.org/twiki/bin/viewfile/NCD/WebHome?rev=1;filename=NCD-v090_TDWG.doc -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.3"
  xmlns:eml="https://eml.ecoinformatics.org/eml-2.2.0" elementFormDefault="qualified"
  xmlns:dc="http://purl.org/dc/terms/">
  <xs:import namespace="https://eml.ecoinformatics.org/eml-2.2.0" schemaLocation="eml.xsd"/>
  <xs:import namespace="http://purl.org/dc/terms/" schemaLocation="dc.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
    schemaLocation="http://rs.gbif.org/schema/xml.xsd"/>
  <xs:element name="dataset">
    <xs:annotation>
      <xs:documentation>The dataset element is a wrapper for all other elements relating to a single dataset</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="alternateIdentifier" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="shortName" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The 'shortName' field provides a concise name that describes the resource that is being documented. It is the appropriate place to store a filename associated with other storage systems.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="title" maxOccurs="unbounded"/>
        <!-- Original creator of the dataset/resource, not necessarily the agent authoring the eml file nor the primary contact -->
        <xs:element name="creator" type="agentType" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The creator is the person who created the resource (not necessarily the author of this metadata about the resource). This is the person or institution to contact with questions about the use, interpretation of a dataset.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <!-- "Metadata author" the agent authoring the eml file -->
        <xs:element name="metadataProvider" type="agentType" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The party responsible for the creation of the metadata document</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="associatedParty" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="pubDate"/>
        <xs:element ref="language" minOccurs="0"/>
        <xs:element ref="abstract"/>
        <xs:element ref="keywordSet" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="additionalInfo" minOccurs="0"/>
        <xs:element ref="intellectualRights" minOccurs="0"/>
        <xs:element ref="licensed" minOccurs="0"/>
        <xs:element ref="distribution" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="coverage" minOccurs="0"/>
        <xs:element ref="purpose" minOccurs="0"/>
        <xs:element ref="introduction" minOccurs="0"/>
        <xs:element ref="gettingStarted" minOccurs="0"/>
        <xs:element ref="acknowledgements" minOccurs="0"/>
        <xs:element minOccurs="0" name="maintenance">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="description"/>
              <xs:element name="maintenanceUpdateFrequency" type="MaintUpFreqType"/>
              <xs:element name="changeHistory" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>A description of changes made to the data since
                    its release.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="changeScope" type="NonEmptyStringType">
                      <xs:annotation>
                        <xs:documentation>The expression should unambiguously identify
                          the entity(s) and attribute(s) that were
                          changed.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="oldValue" type="NonEmptyStringType">
                      <xs:annotation>
                        <xs:documentation>The previous value or an expression that
                          describes the previous value of the
                          data.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="changeDate" type="xs:date">
                      <xs:annotation>
                        <xs:documentation>The date the changes were applied.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="comment" type="NonEmptyStringType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Explanation or justification for the change
                          made to the data.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <!-- Current primary contact for the dataset. The creator of the resource might be dead, left the organisation or doesn't want to be bothered. -->
        <xs:element name="contact" type="agentType" maxOccurs="unbounded"/>
        <xs:element name="publisher" type="agentType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The publisher of this data set. This is typically an institution that is making the data available in a published (ie, citable) format.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="methods" minOccurs="0"/>
        <xs:element ref="project" minOccurs="0"/>
        <xs:element name="literatureCited" type="CitationListType" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>A citation to articles or products which were referenced
              in the dataset or its associated metadata. The list represents the bibliography
              of works related to the dataset, whether for reference, comparison, or others
              purposes.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="alternateIdentifier" type="xs:string">
    <xs:annotation>
      <xs:documentation>This is the only identifier issued by the IPT for the metadata document; it is a UUID</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:simpleType name="MaintUpFreqType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="annually"/>
      <xs:enumeration value="asNeeded"/>
      <xs:enumeration value="biannually"/>
      <xs:enumeration value="continually"/>
      <xs:enumeration value="daily"/>
      <xs:enumeration value="irregular"/>
      <xs:enumeration value="monthly"/>
      <xs:enumeration value="notPlanned"/>
      <xs:enumeration value="weekly"/>
      <xs:enumeration value="unknown"/>
      <xs:enumeration value="unkown"/>  <!-- deprecated, keep for compat., spelling error from prior version -->
      <xs:enumeration value="otherMaintenancePeriod"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="agentType">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded" minOccurs="1">
        <xs:element name="organizationName" type="NonEmptyStringType">
          <xs:annotation>
            <xs:documentation>The full name of the organization that is associated with the resource. This field is intended to describe which institution or overall organization is associated with the resource being described.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="individualName"/>
        <xs:element name="positionName" type="NonEmptyStringType">
          <xs:annotation>
            <xs:documentation>This field is intended to be used instead of a particular person or full organization name. If the associated person who holds the role changes frequently, then Position Name would be used for consistency. E.g., GBIF Data Manager.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element ref="address" minOccurs="0"/>
      <xs:element ref="phone" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element ref="electronicMailAddress" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element ref="onlineUrl" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element ref="userId" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="id" type="IDType" use="optional"/>
    <xs:attribute name="system" type="SystemType" use="optional"/>
    <xs:attribute name="scope" type="ScopeType" use="optional"/>
  </xs:complexType>
  <xs:complexType name="agentWithRoleType">
    <xs:complexContent>
      <xs:extension base="agentType">
        <xs:sequence>
          <xs:element ref="role"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="associatedParty" type="agentWithRoleType">
    <xs:annotation>
      <xs:documentation>A party associated with the resource. Parties have particular roles.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="pubDate" type="yearDate">
    <xs:annotation>
      <xs:documentation>The date on which the resource was published</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="language" type="NonEmptyStringType">
    <xs:annotation>
      <xs:documentation>The language in which the resource (not the metadata document) is written</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="abstract" type="TextType">
    <xs:annotation>
      <xs:documentation>A brief overview describing the dataset</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="keywordSet">
    <xs:annotation>
      <xs:documentation>A wrapper element for the keyword and keywordThesaurus elements</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="keyword" type="NonEmptyStringType" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>This field names a keyword or key phrase that concisely describes the resource or is related to the resource. Each keyword field should contain one and only one keyword</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="keywordThesaurus" type="NonEmptyStringType">
          <xs:annotation>
            <xs:documentation>The name of the official keyword thesaurus from which keyword was derived</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="additionalInfo">
    <xs:annotation>
      <xs:documentation>Any information that is not characterized by the other resource metadata fields</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="para"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="intellectualRights">
    <xs:annotation>
      <xs:documentation>Contain a rights management statement for the resource, or reference a service providing such information</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="para"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="licensed">
    <xs:annotation>
      <xs:documentation>This element provides information on how the resource is licensed and what rights may be available to users. GBIF only supports the following licenses CC0, CC BY and CC BY-NC. By default, the license provided here applies to all the dataset records.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="licenseName" type="NonEmptyStringType" minOccurs="1">
          <xs:annotation>
            <xs:documentation>The official name of a license that applies to the data and metadata described in this metadata record.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="url" type="xs:anyURI" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The persistent URL for the license, typically a SPDX URL, or an official URL from another well-known license vocabulary.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="identifier" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The official identifier for the license, which should be drawn from the SPDX license vocabulary, or a similar well-known license vocabulary.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="coverage">
    <xs:annotation>
      <xs:documentation>Describes the extent of the coverage of the resource in terms of its spatial extent, temporal extent, and taxonomic extent</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="geographicCoverage" maxOccurs="1"/>
        <xs:element ref="temporalCoverage" maxOccurs="1"/>
        <xs:element ref="taxonomicCoverage" maxOccurs="1"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="geographicCoverage">
    <xs:annotation>
      <xs:documentation>A container for spatial information about a resource; allows a bounding box for the overall coverage (in lat long), and also allows description of arbitrary polygons with exclusions.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="geographicDescription" type="NonEmptyStringType" minOccurs="1">
          <xs:annotation>
            <xs:documentation>A short text description of a dataset's geographic areal domain. A text description is especially important to provide a geographic setting when the extent of the dataset cannot be well described by the "boundingCoordinates".</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="boundingCoordinates">
          <xs:annotation>
            <xs:documentation>Bounding Coordinates are the four margins (N, S, E, W) of a bounding box, or when considered in lat-lon pairs, the corners of the box.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="westBoundingCoordinate" type="xs:decimal">
                <xs:annotation>
                  <xs:documentation>The westBoundingCoordinate field defines the longitude of the western-most point of the bounding box that is being described.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="eastBoundingCoordinate" type="xs:decimal">
                <xs:annotation>
                  <xs:documentation>The eastBoundingCoordinate field defines the longitude of the eastern-most point of the bounding box that is being described.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="northBoundingCoordinate" type="xs:decimal">
                <xs:annotation>
                  <xs:documentation>The northBoundingCoordinate field defines the latitude of the northern-most point of the bounding box that is being described.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="southBoundingCoordinate" type="xs:decimal">
                <xs:annotation>
                  <xs:documentation>The southBoundingCoordinate field defines the latitude of the southern-most point of the bounding box that is being described.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="temporalCoverage">
    <xs:annotation>
      <xs:documentation>This field specifies temporal coverage, and allows coverages to be a single point in time, multiple points in time, or a range of dates. </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:choice>
        <xs:element name="rangeOfDates">
          <xs:annotation>
            <xs:documentation>The 'RangeOfDates' field is intended to be used for describing a range of dates and/or times. It may be used multiple times to document multiple date ranges. It allows for two 'singleDateTime' fields, the first to be used as the beginning dateTime, and the second to be used as the ending dateTime of the range.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="beginDate" type="calendarDate">
                <xs:annotation>
                  <xs:documentation>A single time stamp signifying the beginning of some time period</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="endDate" type="calendarDate">
                <xs:annotation>
                  <xs:documentation>A single time stamp signifying the end of some time period</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="singleDateTime" type="calendarDate">
          <xs:annotation>
            <xs:documentation>The SingleDateTime field is intended to describe a single date and time for an event</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="taxonomicCoverage">
    <xs:annotation>
      <xs:documentation>Taxonomic Coverage is a container for taxonomic information about a resource. It includes a list of species names (or higher level ranks) from one or more classification systems.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="generalTaxonomicCoverage" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>A general description of the range of taxa addressed in the data set or collection</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="taxonomicClassification" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Information about the range of taxa addressed in the dataset or collection</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="taxonRankName" type="NonEmptyStringType" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>The name of the taxonomic rank for which the Taxon rank value is provided, e.g., Phylum, Class, Genus, Species</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="taxonRankValue" type="NonEmptyStringType">
                <xs:annotation>
                  <xs:documentation>The name representing the taxonomic rank of the taxon being described</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="commonName" type="NonEmptyStringType" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>Applicable common names; these common names may be general descriptions of a group of organisms if appropriate, e.g., invertebrates, waterfowl</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="purpose" type="TextType">
    <xs:annotation>
      <xs:documentation>A synopsis of the purpose of this dataset. It may include one or more paragraphs, including a summary of key findings if appropriate.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="introduction" type="TextType">
    <xs:annotation>
      <xs:documentation>One to many paragraphs that provide background and context for the dataset with appropriate figures and references.  This is similar to the introduction for a journal article, and would include, for example, project objectives, hypotheses being addressed, what is known about the pattern or process under study, how the data have been used to date (including references), and how they could be used in the future.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="gettingStarted" type="TextType">
    <xs:annotation>
      <xs:documentation>One or more paragraphs describing the dataset's overall interpretation, content and structure. For example, the number and names of data files, the types of measurements that they contain, how those data files fit
together in an overall design, and how they relate to the data collection methods, experimental design, and sampling design described in other EML sections. One might describe any specialized software that is available and/or may be necessary for analyzing or interpreting the data, and possibly include a high-level description of data formats if they are unusual.
</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="acknowledgements" type="TextType">
    <xs:annotation>
      <xs:documentation>One or more sentences that acknowledge funders and other key contributors to the study (excluding the dataset authors listed in the creator field). Note that funding awards are also listed by award number in the award section, which provides a structured list of funders, award numbers, and award URIs for the dataset.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="methods">
    <xs:annotation>
      <xs:documentation>The methods field documents scientific methods used in the collection of this dataset. It includes information on items such as tools, instrument calibration and software.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="methodStep" type="description">
          <xs:annotation>
            <xs:documentation>The methodStep field allows for repeated sets of elements that document a series of procedures followed to produce a data object. These include text descriptions of the procedures, relevant literature, software, instrumentation, source data and any quality control measures taken.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="sampling" minOccurs="0">
          <xs:annotation>
            <xs:documentation>Description of sampling procedures including the geographic, temporal and taxonomic coverage of the study.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="studyExtent" type="description">
                <xs:annotation>
                  <xs:documentation>The field studyExtent represents both a specific sampling area and the sampling frequency (temporal boundaries, frequency of occurrence). The geographic studyExtent is usually a surrogate (representative area of) for the larger area documented in the "studyAreaDescription". </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="samplingDescription">
                <xs:annotation>
                  <xs:documentation>The samplingDescription field allows for a text-based/human readable description of the sampling procedures used in the research project. The content of this element would be similar to a description of sampling procedures found in the methods section of a journal article.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element ref="para"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="qualityControl" type="description" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The qualityControl field provides a location for the description of actions taken to either control or assess the quality of data resulting from the associated method step. </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="project" type="projectType">
    <xs:annotation>
      <xs:documentation>The project field contains information on the project in which this dataset was collected. It includes information such as project personnel, funding, study area, project design and related projects.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="projectType">
    <xs:choice>
      <xs:sequence>
        <xs:element ref="title"/>
        <xs:element name="personnel" type="agentWithRoleType" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The Personnel field extends ResponsibleParty with role information and is used to document people involved in a research project by providing contact information and their role in the project. </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="abstract" minOccurs="0"/>
        <xs:element name="funding" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The funding field is used to provide information about funding sources for the project such as: grant and contract numbers; names and addresses of funding sources.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="para"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="award" type="awardType" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The award field is used to provide specific information about the funding awards for a project in a structured format. Sub-fields are provided for the name of the funding agency, the Open Funder Registry identifiers for the agency and program that made the award, the award number assigned, the title of the award, and the URL to the award page describing the award. In general, the funding agency should be listed with a cross-reference to the appropriate identifier from the Open Funder Registry (included in the EML distribution but updated periodically from the Open Funder Registry).
</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="studyAreaDescription" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The studyAreaDescription field documents the physical area associated with the research project. It can include descriptions of the geographic, temporal, and taxonomic coverage of the research location and descriptions of domains (themes) of interest such as climate, geology, soils or disturbances.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="descriptor"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="designDescription" type="description" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The field designDescription contains general textual descriptions of research design. It can include detailed accounts of goals, motivations, theory, hypotheses, strategy, statistical design, and actual work. </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="relatedProject" type="relatedProjectType" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>This field is a recursive link to another project. This allows projects to be nested under one another in the case where one project spawns another.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="id" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation>A unique identifier for the project. This can be used to link multiple datasets that are associated in some way with the same project.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="relatedProjectType">
    <xs:choice>
      <xs:sequence>
        <xs:element ref="title"/>
        <xs:element name="personnel" type="agentWithRoleType" maxOccurs="unbounded"/>
        <xs:element ref="abstract" minOccurs="0"/>
      </xs:sequence>
    </xs:choice>
    <xs:attribute name="id" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation>A unique identifier for the project. This can be used to link multiple datasets that are associated in some way with the same project.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="awardType">
    <xs:annotation>
      <xs:documentation>The awardType is used to enter information about a funding award
        associated with a project.  The containing project contains the list of
        investigators and for the award, while the `award` field contains specifics
        such as the agency name, award number, and funding program identifiers.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="funderName" type="NonEmptyStringType" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The name of the funding institution, with fully expanded acronyms
            to show the full, official name of the funding agency. In general, this should match
            the official name of the funder as listed in an Authority such as the Open
            Funder Registry.  The Open Funder Registry and other organizational authorities may
            provide a list of other alternative names for the funding agency.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="funderIdentifier" type="NonEmptyStringType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>The funder identifier is used to provide one or more
            canonical identifiers that reference the funder.  These identifiers
            should be globally unique.  The most common form of a funder identifier
            is a DOI identifier of an institution or program drawn from the CrossRef
            Open Funder Registry (https://gitlab.com/crossref/open_funder_registry),
            which assigns DOIs to each funding agency and to their programs, and
            links these together in a navigable hierarchy.  A copy of the current
            Funder Registry is included as an RDF file with EML for reference, but
            as the list is constantly growing, users can retrieve new copies of the
            RDF file to get updates and current metadata about funders.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="awardNumber" type="NonEmptyStringType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The awardNumber field provides the unique identifier used by
            the funder to uniquely identify an award.  These are typically alphanumeric values
            that are unique within the system used by a given funder.  The number should be listed
            using the canonical form that each funder uses to express its award numbers, and not
            be prefixed or postfixed with extra text such as the acronym of the funder or the name
            of the funder, which is available instead in the funderName field.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="title" type="NonEmptyStringType" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The title field is used for the title of the award or grant
            being described.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="awardUrl" type="NonEmptyStringType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Typically, the awardUrl is use to find and locate the award, and
            generally addresses the internet location to find out more information about the
            award.  This should point to a funder site for the award, rather than a project site.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CitationListType">
    <xs:choice minOccurs="1" maxOccurs="unbounded">
      <xs:element name="bibtex" type="xs:string">
        <xs:annotation>
          <xs:documentation>The bibtex field provides a parseable list of citations formatted according to the Bibtex formatting conventions. Each citation entry is assigned a unique key that must be unique across all bibtex fields in the EML document. The citation key can be used in markdown sections of the text to refer to this citation using the pandoc-style of inline citation keys.  See the markdown element for more details. The record is delimited using curly braces. Most reference software can both import and export citations in Bibtex format, so this is a simpler representation to produce and consume than native EML citation representations.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:choice>
  </xs:complexType>


  <xs:element name="descriptor">
    <xs:annotation>
      <xs:documentation>The descriptor field is used to document domains (themes) of interest such as climate, geology, soils or disturbances.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="descriptorValue"/>
      </xs:sequence>
      <xs:attribute name="citableClassificationSystem" use="optional" type="xs:boolean"/>
      <xs:attribute name="name" use="optional" type="descriptorEnum"/>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="descriptorEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="thematic"/>
      <xs:enumeration value="geographic"/>
      <xs:enumeration value="generic"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="descriptorValue" type="xs:string">
    <xs:annotation>
      <xs:documentation>The descriptorValue field contains a general description, either thematic or geographic, of the study area.</xs:documentation>
    </xs:annotation>
  </xs:element>



  <xs:element name="additionalMetadata">
    <xs:annotation>
      <xs:documentation>A flexible field for including any other relevant metadata that pertains to the resource being described. This field allows EML to be extensible in that any XML-based metadata can be included in this element.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="metadata">
          <xs:annotation>
            <xs:documentation>This element contains the additional metadata to be included in the document. This element should be used for extending EML to include metadata that is not already available in another part of the EML specification.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="gbif">
                <xs:annotation>
                  <xs:documentation>A block of additional metadata used for some special GBIF purposes and crossmapping to other schemas like the TDWG Natural Collection Data (NCD) schema</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <!-- additional general metadata -->
                    <xs:element name="dateStamp" type="xs:dateTime">
                      <xs:annotation>
                        <xs:documentation>The date the metadata document was created or modified.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="hierarchyLevel" type="NonEmptyStringType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation/>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="citation" type="citationType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>A single citation for use when citing the dataset</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="bibliography" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>A list of citations that form a bibliography on literature related / used in the dataset</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="citation" type="citationType" maxOccurs="unbounded"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="physical" maxOccurs="unbounded" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>A container element for all of the elements that let you describe the internal/external characteristics and distribution of a data object (e.g., dataObject, dataFormat, distribution) .</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element ref="objectName"/>
                          <xs:element ref="characterEncoding" minOccurs="0"/>
                          <xs:element ref="dataFormat"/>
                          <xs:element ref="distribution"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="resourceLogoUrl" type="xs:anyURI" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>URL of the logo associated with a resource</xs:documentation>
                      </xs:annotation>
                    </xs:element>

                    <!-- additional NCD collection metadata -->
                    <xs:element name="collection" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>A container element for other elements associated with collections (e.g., collectionIdentifier, collectionName).</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="parentCollectionIdentifier" type="NonEmptyStringType"
                            minOccurs="0">
                            <xs:annotation>
                              <xs:documentation>Identifier for the parent collection for this sub-collection. Enables a hierarchy of collections and sub collections to be built. </xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="collectionIdentifier" type="NonEmptyStringType"
                            minOccurs="0">
                            <xs:annotation>
                              <xs:documentation>The URI (LSID or URL) of the collection. In RDF, used as URI of the collection resource.</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="collectionName" type="NonEmptyStringType">
                            <xs:annotation>
                              <xs:documentation>Official name of the Collection in the local language</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="formationPeriod" type="NonEmptyStringType" minOccurs="0"
                      maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>Text description of the time period during which the collection was assembled e.g. "Victorian", or "1922 - 1932", or "c. 1750". </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="specimenPreservationMethod" type="NonEmptyStringType"
                      minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>Picklist keyword indicating the process or technique used to prevent physical deterioration of non-living collections. Expected to contain a value from the GBIF Specimen Preservation Method vocabulary</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="livingTimePeriod" type="NonEmptyStringType" minOccurs="0"
                      maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>Time period during which biological material was alive. (for palaeontological collections)</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element ref="jgtiCuratorialUnit" maxOccurs="unbounded" minOccurs="0"/>

                    <xs:element ref="dc:replaces" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Pointer to previous version of the document</xs:documentation>
                      </xs:annotation>
                    </xs:element>

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

  <xs:complexType name="citationType">
    <xs:annotation>
      <xs:documentation>A single literature citation with an optional identifier</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="NonEmptyStringType">
        <xs:attribute name="identifier" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>A URI, DOI or other persistent identifier for the  citation</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="jgtiCuratorialUnit">
    <xs:annotation>
      <xs:documentation>A quantitative descriptor (number of specimens, samples or batches). </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="jgtiUnitType" type="NonEmptyStringType">
          <xs:annotation>
            <xs:documentation>A general description of the unit of curation, e.g., 'jar containing plankton sample'; </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:choice maxOccurs="1" minOccurs="1">
          <xs:element name="jgtiUnits">
            <xs:annotation>
              <xs:documentation>The exact number of units within the collection</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="xs:integer">
                  <xs:attribute name="uncertaintyMeasure" use="required" type="xs:integer">
                    <xs:annotation>
                      <xs:documentation>A measure of the uncertainty (+ or -) x associated with the jgtiUnits value</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="jgtiUnitRange">
            <xs:annotation>
              <xs:documentation>A range of numbers (x to x), with the lower value representing an exact number, when the higher value is omitted.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:sequence>
                <xs:element name="beginRange" type="xs:integer">
                  <xs:annotation>
                    <xs:documentation>The lower value in a range of numbers. Use to represent an exact number by omitting the "endRange" value.</xs:documentation>
                  </xs:annotation>
                </xs:element>
                <xs:element name="endRange" type="xs:integer">
                  <xs:annotation>
                    <xs:documentation>The upper value in a range of numbers.</xs:documentation>
                  </xs:annotation>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="objectName" type="NonEmptyStringType">
    <xs:annotation>
      <xs:documentation>The name of the data object. This  often is the filename of a file in a file system or that is accessible on the network. </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="characterEncoding" type="NonEmptyStringType">
    <xs:annotation>
      <xs:documentation>This element contains the name of the character encoding. This is typically ASCII or UTF-8, or one of the other common encodings.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="dataFormat">
    <xs:annotation>
      <xs:documentation>This is a container element for other elements which describe the internal physical characteristics of the data object.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:choice>
        <xs:element name="textFormat">
          <xs:annotation>
            <xs:documentation>
                Description of a text formatted object.
                The description includes detailed parsing instructions for
                extracting attributes from the bytestream for simple
                delimited file formats (e.g., CSV), fixed format files
                that use fixed columns for attribute locations, and
                mixtures of the two.  It also supports records that
                span multiple lines.
              </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="numHeaderLines" type="xs:int" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                      Number of header lines preceding
                      data.  Lines are determined by the
                      physicalLineDelimiter, or if it is absent, by the
                      recordDelimiter.  This value indicated the
                      number of header lines that should be skipped
                      before starting to parse the data.
                    </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="numFooterLines" type="xs:int" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                      Number of footer lines following
                      data.  Lines are determined by the
                      physicalLineDelimiter, or if it is absent, by the
                      recordDelimiter.  This value indicated the
                      number of footer lines that should be skipped
                      after parsing the data. If this value is omitted,
                      parsers should assume the data continues to the end
                      of the data stream.
                    </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="recordDelimiter" type="xs:string" minOccurs="0"
                maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                      This element specifies the record
                      delimiter character when the format is text. The
                      record delimiter is usually a linefeed (\n) on UNIX, a
                      carriage return (\r) on MacOS, or both (\r\n) on
                      Windows/DOS. Multiline records are usually delimited
                      with two line ending characters, for example on UNIX
                      it would be two linefeed characters (\n\n). As record
                      delimiters are often non-printing characters, one can
                      use either the special value "\n" to represent a
                      linefeed (ASCII 0x0a) and "\r" to represent a carriage
                      return (ASCII 0x0d).  Alternatively, one can use the
                      hex value to represent character values (e.g., 0x0a).
                    </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="physicalLineDelimiter" type="xs:string" minOccurs="0"
                maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                      This element specifies the physical
                      line delimiter character when the format is text. The
                      line delimiter is usually a linefeed (\n) on UNIX, a
                      carriage return (\r) on MacOS, or both (\r\n) on
                      Windows/DOS. Multiline records are usually delimited
                      with two line ending characters, for example on UNIX
                      it would be two linefeed characters (\n\n). As line
                      delimiters are often non-printing characters, one can
                      use either the special value "\n" to represent a
                      linefeed (ASCII 0x0a) and "\r" to represent a carriage
                      return (ASCII 0x0d).  Alternatively, one can use the
                      hex value to represent character values (e.g., 0x0a).
                      If this value is not provided, processors should
                      assume that the physical line delimiter is the same
                      as the record delimiter.
                    </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="numPhysicalLinesPerRecord" type="xs:unsignedInt" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                      A single logical data record may be
                      written over several physical lines in a file, with
                      no special marker to indicate the end of a record. In
                      such cases, it is necessary to know the number of
                      lines per record in order to correctly read
                      them. If this value is not provided, processors should
                      assume that records are wholly contained on one
                      physical line.  If the value is greater than 1, then
                      processors should examine the lineNumber field for
                      each attribute to determine which line of the
                      record contains the information.
                    </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="maxRecordLength" type="xs:unsignedLong" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                      The maximum number of characters
                      in any record in the physical file.  For delimited
                      files, the record length varies and this is not
                      particularly useful.  However, for fixed format files
                      that do not contain record delimiters, this field is
                      critical to tell processors when one record stops
                      and another begins.
                    </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="attributeOrientation">
                <xs:annotation>
                  <xs:documentation>
                      Specifies whether the attributes
                      described in the physical stream are found in
                      columns or rows. The valid values are column or row.
                      If set to 'column', then the attributes are in
                      columns. If set to 'row', then the attributes
                      are in rows.  Row orientation is rare,  but some
                      systems such as SPlus and R utilize it.

                      For example, some data with column orientation:
                      DATE          PLOT           SPECIES
                      2002-01-15    hfr5           acer rubrum
                      2002-01-15    hfr5           acer xxxx

                      The same data in a rowMajor table:
                      DATE   2002-01-15
                      PLOT   hfr5
                      SPECIES acer rubrum  acer xxxx
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="column"/>
                    <xs:enumeration value="row"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:choice>
                <xs:element name="simpleDelimited">
                  <xs:annotation>
                    <xs:documentation>
                        A simple delimited format that
                        uses one of a series of delimiters to indicate
                        the ends of fields in the data stream. More
                        complex formats such as fixed format or mixed
                        delimited and fixed formats can be described using
                        the "complex" element.
                      </xs:documentation>
                  </xs:annotation>
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="fieldDelimiter" type="xs:string" maxOccurs="unbounded">
                        <xs:annotation>
                          <xs:documentation>
                              This element specifies
                              a character to be used in the object for
                              indicating the ending column for an attribute.
                              The delimiter character itself is not part
                              of the attribute value, but rather is present
                              in the column following the last character
                              of the value. Typical delimiter characters
                              include commas, tabs, spaces, and semicolons.
                              The only time the fieldDelimiter character is
                              not interpreted as a delimiter is if it
                              is contained in a quoted string
                              (see quoteCharacter) or is immediately
                              preceded by a literalCharacter.
                              Non-printable quote characters can be
                              provided as their hex values, and for tab
                              characters by its ASCII string "\t".
                              Processors should assume that the field
                              starts in the column following the previous
                              field if the previous field was fixed,
                              or in the column following the delimiter
                              from the previous field if the previous
                              field was delimited.
                            </xs:documentation>
                        </xs:annotation>
                      </xs:element>
                      <xs:element name="collapseDelimiters" minOccurs="0">
                        <xs:annotation>
                          <xs:documentation>
                              The collapseDelimiters element
                              specifies whether sequential delimiters
                              should be treated as a single delimiter or
                              multiple delimiters.    An example is when
                              a space delimiter is used; often there may
                              be several repeated spaces that should be
                              treated as a single delimiter, but not
                              always. The valid values are yes or no.
                              If it is set to yes, then consecutive
                              delimiters will be collapsed to one.  If set
                              to no or absent, then consecutive delimiters
                              will be treated as separate delimiters.
                              Default behaviour is no; hence, consecutive
                              delimiters will be treated as separate
                              delimiters, by default.
                            </xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="yes"/>
                            <xs:enumeration value="no"/>
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:element>
                      <xs:element name="quoteCharacter" type="NonEmptyStringType" minOccurs="0"
                        maxOccurs="unbounded">
                        <xs:annotation>
                          <xs:documentation>
                              This element specifies
                              a character to be used in the object for
                              quoting values so that field delimiters can
                              be used within the value. This basically
                              allows delimiter "escaping". The quoteChacter
                              is typically a " or '. When a processor
                              encounters a quote character, it should
                              not interpret any following characters as
                              a delimiter until a matching quote character
                              has been encountered (i.e., quotes come in
                              pairs). It is an error to not provide a
                              closing quote before the record ends.
                              Non-printable quote characters can be
                              provided as their hex values.
                            </xs:documentation>
                        </xs:annotation>
                      </xs:element>
                      <xs:element name="literalCharacter" type="NonEmptyStringType" minOccurs="0"
                        maxOccurs="unbounded">
                        <xs:annotation>
                          <xs:documentation>
                              This element specifies
                              a character to be used for escaping
                              special character values so that they
                              are treated as literal values.
                              This allows "escaping" for special
                              characters like quotes, commas, and spaces
                              when they are intended to be used in an
                              attribute value rather than being intended
                              as a delimiter.  The literalCharacter is
                              typically a \.
                            </xs:documentation>
                        </xs:annotation>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
                <xs:element name="complex">
                  <xs:annotation>
                    <xs:documentation>
                        A complex text format that
                        can describe delimited fields, fixed width
                        fields, and mixtures of the two. This supports
                        multiline records (where one record is distributed
                        across multiple physical lines).  When using the
                        complex format, the number of textFixed and
                        textDelimited elements should exactly equal the
                        number of attributes that have been described
                        for the entity, and the order of the textFixed
                        and textDelimited elements should correspond to
                        the order of the attributes as described in the
                        entity. Thus, for a delimited file with fourteen
                        attributes, one should provide exactly fourteen
                        textDelimited elements.
                      </xs:documentation>
                  </xs:annotation>
                  <xs:complexType>
                    <xs:choice maxOccurs="unbounded">
                      <xs:element name="textFixed">
                        <xs:annotation>
                          <xs:documentation>
                              Describes the physical
                              format of data sequences that use a fixed
                              number of characters in a specified position
                              in the stream to locate attribute values.
                              This method is common in sensor-derived
                              data and in legacy database systems.  To
                              parse it, one must know the number
                              of characters for each attribute and the
                              starting column and line to begin reading
                              the value.
                            </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element name="fieldWidth" type="xs:unsignedLong">
                              <xs:annotation>
                                <xs:documentation>
                                    Fixed width fields
                                    have a set length, thus the end of
                                    the field can always be determined by
                                    adding the fieldWidth to the starting
                                    column number.
                                  </xs:documentation>
                              </xs:annotation>
                            </xs:element>
                            <xs:element name="lineNumber" type="xs:unsignedLong" minOccurs="0">
                              <xs:annotation>
                                <xs:documentation>
                                    The line on which
                                    the data field is found, when
                                    the data record is written over
                                    more than one physical line in
                                    the file. A single logical
                                    data record may be written over
                                    several physical lines in a file,
                                    with no special marker to indicate
                                    the end of a record. In such
                                    cases, the relative location of
                                    a data field must be indicated
                                    by both relative row and column
                                    number.  The lineNumber should never
                                    greater that the number of physical
                                    lines per record.
                                  </xs:documentation>
                              </xs:annotation>
                            </xs:element>
                            <xs:element name="fieldStartColumn" type="xs:long" minOccurs="0">
                              <xs:annotation>
                                <xs:documentation>
                                    The starting
                                    column number for a fixed format
                                    attribute. Fixed width fields
                                    have a set length, thus the end of
                                    the field can always be determined by
                                    adding the fieldWidth to the starting
                                    column number. If the starting
                                    column is not provided, processors
                                    should assume that the field starts
                                    in the column following the previous
                                    field if the previous field was fixed,
                                    or in the column following the
                                    delimiter from the previous field if
                                    the previous field was delimited.
                                  </xs:documentation>
                              </xs:annotation>
                            </xs:element>
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                      <xs:element name="textDelimited">
                        <xs:annotation>
                          <xs:documentation>
                              Describes the physical
                              format of data sequences that use delimiters
                              in the stream to locate attribute values.
                              This method is common in data exported from
                              spreadsheets and database systems,
                              To parse it, one must know the character
                              that indicates the end of each attribute
                              and the line to begin reading the value.
                            </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element name="fieldDelimiter" type="xs:string">
                              <xs:annotation>
                                <xs:documentation>
                                    This element specifies a character to be used
                                    in the object for indicating the
                                    ending column for an attribute.
                                    The delimiter character itself is
                                    not part of the attribute value,
                                    but rather is present in the column
                                    following the last character of the
                                    value. Typical delimiter characters
                                    include commas, tabs, spaces,
                                    and semicolons.  The only time the
                                    fieldDelimiter character is not
                                    interpreted as a delimiter is if it
                                    is contained in a quoted string (see
                                    quoteCharacter) or is immediately
                                    preceded by a literalCharacter.
                                    Non-printable quote characters can
                                    be provided as their hex values,
                                    and for tab characters by its ASCII
                                    string "\t".  Processors should
                                    assume that the field starts in the
                                    column following the previous field
                                    if the previous field was fixed,
                                    or in the column following the
                                    delimiter from the previous field
                                    if the previous field was delimited.
                                  </xs:documentation>
                              </xs:annotation>
                            </xs:element>
                            <xs:element name="collapseDelimiters" minOccurs="0">
                              <xs:annotation>
                                <xs:documentation>
                                    The collapseDelimiters element
                                    specifies whether sequential delimiters
                                    should be treated as a single delimiter
                                    or multiple delimiters.    An example
                                    is when a space delimiter is used;
                                    often there may be several repeated
                                    spaces that should be treated as a
                                    single delimiter, but not always. The
                                    valid values are yes or no.  If it
                                    is set to yes, then consecutive
                                    delimiters will be collapsed
                                    to one.  If set to no or absent,
                                    then consecutive delimiters will
                                    be treated as separate delimiters.
                                    Default behaviour is no; hence,
                                    consecutive delimiters will be treated
                                    as separate delimiters, by default.
                                  </xs:documentation>
                              </xs:annotation>
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="yes"/>
                                  <xs:enumeration value="no"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:element>
                            <xs:element name="lineNumber" type="xs:unsignedLong" minOccurs="0">
                              <xs:annotation>
                                <xs:documentation>
                                    A single logical
                                    data record may be written over
                                    several physical lines in a file,
                                    with no special marker to indicate
                                    the end of a record. In such
                                    cases, the relative location of
                                    a data field must be indicated
                                    by both relative row and column
                                    number.
                                    The lineNumber should never be
                                    greater that the number of physical
                                    lines per record.  When parsing the
                                    first field on a physical line as
                                    a delimited field, they should assume
                                    that the field data starts in the
                                    first column.  Otherwise, follow the
                                    rules indicated under fieldDelimiter.
                                  </xs:documentation>
                              </xs:annotation>
                            </xs:element>
                            <xs:element name="quoteCharacter" type="NonEmptyStringType"
                              minOccurs="0" maxOccurs="unbounded">
                              <xs:annotation>
                                <xs:documentation>
                                    This element
                                    specifies a character to be used in
                                    the object for quoting values so
                                    that field delimiters can be used
                                    within the value. This basically
                                    allows delimiter "escaping". The
                                    quoteChacter is typically a " or
                                    '. When a processor encounters
                                    a quote character, it should not
                                    interpret any following characters
                                    as a delimiter until a matching
                                    quote character has been encountered
                                    (i.e., quotes come in pairs). It is
                                    an error to not provide a closing
                                    quote before the record ends.
                                    Non-printable quote characters
                                    can be provided as their hex
                                    values.
                                  </xs:documentation>
                              </xs:annotation>
                            </xs:element>
                            <xs:element name="literalCharacter" type="NonEmptyStringType"
                              minOccurs="0" maxOccurs="unbounded">
                              <xs:annotation>
                                <xs:documentation>
                                    This element
                                    specifies a character to be used
                                    for escaping special character
                                    values so that they are treated
                                    as literal values.  This allows
                                    "escaping" for special characters
                                    like quotes, commas, and spaces
                                    when they are intended to be used
                                    in an attribute value rather than
                                    being intended as a delimiter.
                                    The literalCharacter is typically
                                    a \.
                                  </xs:documentation>
                              </xs:annotation>
                            </xs:element>
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                    </xs:choice>
                  </xs:complexType>
                </xs:element>
              </xs:choice>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="externallyDefinedFormat">
          <xs:annotation>
            <xs:documentation>Information about a non-text or proprietary formatted object. </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="formatName" type="xs:string">
                <xs:annotation>
                  <xs:documentation>Name of the format of the data object, e.g., ESRI Shapefile.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="formatVersion" type="NonEmptyStringType" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>Version of the format of the data object</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="title" type="i18nString">
    <xs:annotation>
      <xs:documentation>The 'title' field provides a description of the resource that is being documented that is long enough to differentiate it from other similar resources. Multiple titles may be provided, particularly when trying to express the title in more than one language (use the "xml:lang" attribute to indicate the language if not English/en).</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="individualName">
    <xs:annotation>
      <xs:documentation>The individualName field contains subfields so that a person's name can be broken down into parts.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="salutation" type="NonEmptyStringType" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The salutation field is used in addressing an individual with a particular title, such as Dr., Ms., Mrs., Mr., etc.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="givenName" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The given name field can be used for first name of the individual associated with the resource, or for any other names that are not intended to be alphabetized, (as appropriate). </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="surName" type="NonEmptyStringType">
          <xs:annotation>
            <xs:documentation>The surname field is used for the last name of the individual associated with the resource. This is typically the family name of an individual, for example, the name by which s/he is referred to in citations. </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="address">
    <xs:annotation>
      <xs:documentation>The address field is a container for multiple subfields that describe the physical or electronic address of the responsible party for a resource.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="deliveryPoint" type="NonEmptyStringType" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The delivery point field is used for the physical address for postal communication, e.g., GBIF Secretariat, Universitetsparken 15</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="city" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The city field is used for the city name of the contact associated with a particular resource.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="administrativeArea" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The administrative area field is the equivalent of a 'state' in the U.S., or Province in Canada. This field is intended to accommodate the many types of international administrative areas.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="postalCode" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The postal code is equivalent to a U.S. zip code, or the number used for routing to an international address. </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="country" type="NonEmptyStringType" minOccurs="0">
          <xs:annotation>
            <xs:documentation>The country field is used for the name of the contact's country.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="phone" type="xs:string">
    <xs:annotation>
      <xs:documentation>The phone field describes information about the responsible party's telephone, be it a voice phone, fax.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="electronicMailAddress" type="NonEmptyStringType">
    <xs:annotation>
      <xs:documentation>The electronic mail address is the email address for the party. It is intended to be an Internet SMTP email address, which should consist of a username followed by the @ symbol, followed by the email server domain name address.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="onlineUrl" type="xs:anyURI">
    <xs:annotation>
      <xs:documentation>A link to associated online information, usually a web site. When the party represents an organization, this is the URL to a website or other online information about the organization. If the party is an individual, it might be their personal web site or other related online information about the party.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="userId">
    <xs:annotation>
      <xs:documentation>An identifier that links this party to a directory of personnel. Although specific contact information for a party might change, the underlying correspondence to a real individual does not.  This identifier provides a pointer within a personnel directory that may contain further, and possibly more current, information about the party.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="NonEmptyStringType">
          <xs:attribute name="directory" use="required" type="NonEmptyStringType">
            <xs:annotation>
              <xs:documentation>This attribute names the directory system to which this userId applies. This will generally be a URL that shows how to look up information, for example an LDAP url. However, it could also be a non-parsable description of the directory system if that is all that is available.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="role" type="xs:string">
    <xs:annotation>
      <xs:documentation>Use this field to describe the role the party played with respect to the resource. Some potential roles include technician, reviewer, principal investigator, and many others.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="para">
    <xs:annotation>
      <xs:documentation>The "paragraph" element allows for text blocks to be included in EML. </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element ref="ulink" minOccurs="0" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="distribution">
    <xs:annotation>
      <xs:documentation>This element provides information on how the resource is distributed. When used at the resource level, this element can provide only general information, but elements for describing connections to online systems are provided.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="online"/>
      </xs:sequence>
      <xs:attribute name="scope" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="online">
    <xs:annotation>
      <xs:documentation>This element contains information for accessing the resource online represented as a URL connection</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="url"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="url">
    <xs:annotation>
      <xs:documentation>The URL of the resource that is available online. </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:anyURI">
          <xs:attribute name="function" use="required" type="xs:string"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="calendarDate">
    <xs:sequence>
      <xs:element ref="calendarDate"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="calendarDate" type="yearDate">
    <xs:annotation>
      <xs:documentation>The calendar date field is used to express a date, giving the year, month, and day. The format should be one that complies with the International Standards Organization's standard 8601. The recommended format for EML is YYYY-MM-DD, where Y is the four digit year, M is the two digit month code (01 - 12, where January = 01), and D is the two digit day of the month (01 - 31). This field can also be used to enter just the year portion of a date.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="description">
    <xs:sequence>
      <xs:element ref="description"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="description">
    <xs:annotation>
      <xs:documentation>The field Description contains general textual descriptions.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element ref="para" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ulink">
    <xs:annotation>
      <xs:documentation>this element and its children allow paragraphs to contain urls and titles for anchor tags.</xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element name="citetitle" type="NonEmptyStringType">
          <xs:annotation>
            <xs:documentation>the citetitle element  contains a text title for the url. It can be displayed in an anchor tag.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="url" use="required" type="NonEmptyStringType">
        <xs:annotation>
          <xs:documentation>the url attribute contains the location of the work for a link.</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="IDType">
    <xs:annotation>
      <xs:documentation>A unique identifier for this additional
        metadata that can be used to reference it elsewhere.
        This is a formal field in that it is an error to provide
        a value for the id attribute that is not unique within
        the document's set of id attributes. This is designed to
        allow other portions of the metadata to reference this
        section formally.</xs:documentation>
    </xs:annotation>
    <xs:list itemType="xs:string"/>
  </xs:simpleType>
  <xs:simpleType name="SystemType">
    <xs:annotation>
      <xs:documentation>The data management system within which an
        identifier is in scope and therefore unique. This is typically
        a URL (Uniform Resource Locator) that indicates a data
        management system.  All identifiers that share a system must
        be unique. In other words, if the same identifier is used in
        two locations with identical systems, then by definition the
        objects at which they point are in fact the same object.</xs:documentation>
    </xs:annotation>
    <xs:list itemType="xs:string"/>
  </xs:simpleType>
  <xs:simpleType name="ScopeType">
    <xs:annotation>
      <xs:documentation>The scope of the identifier.  Scope is generally
        set to either "system", meaning that it is scoped according to
        the "system" attribute, or "document" if it is only to be in scope
        within this single document instance.  In this particular use of
        scope, it is FIXED to be "system" because the packageId is
        required and always has the scope of the required "system".</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="system"/>
      <xs:enumeration value="document"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- DATA TYPES TAKEN FROM THE EML SCHEMAS -->
  <xs:simpleType name="yearDate">
    <xs:annotation>
      <xs:documentation>
        A type allowing a year or date value.
        This type is the union of the built-in types for year and date.
        Example: 1999, or 2001-03-15
      </xs:documentation>
    </xs:annotation>
    <xs:union memberTypes="xs:gYear xs:date"/>
  </xs:simpleType>
  <xs:simpleType name="NonEmptyStringType">
    <xs:annotation>
      <xs:documentation>
        Non Empty String Type.
        This type specifies a content pattern for all elements 
          that are required by EML to ensure that there is actual content (i.e., 
          not just whitespace). The pattern described can be interpreted as
          "at least one non-whitespace character, followed
          by any number of whitespace plus not-whitespace characters. "
          Leading and/or trailing whitespace is allowed, and whitespace 
          may include carriage returns and newlines.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:pattern value="[\s]*[\S][\s\S]*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="i18nString">
    <xs:simpleContent>
      <xs:extension base="NonEmptyStringType">
        <xs:attribute ref="xml:lang" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="TextType" mixed="true">
    <xs:annotation>
      <xs:documentation>The "text" element allows for both formatted and unformatted text blocks to be included in EML. It can contain a number of relevant subsections that allow the use of titles, sections, and paragraphs in the text block. This markup is a subset of DocBook, or alternatively can be specified using Markdown text blocks.</xs:documentation>
    </xs:annotation>
    <xs:choice maxOccurs="unbounded">
      <xs:element name="section" type="SectionType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>The "section" element allows for grouping related paragraphs of text together, with an optional title. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="para" type="ParagraphType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>The "paragraph" element allows for both formatted and unformatted text blocks to be included in EML. It can be plain text or text with a limited set of markup tags, including emphasis, subscript, superscript, and lists. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:choice>
    <xs:attribute ref="xml:lang"/>
  </xs:complexType>
  <xs:complexType name="SectionType">
    <xs:annotation>
      <xs:documentation>The "section" element allows for grouping related paragraphs (or other sections) of text together, with an optional title. This markup is a subset of DocBook.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="title" type="i18nString" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The optional title for a section. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="para" type="ParagraphType">
          <xs:annotation>
            <xs:documentation>The "paragraph" element allows for both formatted and unformatted text blocks to be included in EML. It can be plain text or text with a limited set of markup tags, including emphasis, subscript, superscript, and lists. This markup
              is a subset of DocBook.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="section" type="SectionType">
          <xs:annotation>
            <xs:documentation>The "section" element allows for grouping related paragraphs of text together, with an optional title. This markup is a subset of DocBook.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
    <xs:attribute ref="xml:lang"/>
  </xs:complexType>
  <xs:complexType name="ParagraphType" mixed="true">
    <xs:annotation>
      <xs:documentation>The "paragraph" element allows for both formatted and unformatted text blocks to be included in EML. It can be plain text or text with a limited set of markup tags, including emphasis, subscript, superscript, lists and links. This
        markup is a subset of DocBook.</xs:documentation>
    </xs:annotation>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="value" type="i18nString" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Language translation as specified by the xml:lang attribute</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="itemizedlist" type="ListType">
        <xs:annotation>
          <xs:documentation>A list of items in a text paragraph. The list is generally displayed as a bulleted list. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="orderedlist" type="ListType">
        <xs:annotation>
          <xs:documentation>An ordered list of items in a text paragraph. The list is generally displayed as a numbered list. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="emphasis">
        <xs:annotation>
          <xs:documentation>A span of emphasized text in a paragraph. Emphasized text is generally rendered as boldfaced or otherwise distinct from the surrounding text. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
          <xs:sequence>
            <xs:element name="value" type="i18nString" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute ref="xml:lang"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="subscript" type="SubSuperScriptType">
        <xs:annotation>
          <xs:documentation>A subscript in a text paragraph. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="superscript" type="SubSuperScriptType">
        <xs:annotation>
          <xs:documentation>A superscript in a text paragraph. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="literalLayout">
        <xs:annotation>
          <xs:documentation>This element specifies that the structure of the text within the tag, specifically the whitespace, should not be altered.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
          <xs:sequence>
            <xs:element name="value" type="i18nString" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ulink" minOccurs="0">
        <xs:annotation>
          <xs:documentation>This element and its children allow paragraphs to contain urls and titles for anchor tags. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
          <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="citetitle" type="i18nString">
              <xs:annotation>
                <xs:documentation>The Dublin Core Metadata Initiative</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="url" use="optional">
            <xs:annotation>
              <xs:documentation>The url attribute contains the location of the work for a link. This markup is a subset of DocBook.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute ref="xml:lang"/>
  </xs:complexType>
  <xs:complexType name="ListType">
    <xs:annotation>
      <xs:documentation>A list of items in a text paragraph. The ListType is used by both orderedlist elements and itemizedlist elements. This markup is a subset of DocBook.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="listitem" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>An item in a list of items. Each list item is formatted as a bulleted or numbered item depending on the list type in which it resides. List items contain paragraphs which in turn can be plain text or text with a limited set of markup
            tags, including emphasis, subscript, superscript, and lists. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:choice minOccurs="1" maxOccurs="unbounded">
            <xs:element name="para" type="ParagraphType">
              <xs:annotation>
                <xs:documentation>The "paragraph" element allows for both formatted and unformatted text blocks to be included in EML. It can be plain text or text with a limited set of markup tags, including emphasis, subscript, superscript, and lists. This markup
                  is a subset of DocBook.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="itemizedlist" type="ListType">
              <xs:annotation>
                <xs:documentation>A list of items in a text paragraph. The list is generally displayed as a bulleted list. This markup is a subset of DocBook.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="orderedlist" type="ListType">
              <xs:annotation>
                <xs:documentation>An ordered list of items in a text paragraph. The list is generally displayed as a numbered list. This markup is a subset of DocBook.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SubSuperScriptType" mixed="true">
    <xs:annotation>
      <xs:documentation>A subscript or a superscript in a text paragraph. This type is used by both subscript and superscript elements to define their recursive content. This markup is a subset of DocBook.</xs:documentation>
    </xs:annotation>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="value" type="i18nString" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Language translation as specified by the xml:lang attribute</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="subscript" type="SubSuperScriptType">
        <xs:annotation>
          <xs:documentation>A subscript in a text paragraph. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="superscript" type="SubSuperScriptType">
        <xs:annotation>
          <xs:documentation>A superscript in a text paragraph. This markup is a subset of DocBook.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:choice>
    <xs:attribute ref="xml:lang"/>
  </xs:complexType>
</xs:schema>
