<?xml version="1.0" encoding="ISO-8859-1"?><xs:schema xmlns:html="http://www.w3.org/1999/xhtml" xmlns:heml="http://www.heml.org/schemas/2003-09-17/heml" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:db="http://www.oasis-open.org/docbook/xmlschema/4.1.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xhtml="http://www.w3.org/1999/xhtml" targetNamespace="http://www.heml.org/schemas/2003-09-17/heml" elementFormDefault="qualified">
  <xs:annotation>
    <xs:documentation xml:lang="en">
      <div xmlns="http://www.w3.org/1999/xhtml">
      <p><tt>$Id: heml.xsd 1681 2005-12-20 15:36:16Z brucerob $</tt></p>
      <p><tt>$Date: 2005-12-20 11:36:16 -0400 (Tue, 20 Dec 2005) $</tt></p>
      <p><tt>$Revision: 1.15 $</tt></p>
      <p>This is the XML Schema for Heml, version 2003-09-17. See
      http://www.heml.org for more information on the project and
      for tools that transform documents that conform to this
      schema.</p>
      

      <p>This schema's outer-most (or top-level) element is 
      <tt class="element">heml:Heml</tt>

      ; it represents a collection of historical events, each of
      which is encoded in an 
      <tt class="element">heml:Event</tt>

      element.</p>

      <p>This schema has been built according to the following
      design pattern: 
      <ol>
        <li>Though .heml documents are produced by and for
        computational processes, they ought to be readable. Thus
        the element names border on the verbose.</li>

        <li>Types are given names ending with 'Type'</li>

        <li>Groups are given names ending with 'Group'</li>

        <li>Types and elements are capitalized; attributes begin
        with a lower-case letter.</li>

        <li>Every element that comprises other elements with
        non-editoral functions has these two optional editoral
        elements:</li>

        <ol>
          <li>A 
          <tt class="element">heml:Comment</tt>

          at the beginning of its content model (that is, before
          all other elements). This may comprise only plain text
          and is meant for editoral notes.</li>

          <li>A 
          <tt class="element">heml:Annex</tt>

          at the end of its content model (that is, after all other
          elements). This may comprise any markup; it is suited to
          adding application- or site-specific markup to the core
          of this Heml version.</li>
        </ol>

        <li>Elements whose names end with 'Set', such as
        'LabelSet', represent a collection of elements which refer
        to the same object or idea but differ only in language.
        These should be distinguished from elements whose name are
        in the plural; the latter, such as the 'Events' element
        collect element that refer to different things or
        ideas.</li>
      </ol>
      </p>
      </div>
    </xs:documentation>
  </xs:annotation>

  <xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="simpledc20021212.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
  <xs:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="xhtml11/xhtml11.xsd"/>
  <xs:import namespace="http://www.oasis-open.org/docbook/xmlschema/4.1.2" schemaLocation="Dbxsd/mybibliomixed.xsd"/>

  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="common_xlink.xsd"/>

  <xs:import namespace="http://www.w3.org/2003/01/geo/wgs84_pos#" schemaLocation="geo.xsd"/>
  <xs:element name="Comment" type="heml:LangString">
    <xs:annotation>
      <xs:documentation xml:lang="en">Editorial text which may be
      added as the first sub-element of a
      sequence.</xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="Annex">
 <xs:annotation>
      <xs:documentation xml:lang="en">
        An optional element comprising mixed content; used to add non-standard
        or experimental markup to Heml elements. Where it appears, it is the last element in a sequence.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="EventAnnex">
 <xs:annotation>
      <xs:documentation xml:lang="en">
        An optional element comprising mixed content; used to add non-standard
        or experimental markup to Heml elements. Where it appears, it is the last element in a sequence.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>


  <xs:complexType name="BareRefType">
    <xs:attribute name="uriRef" type="xs:anyURI" use="required"/>
  </xs:complexType>
  
  <xs:element name="Heml">
    <xs:annotation>
      <xs:documentation xml:lang="en">The topl-level, or root,
      element in a Heml document. Comprises a Head element
      (metadata) and a Body element, which itself is a group of
      Event elements.</xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Head"/>
        <xs:element ref="heml:Definitions"/>
        <xs:element ref="heml:Events" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="heml:Periods" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Head">
    <xs:annotation>
      <xs:documentation xml:lang="en">A container for
      metadata from the Simple Dublin Core Schema.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="dc:elementsGroup" minOccurs="0" maxOccurs="1"/>
       </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Definitions">
    <xs:annotation>
      <xs:documentation xml:lang="en">Container for all locations, persons, etc.</xs:documentation></xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:LocationDefinitions"/>
        <xs:element ref="heml:PersonDefinitions"/>
        <xs:element ref="heml:RoleLabelSetDefinitions"/>
        <xs:element ref="heml:KeywordClassificationSetDefinitions"/>
      </xs:sequence>
     </xs:complexType>
   </xs:element>

  <xs:element name="LocationDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Location" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PersonDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Person" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="RoleLabelSetDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:RoleLabelSet" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="KeywordClassificationSetDefinitions">
        <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:KeywordClassificationSet" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Events">
    <xs:annotation>
      <xs:documentation xml:lang="en">
       <div xmlns="http://www.w3.org/1999/xhtml">A collection of 
      <tt>heml:Event</tt>

      s.
      </div>
      </xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Event" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Periods">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Period" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
  </xs:complexType>
</xs:element>

  <xs:element name="Period">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>
         <xs:element ref="heml:PeriodLabelSet"/>
        <xs:element ref="heml:Chronology"/>
        <xs:element ref="heml:References" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="heml:Annex" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>

      <xs:attribute type="xs:anyURI" name="uri" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="PeriodLabelSet" type="heml:LabelGroupType">
    <xs:unique name="uniqueXmlLangForPeriodLabelSet">
      <xs:selector xpath="heml:Label"/>
      <xs:field xpath="@xml:lang"/>
    </xs:unique>
  </xs:element>

  <xs:element name="Event">
    <xs:annotation>
      <xs:documentation xml:lang="en">The heml:Event element
      represents what is known about an historical event. It
      comprises, in order, Labels, Date, Location, Participants and
      References elements. See their documentation for further
      information.</xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>

        <xs:element ref="heml:EventLabelSet"/>

        <xs:element ref="heml:Classification" minOccurs="0" maxOccurs="1"/>

        <xs:element ref="heml:Chronology"/>

        <xs:element ref="heml:LocationRef" minOccurs="0" maxOccurs="1"/>

        <xs:element ref="heml:Participants" minOccurs="0" maxOccurs="1"/>

        <xs:element ref="heml:References" minOccurs="0" maxOccurs="1"/>

        <xs:element ref="heml:EventAnnex" minOccurs="0" maxOccurs="1"/>
      

      </xs:sequence>

      <xs:attribute type="xs:anyURI" name="uri" use="required"/>
    </xs:complexType>
  </xs:element>
  
  <xs:complexType name="LangString">
    <xs:annotation>
      <xs:documentation xml:lang="en">An element comprising a text
      string and an xml:lang attribute.</xs:documentation>
    </xs:annotation>

    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="xml:lang"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  

    <!-- *********** * End 'Chronology' element and related materials * * * Begin 'Label' element and related materials --> 

  <xs:element name="EventLabelSet" type="heml:LabelGroupType">
    <xs:unique name="uniqueXmlLangForLabelSet">
      <xs:selector xpath="heml:Label"/>

      <xs:field xpath="@xml:lang"/>
    </xs:unique>
  </xs:element>

  <xs:element name="Label" type="heml:LangString"/>

  <xs:complexType name="LabelGroupType">
    <xs:annotation>
      <xs:documentation xml:lang="en">Gathers labels constrained so
      as to not allow multiple labels of the same xml:lang
      declaration.</xs:documentation>
    </xs:annotation>

    <xs:sequence>
      <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>

      <xs:element ref="heml:Label" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LabelGroupWithIdType">
<xs:annotation>
      <xs:documentation xml:lang="en">Gathers labels constrained so
      as to not allow multiple labels of the same xml:lang
      declaration. Applies an id attribute to the collecting element, which
whose name usually ends in 'Set'.</xs:documentation>
    </xs:annotation>

    <xs:sequence>
      <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>
      <xs:element ref="heml:Label" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
&#9;<xs:attribute name="uri" type="xs:anyURI" use="required"/>
  </xs:complexType>

    <!-- ************ End LABELS element and related materials. Begin CLASSIFICATION element and related materials-->

  <xs:element name="Classification">
    <xs:annotation>
      <xs:documentation xml:lang="en">Gathers means of classifying the event.
Currently, only the KeywordClassificationSet element, or reference using the KeywordClassificationSetRef element, are possible.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
&#9;<xs:element ref="heml:KeywordClassificationSetRef" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="KeywordClassificationSet" type="heml:LabelGroupWithIdType">
    <xs:annotation>
      <xs:documentation xml:lang="en">
A collection of heml:Label elements that refer, each in their own language,
to a keyword or concept under which this event should be classified. Once
written, should be referred to with a KeywordClassificationRef element.
      </xs:documentation>
    </xs:annotation>
    <xs:unique name="uniqueXmlLangForKeywords">
      <xs:selector xpath="heml:Label"/>

      <xs:field xpath="@xml:lang"/>
    </xs:unique>
  </xs:element>

  <xs:element name="KeywordClassificationSetRef" type="heml:BareRefType">
    <xs:annotation>
      <xs:documentation xml:lang="en">
Refers to a KeywordClassificationSet element.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

    <!-- ************ End CLASSIFICATION and related materials. Begin CHRONOLOGY element and related materials -->

  <xs:element name="Chronology">
    <xs:annotation>
      <xs:documentation xml:lang="en">Represents the information
      known about the date of an event. Can comprise  an AbsoluteDate,
      ComplexDate or DateRange element.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
     <xs:sequence>
&#9;<xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="heml:ChronologicalDerivation" minOccurs="0" maxOccurs="1"/>
      <xs:choice>
&#9;<xs:group ref="heml:PossibleDatesGroup"/>
       <xs:element ref="heml:ComplexDate"/>
        <xs:element ref="heml:DateRange"/>
      </xs:choice>
        <xs:element ref="heml:Annex" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ChronologicalDerivation">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:ChronologicalDerivationStepLabelSet" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ChronologicalDerivationStepLabelSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:ChronologicalDerivationStepLabel" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ChronologicalDerivationStepLabel" type="xs:string"/>
 
  <xs:group name="DatePrimitivesGroup">
    <xs:annotation>
      <xs:documentation xml:lang="en">A choice among the date data
      types supported by Heml.</xs:documentation>
    </xs:annotation>

    <xs:choice>
      <xs:element ref="heml:DateTime"/>
      <xs:element ref="heml:Date"/>
      <xs:element ref="heml:Year"/>
      <xs:element ref="heml:IntCalDate"/>
      <!-- And now, uncertain date elements composed of
        the above -->
    </xs:choice>
  </xs:group>

  <xs:group name="UncertainDateGroup">
    <xs:choice>
      <xs:element ref="heml:BoundedDate"/>
    </xs:choice>
  </xs:group>
 
   <xs:group name="PossibleDatesGroup">
     <xs:choice>
       <xs:group ref="heml:DatePrimitivesGroup"/>
       <xs:group ref="heml:UncertainDateGroup"/>
     </xs:choice>
   </xs:group>

   <xs:element name="BoundedDate">
    <xs:complexType>
      <xs:sequence>
       <xs:element ref="heml:TerminusPostQuem"/>
       <xs:element ref="heml:TerminusAnteQuem"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
<xs:element name="TerminusPostQuem">
  <xs:complexType>
    <xs:group ref="heml:DatePrimitivesGroup"/>
  </xs:complexType>
</xs:element>

<xs:element name="TerminusAnteQuem">
  <xs:complexType>
    <xs:group ref="heml:DatePrimitivesGroup"/>
  </xs:complexType>
</xs:element>

<xs:element name="StartingDate">
  <xs:complexType>
    <xs:group ref="heml:PossibleDatesGroup"/>
  </xs:complexType>
</xs:element>

<xs:element name="EndingDate">
  <xs:complexType>
    <xs:group ref="heml:PossibleDatesGroup"/>
  </xs:complexType>
</xs:element>


  <xs:element name="DateRange">
    <xs:annotation>
      <xs:documentation xml:lang="en">Represents a span of time.
      Internally, a DateRange resolves to two 'time'
      values.</xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="heml:StartingDate"/>
          <xs:element ref="heml:EndingDate"/>
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="IntCalDate">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:IntCalendar"/>
        <xs:element ref="heml:IntCalEra"/>
        <xs:element ref="heml:IntCalYear"/>
        <xs:element ref="heml:IntCalMonth" minOccurs="0" maxOccurs="1"/>
        <xs:element ref="heml:IntCalDay" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
      <xs:attribute ref="xml:lang"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="IntCalendar" type="xs:string"/>
  <xs:element name="IntCalEra" type="xs:string"/>
  <xs:element name="IntCalYear" type="xs:integer"/>
  <xs:element name="IntCalMonth" type="xs:integer"/>
  <xs:element name="IntCalDay" type="xs:integer"/>

  <xs:element name="DateTime" type="xs:dateTime">
  <xs:annotation>
      <xs:documentation xml:lang="en">A date represented in XML
      Schema's
      <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#datetime">
      datetime</a>
      datatype. Note that a '-' may be used before the date to
      indicate a year BCE.</xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="Date" type="xs:date">
    <xs:annotation>
      <xs:documentation xml:lang="en">A date represented in XML
      Schema's 
      <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#date">
      date</a>

      datatype. Note that a '-' may be used before the date to
      indicate a year BCE.</xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="Year" type="xs:gYear">
    <xs:annotation>
      <xs:documentation xml:lang="en">A date represented as a year
      alone, in XML Schema's 
      <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#gYear">
      gYear</a>

      datatype. Note that a '-' may be used before the value to
      indicate a year BCE.</xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="ComplexDate">
    <xs:annotation>
      <xs:documentation xml:lang="en">
<div xmlns="http://www.w3.org/1999/xhtml">
      Represents a date expressed
      through a relation with another date. For instance, two
      events dated to 264 BC one of which we know took place after
      the other but for whom no further chronological information
      is available. The second of these should be given a 
      <tt>ComplexDate</tt>

      element comprising the SimpleDate of 264 BC (perhaps with a 
      <tt>XMLSchemaGYear</tt>

      element containing the value -264) and the
      ChronologicalRelationship element which refers to the first
      event and has a type attribute of 'after'.
</div>
     </xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:group ref="heml:DatePrimitivesGroup"/>

        <xs:element ref="heml:ChronologicalRelationship"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ChronologicalRelationship">
 <xs:annotation>
    <xs:documentation xml:lang="en">
      <div xmlns="http://www.w3.org/1999/xhtml">
      In a <tt>ComplexDate</tt>, expresses the relationship between
    current date and the one to which it is related. The only 'relationship'
element now allowed is 'tpq', meaning that the referred-to date is this 
    date's <i>terminus post quem</i>. That is, this date takes place after
the referred-to date.
  </div>
    </xs:documentation>
  </xs:annotation>
    <xs:complexType>
      <xs:attribute name="to" type="xs:anyURI"/>

      <xs:attribute name="relationship" type="heml:PossibleChronologicalRelationships"/>
    </xs:complexType>
  </xs:element>

  <xs:simpleType name="PossibleChronologicalRelationships">
    <xs:restriction base="xs:string">
      <xs:enumeration value="tpq"/>
    </xs:restriction>
  </xs:simpleType>

    <!-- ** Begin 'Location' element and related materials -->

  <xs:element name="Location">
    <xs:annotation>
      <xs:documentation xml:lang="en">The geographical location of
      the event. Currently only encodes points in lat/long and
      gives label.</xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>
        <xs:element name="LocationLabelSet" type="heml:LabelGroupType">
          <xs:annotation>
            <xs:documentation xml:lang="en">xml:lang-encoded set of
            string elements that internationally label this
            Location.</xs:documentation>
          </xs:annotation>

          <xs:unique name="uniqueXmlLangForLocationLabels">
            <xs:selector xpath="heml:Label"/>

            <xs:field xpath="@xml:lang"/>
          </xs:unique>
        </xs:element>
        <xs:element ref="geo:Point"/>
        <xs:element ref="heml:Annex" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>

      <xs:attribute name="uri" type="xs:anyURI" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="LocationRef">
    <xs:annotation>
      <xs:documentation xml:lang="en">
A reference to an existing Location element.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:attribute name="uriRef" type="xs:anyURI" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="LatitudePointType">
    <xs:annotation>
      <xs:documentation xml:lang="en">Gathers together the
      constrains for hours/minutes/seconds appropriate for a point
      of latitude.</xs:documentation>
    </xs:annotation>

      <xs:attribute name="hours" use="required" type="heml:LatitudeHourType"/>

      <xs:attribute name="minutes" use="optional" type="heml:IntegerToSixtyType"/>

      <xs:attribute name="seconds" use="optional" type="heml:IntegerToSixtyType"/>
  </xs:complexType>

  <xs:simpleType name="LatitudeHourType">
    <xs:annotation>
      <xs:documentation xml:lang="en">Limited to values of -90 to
      90, representing the possible values of latitude south and
      north respectively.</xs:documentation>
    </xs:annotation>

    <xs:restriction base="xs:decimal">
      <xs:maxInclusive value="90"/>

      <xs:minInclusive value="-90"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="LongitudePointType">
    <xs:annotation>
      <xs:documentation xml:lang="en">Gathers together the
      constrains for hours/minutes/seconds appropriate for a point
      of longitude.</xs:documentation>
    </xs:annotation>

      <xs:attribute name="hours" use="required" type="heml:LongitudeHourType"/>

      <xs:attribute name="minutes" use="optional" type="heml:IntegerToSixtyType"/>

      <xs:attribute name="seconds" use="optional" type="heml:IntegerToSixtyType"/>
  </xs:complexType>

  <xs:simpleType name="LongitudeHourType">
    <xs:annotation>
      <xs:documentation xml:lang="en">Limited to values of -180 to
      180, representing the possible values of longitude east and
      west respectively.</xs:documentation>
    </xs:annotation>

    <xs:restriction base="xs:decimal">
      <xs:maxInclusive value="180"/>

      <xs:minInclusive value="-180"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IntegerToSixtyType">
    <xs:annotation>
      <xs:documentation xml:lang="en">A positive integer with a
      maximum inclusive value of 59. Used for minutes and
      seconds.</xs:documentation>
    </xs:annotation>

    <xs:restriction base="xs:integer">
      <xs:maxInclusive value="59"/>
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>

    <!-- ****** End LOCATION element. Begin PARTICIPANTS and related elements. -->

  <xs:element name="Participants">
    <xs:annotation>
      <xs:documentation xml:lang="en">heml:Participants comprises
      records and references that list the people who were involved
      in the event. (Should add coporate groups as
      well.)</xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:group ref="heml:ParticipantPersonsGroup" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:group name="ParticipantPersonsGroup">
    <xs:annotation>
      <xs:documentation xml:lang="en">
        Groups PersonWithRole and plain old PersonRef elements.
      </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="heml:PersonWithRole"/>
      <xs:element ref="heml:PersonRef"/>
    </xs:choice>
  </xs:group>

  <xs:element name="PersonRef">
    <xs:annotation>
      <xs:documentation xml:lang="en">A XML IDREF to a heml:Person
      defined elsewhere in this document.</xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:attribute name="uriRef" type="xs:anyURI" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="Person" type="heml:PersonType"/>

  <xs:complexType name="PersonType">
    <xs:annotation>
      <xs:documentation xml:lang="en">
             <div xmlns="http://www.w3.org/1999/xhtml">
      A type that defines a person.
      Each person should be defined only once per heml document,
      and subsequent references should be made with the 
      <tt>heml:PersonRef</tt>

      element.
            </div>
    </xs:documentation>
    </xs:annotation>

    <xs:sequence>
      <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>

      <xs:element ref="heml:NameSet"/>

    </xs:sequence>

    <xs:attribute name="uri" type="xs:anyURI" use="required"/>
  </xs:complexType>

  <xs:element name="PersonWithRole">
    <xs:annotation>
      <xs:documentation xml:lang="en">
        Joins a PersonRef with a RoleLabelSetRef.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:PersonRef"/>
        <xs:element ref="heml:RoleLabelSetRef" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Roles">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:RoleLabelSet" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="RoleLabelSet" type="heml:LabelGroupWithIdType">
    <xs:unique name="uniqueXmlLangForRoleLabels">
      <xs:selector xpath="heml:Label"/>

      <xs:field xpath="@xml:lang"/>
    </xs:unique>
  </xs:element>


  <xs:element name="RoleLabelSetRef" type="heml:BareRefType"/>

  <xs:element name="NameSet">
    <xs:annotation>
      <xs:documentation xml:lang="en">
      <div xmlns="http://www.w3.org/1999/xhtml">
       A collection of heml:Name,
      that is 
      <i>language-specific</i>

      instances, all of which refer to the same name and
      person.
            </div>
       </xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>

        <xs:element ref="heml:Name" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Name">
    <xs:annotation>
      <xs:documentation>
            <div xmlns="http://www.w3.org/1999/xhtml">
        The containing 
      <tt>Name</tt>

      element as represented a certain language. The 
      <tt>xml:lang</tt>

      attribute encodes the language according to 
      <a href="http://lcweb.loc.gov/standards/iso639-2/englangn.html">
      ISO 639-1</a>

      .
    </div>
    </xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Comment" minOccurs="0" maxOccurs="1"/>

        <xs:element name="NameElement" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:simpleContent>
               <xs:extension base="xs:string">
               <xs:attribute name="ordinal" type="xs:integer" use="required"/>
               <xs:attribute name="text" type="xs:string" use="optional"/>
            </xs:extension>
           </xs:simpleContent>
    </xs:complexType>
   </xs:element>
 </xs:sequence>
 <xs:attribute ref="xml:lang"/>
</xs:complexType>
</xs:element>


    <!--******* End PARTICIPANTS and related elements. Begin REFERENCES.-->

  <xs:element name="SimpleLink">
    <xs:annotation>
      <xs:documentation xml:lang="en">
            <div xmlns="http://www.w3.org/1999/xhtml">
      Provides a simple hyperlink
      to a resource. The 
      <tt>xml:lang</tt>

      attribute records the language of the resource in 
      <a href="http://lcweb.loc.gov/standards/iso639-2/englangn.html">
      ISO 639-1</a>

      (two character) format.
      </div>
 
    </xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute ref="xml:lang" use="required"/>
          <xs:attribute name="text" type="xs:string"/>
          <xs:attribute ref="xlink:href" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="NetworkedSourceSet">
    <xs:annotation>
      <xs:documentation xml:lang="en">
            <div xmlns="http://www.w3.org/1999/xhtml">
      For one common document,
      gathers sources which are accessed by network, probably
      through the http. Distinguished from 
      <tt>PhysicalSources</tt>

      , which include printed books.
      </div>
      </xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:SimpleLink" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PhysicalSourceSet">
    <xs:annotation>
      <xs:documentation xml:lang="en">For one common document,
      gathers sources that are available in a physical medium, such
      as printed books.</xs:documentation>
    </xs:annotation>

    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:PhysicalSource" minOccurs="0" maxOccurs="unbounded"/>

        <xs:element ref="heml:Annex" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PhysicalSource">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="heml:PhysicalSourceGroup" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>

      <xs:attribute ref="xml:lang"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="PhysicalSourceGroup">
  <xs:annotation>
      <xs:documentation xml:lang="en">Comprises all the means of defining a 
physical source. Currently, only docbook's bibliomixed element is allowed, but
it is intended that other, more rich markup such as the TEI will be added when they are 
provided in XML Schema.</xs:documentation>
    </xs:annotation>

    <xs:choice>
      <xs:element ref="db:bibliomixed"/>
    </xs:choice>
  </xs:group>
  <!-- A failed attempt to get around the unique particle attribution
       constraint, which I don't really understand -->
  <!--xs:group name="SourcesSubGroup">
    <xs:choice>
      <xs:element ref="heml:NetworkedSourceSet" 
      />
      <xs:element ref="heml:PhysicalSourceSet" minOccurs="0"
      maxOccurs="1" />
    </xs:choice>
  </xs:group-->

  <xs:group name="SourcesGroup">
     <xs:sequence>
      <xs:element ref="heml:NetworkedSourceSet" minOccurs="0" maxOccurs="1"/>
      <xs:element ref="heml:PhysicalSourceSet" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="Evidences">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Evidence" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Evidence">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="EvidenceType" type="xs:string" minOccurs="0" maxOccurs="1"/>

        <xs:element name="EvidenceMedia" type="xs:string" minOccurs="0" maxOccurs="1"/>

        <xs:element ref="heml:Originator" minOccurs="0" maxOccurs="1"/>
        <xs:group ref="heml:SourcesGroup"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Originator" type="heml:PersonType">
    <xs:annotation>
      <xs:documentation xml:lang="en">
        <div xmlns="http://www.w3.org/1999/xhtml">
        <p>An Originator is a person (or, presumably, corporation
        of people) who provides the referred to information. For
        instance, a holocaust-survivor interviewed in a video
        medium is not the author of the account she gives (this
        information would be provided in the 
        <tt>NetworkedSources</tt>

        or 
        <tt>PhysicalSources</tt>

        elements), but she is clearly the person with whom the
        historian is most interested. Accordingly Heml encourages
        the compiler to add as much information about the
        Originator as possible, including element that record sex,
        lifespan, etc.</p>
        </div>
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="References">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="heml:Evidences"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>



</xs:schema>
