<?xml version="1.0" encoding="UTF-8"?>
<!--

       Copyright 2011 Peter Murray-Rust et. al.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

           http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->

<schema xmlns="http://www.w3.org/2001/XMLSchema">
 <xsd:simpleType id="st.actionOrderType" name="actionOrderType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Describes whether child elements are sequential or parallel.</h:div>
    <h:div class="description">There is no default.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="sequential"/>
   <xsd:enumeration value="parallel"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType id="st.alternativeTypeType" name="alternativeTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The type of an alternative.</h:div>
    <h:div class="general">This adds semantics to an _alternative_ and might be used by an RDF or related engine.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="synonym"/>
     <xsd:enumeration value="quasi-synonym"/>
     <xsd:enumeration value="acronym"/>
     <xsd:enumeration value="abbreviation"/>
     <xsd:enumeration value="homonym"/>
     <xsd:enumeration value="identifier"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="angleUnitsType" id="st.angleUnitsType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An enumeration of allowed angle units.</h:div>
    <h:div class="description">May be obsolete.</h:div>
    <!-- <h:div class="example"> <h:pre> </pre.</h:div> -->
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="degrees"/>
   <xsd:enumeration value="radians"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="atomIDType" id="st.atomIDType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An identifier for an atom.</h:div>
    <h:div class="description">
     <h:p>Of the form prefix:suffix where prefix and suffix are purely alphanumeric (with _ and -) and prefix is optional. This is similar to XML IDs (and we promote this as good practice for atomIDs. Other punctuation and whitespace is forbidden, so IDs from (say) PDB files are not satisfactory.</h:p>
     <h:p>The prefix is intended to form a pseudo-namespace so that atom IDs in different molecules may have identical suffixes. It is also useful if the prefix is the ID for the molecule (though this clearly has its limitation). Atom IDs should not be typed as XML IDs since they may not validate.</h:p>
    </h:div>
    <h:div class="example" href="atomIDType1.xml"/>
   </xsd:documentation>
   <xsd:appinfo/>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[A-Za-z_][A-Za-z0-9_\-]*(:[A-Za-z0-9_\-]+)?"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="atomRefArrayType" id="st.atomRefArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of atomRefs.</h:div>
    <h:div class="description">The atomRefs cannot be schema- or schematron-validated. Instances of this type will be used in array-style representation of bonds and atomParitys. It can also be used for arrays of atomIDTypes such as in complex stereochemistry, geometrical definitions, atom groupings, etc.</h:div>
    <h:div class="example" href="atomRefArrayType1.xml"/>
   </xsd:documentation>
   <xsd:appinfo/>
  </xsd:annotation>
  <xsd:list itemType="atomIDType"/>
 </xsd:simpleType>
 <xsd:simpleType name="atomRefs2Type" id="st.atomRefs2Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to two distinct existing atoms in order.</h:div>
    <h:div class="example" href="atomRefs21.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="atomIDType"/>
   </xsd:simpleType>
   <xsd:length value="2"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="atomRefs3Type" id="st.atomRefs3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to three distinct existing atoms in order.</h:div>
    <h:div class="example" href="atomRefs31.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="atomIDType"/>
   </xsd:simpleType>
   <xsd:length value="3"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="atomRefs4Type" id="st.atomRefs4Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to four distinct existing atoms in order.</h:div>
    <h:div class="example" href="atomRefs41.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="atomIDType"/>
   </xsd:simpleType>
   <xsd:length value="4"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="atomRefType" id="st.atomRefType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to an existing atom.</h:div>
    <h:div class="example" href="atomRefType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="atomIDType"/>
 </xsd:simpleType>
 <xsd:simpleType name="bondRefArrayType" id="st.bondRefArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of references to bonds.</h:div>
    <h:div class="description">The references cannot (yet) cannot be schema- or schematron-validated. Instances of this type will be used in array-style representation of electron counts, etc. It can also be used for arrays of bondIDTypes such as in complex stereochemistry, geometrical definitions, bond groupings, etc.</h:div>
   </xsd:documentation>
   <xsd:appinfo/>
  </xsd:annotation>
  <xsd:list itemType="bondRefType"/>
 </xsd:simpleType>
 <xsd:simpleType name="bondRefType" id="st.bondRefType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to an existing bond.</h:div>
    <h:div class="general">A reference to a bond may be made by atoms (e.g. for multicentre or pi-bonds), electrons (for annotating reactions or describing electronic properties) or possibly other bonds (no examples yet). The semantics are relatively flexible.</h:div>
    <h:div class="example" href="bond1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[A-Za-z0-9_\-]+(:[A-Za-z0-9_\-]+)?"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="box3Type" id="st.box3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A box in 3-space.</h:div>
    <h:div class="description">Defined by 6 real numbers (x1 y1 z1 x2 y2 z2). By default these are Cartesian coordinates (with units specified elsewhere - responsibility of schema creator.) If there is a means of specifying oblique axes (e.g. crystallographic cell) the box may be a parallelipiped. The components are grouped in threes ans separated by a semicolon to avoid problems of guessing the convention.</h:div>
    <h:div class="example" href="box31.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="6"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="cellParameterType" id="st.cellParameterType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">enumerated type of cellParameter</h:div>
    <h:div class="description"/>
    <h:div class="example" href="cellParameterType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="length"/>
   <xsd:enumeration value="angle"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="chiralityType" id="st.chiralityType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The chirality of a system or molecule.</h:div>
    <h:div class="description">This is being actively investigated by a IUPAC committee (2002) so the convention is likely to change. No formal default.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="enantiomer"/>
   <xsd:enumeration value="racemate"/>
   <xsd:enumeration value="unknown"/>
   <xsd:enumeration value="other"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="complexType" id="st.complexType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A pair of floats representing a complex number.</h:div>
    <h:div class="example" href="complex1.xml"/>
    <h:div class="example" href="complex.bad.xml">
     <h:p>This example is schema-invalid as it has three floats</h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="2"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="coordinate2Type" id="st.coordinate2Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An x/y coordinate pair.</h:div>
    <h:div class="description">An x/y coordinate pair consisting of two real numbers, separated by whitespace or a comma. In arrays and matrices, it may be useful to set a separate delimiter</h:div>
    <h:div class="example" href="coordinate2Type1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="2"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="coordinate3Type" id="st.coordinate3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An x/y/z coordinate triple.</h:div>
    <h:div class="description">An x/y/z coordinate triple consisting of three real numbers, separated by whitespace or commas. In arrays and matrices, it may be useful to set a separate delimiter.</h:div>
    <h:div class="example" href="coordinate3Type1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="3"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="coordinateComponentArrayType" id="st.coordinateComponentArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of coordinateComponents for a single coordinate.</h:div>
    <h:div class="description">An array of coordinateComponents for a single coordinate where these all refer to an X-coordinate (NOT x,y,z).Instances of this type will be used in array-style representation of 2-D or 3-D coordinates. Currently no machine validation. Currently not used in STMML, but re-used by CML (see example).</h:div>
    <h:div class="example" href="coordinateComponentArrayType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="xsd:double"/>
 </xsd:simpleType>
 <xsd:simpleType name="countArrayType" id="st.countArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Array of counts.</h:div>
    <h:div class="description">Normally, but not always, integers. can be used with a number of elements</h:div>
    <h:div class="curation">2005-11-01: PMR the combination of dataType and list does not work with JUMBO5.0 - so for the meantime we have removed the restriction</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <!-- <xsd:list itemType="countType"/> this is correct but my software doesn't process it-->
  <xsd:list itemType="xsd:double"/>
  <!-- removed by PMR <xsd:restriction base="xsd:double"> <xsd:minExclusive value="0.0"/> <xsd:maxInclusive value="1.0E+99"/> </xsd:restriction> -->
 </xsd:simpleType>
 <xsd:simpleType name="countType" id="st.countType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A count multiplier for an object.</h:div>
    <h:div class="description">Many elements represent objects which can occur an arbitrary number of times in a scientific context. Examples are 
     <h:tt>action</h:tt>, 
     <h:tt>object</h:tt> or 
     <h:tt>molecule</h:tt>s.
    </h:div>
    <h:div class="curation">2005-10-16. Changed to positiveNumerType.</h:div>
    <h:div class="example" href="countType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="positiveNumberType"/>
 </xsd:simpleType>
 <xsd:simpleType name="cyclicType" id="st.cyclicType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The cyclic nature of a bond.</h:div>
    <h:div class="description">Used for indicating the cyclic nature of a bond. It may or may not agree with the actually connection table (i.e. a user may assert that a bond is a/cyclic).</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="cyclic"/>
   <xsd:enumeration value="acyclic"/>
   <xsd:enumeration value="unknown"/>
   <xsd:enumeration value="other"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="dataTypeType" id="st.dataTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">an enumerated type for all dataTypes in STM.</h:div>
    <h:div class="description">
     <h:p>
      <h:tt>dataTypeType</h:tt> represents an enumeration of allowed dataTypes (at present identical with those in XML-Schemas (Part2- datatypes). This means that implementers should be able to use standard XMLSchema-based tools for validation without major implementation problems. 
     </h:p>
     <h:p>It will often be used an an attribute on 
      <h:a href="el.scalar">scalar</h:a>, 
      <h:a href="el.array">array</h:a> or 
      <h:a href="el.matrix">matrix</h:a> elements.
     </h:p>
    </h:div>
    <h:div class="description">Note: the attribute xsi:type might be used to enforce the type-checking but I haven't worked this through yet.</h:div>
    <h:div class="example" href="dataTypeType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="xsd:string"/>
     <xsd:enumeration value="xsd:boolean"/>
     <xsd:enumeration value="xsd:float"/>
     <xsd:enumeration value="xsd:double"/>
     <xsd:enumeration value="xsd:decimal"/>
     <xsd:enumeration value="xsd:duration"/>
     <xsd:enumeration value="xsd:dateTime"/>
     <xsd:enumeration value="xsd:time"/>
     <xsd:enumeration value="xsd:date"/>
     <xsd:enumeration value="xsd:gYearMonth"/>
     <xsd:enumeration value="xsd:gYear"/>
     <xsd:enumeration value="xsd:gMonthDay"/>
     <xsd:enumeration value="xsd:gDay"/>
     <xsd:enumeration value="xsd:gMonth"/>
     <xsd:enumeration value="xsd:hexBinary"/>
     <xsd:enumeration value="xsd:base64Binary"/>
     <xsd:enumeration value="xsd:anyURI"/>
     <xsd:enumeration value="xsd:QName"/>
     <xsd:enumeration value="xsd:NOTATION"/>
     <xsd:enumeration value="xsd:normalizedString"/>
     <xsd:enumeration value="xsd:token"/>
     <xsd:enumeration value="xsd:language"/>
     <xsd:enumeration value="xsd:IDREFS"/>
     <xsd:enumeration value="xsd:ENTITIES"/>
     <xsd:enumeration value="xsd:NMTOKEN"/>
     <xsd:enumeration value="xsd:NMTOKENS"/>
     <xsd:enumeration value="xsd:Name"/>
     <xsd:enumeration value="xsd:NCName"/>
     <xsd:enumeration value="xsd:ID"/>
     <xsd:enumeration value="xsd:IDREF"/>
     <xsd:enumeration value="xsd:ENTITY"/>
     <xsd:enumeration value="xsd:integer"/>
     <xsd:enumeration value="xsd:nonPositiveInteger"/>
     <xsd:enumeration value="xsd:negativeInteger"/>
     <xsd:enumeration value="xsd:long"/>
     <xsd:enumeration value="xsd:int"/>
     <xsd:enumeration value="xsd:short"/>
     <xsd:enumeration value="xsd:byte"/>
     <xsd:enumeration value="xsd:nonNegativeInteger"/>
     <xsd:enumeration value="xsd:unsignedLong"/>
     <xsd:enumeration value="xsd:unsignedInt"/>
     <xsd:enumeration value="xsd:unsignedShort"/>
     <xsd:enumeration value="xsd:unsignedByte"/>
     <xsd:enumeration value="xsd:positiveInteger"/>
     <!-- CML types -->
     <xsd:enumeration value="dataTypeType"/>
     <xsd:enumeration value="namespaceRefType"/>
     <xsd:enumeration value="unitsType"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="delimiterType" id="st.delimiterType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A single non-whitespace character to separate components in arrays.</h:div>
    <h:div class="description">
     <h:p>Some STMML elements (such as 
      <h:a href="el.array">array</h:a>) have content representing concatenated values. The default separator is whitespace (which can be normalised) and this should be used whenever possible. However in some cases the values are empty, or contain whitespace or other problematic punctuation, and a delimiter is required.
     </h:p>
     <h:p>Note that the content string MUST start and end with the delimiter so there is no ambiguity as to what the components are. Only printable characters from the ASCII character set should be used, and character entities should be avoided.</h:p>
     <h:p>When delimiters are used to separate precise whitespace this should always consist of spaces and not the other allowed whitespace characters (newline, tabs, etc.). If the latter are important it is probably best to redesign the application.</h:p>
     <h:p>At present there is a controlled pattern of characters selected so as not to collide with common usage in XML document</h:p>
    </h:div>
    <h:div class="example" href="delimiterType1.xml">
     <h:em>The values in the array are</h:em> "A", "B12", "" (empty string) and "D and E" 
     <h:em>note the spaces</h:em>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <!--<xsd:pattern value="[\!\$\%\^\*\@\~\;\#\,/\|]"/>-->
   <xsd:pattern value="[!%\^\*@~;#,|/]"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="dictionaryPrefixType" id="st.dictionaryPrefixType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A dictionaryPrefix</h:div>
    <h:div class="description">
     <h:p>used to identify a dictionary, units, convention or other metadata. </h:p>
    </h:div>
    <!-- <h:div class="example" href="dictionaryPrefixType1.xml"></h:div>-->
    <h:div class="curation">2005-12-12: PMR. Added for use with dictionary</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:annotation>
    <xsd:documentation>
     <h:div class="description">
      <h:p>The dictionary prefix must conform to XSD.</h:p>
     </h:div>
    </xsd:documentation>
   </xsd:annotation>
   <xsd:pattern value="[A-Za-z][A-Za-z0-9_\.\-]*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="dimensionType" id="st.dimensionType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Allowed values for dimension Types in quantities.</h:div>
    <h:div class="description">
     <h:p>These are the 7 types prescribed by the SI system, together with the "dimensionless" type. We intend to be somewhat uncoventional and explore enhanced values of "dimensionless", such as "angle". This may be heretical, but we find the present system impossible to implement in many cases.</h:p>
     <h:p>Used for constructing entries in a dictionary of units</h:p>
    </h:div>
    <h:div class="example" href="dimensionType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="mass"/>
   <xsd:enumeration value="length"/>
   <xsd:enumeration value="time"/>
   <xsd:enumeration value="current"/>
   <xsd:enumeration value="amount"/>
   <xsd:enumeration value="luminosity"/>
   <xsd:enumeration value="temperature"/>
   <xsd:enumeration value="dimensionless"/>
   <xsd:enumeration value="angle">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">An angl.</h:div>
      <h:div class="description">(formally dimensionless, but useful to have units).</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="eigenOrientationType" id="st.eigenOrientationType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Orientation of the eigenvector matrix.</h:div>
    <h:div class="description">
     <h:p>Specifies whether the rows or columns of the (square) matrix correspond to the eigenvectors. For example, in molecular orbitals the vectors are normally represented as columns, and each column would correspond to a different eigenvalue</h:p>
    </h:div>
    <h:div class="curation">2006-01-13: PMR. Created.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="columnVectors">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The columns are the eigenvectors.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="rowVectors">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The columns are the eigenvectors.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="elementTypeArrayType" id="st.elementTypeArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of elementTypes.</h:div>
    <h:div class="description">Instances of this type will be used in array-style representation of atoms.</h:div>
    <h:div class="example" href="elementTypeArrayType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="elementTypeType"/>
 </xsd:simpleType>
 <xsd:simpleType name="elementTypeType" id="st.elementTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Allowed elementType values.</h:div>
    <h:div class="description">
     <h:p>The periodic table (up to element number 118. In addition the following strings are allowed: 
      <h:ul>
       <h:li>
        <h:tt>Du</h:tt>. ("dummy") This does not correspond to a "real" atom and can support a point in space or within a chemical graph.
       </h:li>
       <h:li>
        <h:tt>R</h:tt>. ("R-group") This indicates that an atom or group of atoms could be attached at this point. 
       </h:li>
      </h:ul>
     </h:p>
    </h:div>
    <h:div class="example" href="elementTypeType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="Ac"/>
     <xsd:enumeration value="Al"/>
     <xsd:enumeration value="Ag"/>
     <xsd:enumeration value="Am"/>
     <xsd:enumeration value="Ar"/>
     <xsd:enumeration value="As"/>
     <xsd:enumeration value="At"/>
     <xsd:enumeration value="Au"/>
     <xsd:enumeration value="B"/>
     <xsd:enumeration value="Ba"/>
     <xsd:enumeration value="Bh"/>
     <xsd:enumeration value="Bi"/>
     <xsd:enumeration value="Be"/>
     <xsd:enumeration value="Bk"/>
     <xsd:enumeration value="Br"/>
     <xsd:enumeration value="C"/>
     <xsd:enumeration value="Ca"/>
     <xsd:enumeration value="Cd"/>
     <xsd:enumeration value="Ce"/>
     <xsd:enumeration value="Cf"/>
     <xsd:enumeration value="Cl"/>
     <xsd:enumeration value="Cm"/>
     <xsd:enumeration value="Co"/>
     <xsd:enumeration value="Cr"/>
     <xsd:enumeration value="Cs"/>
     <xsd:enumeration value="Cu"/>
     <xsd:enumeration value="Db"/>
     <xsd:enumeration value="Dy"/>
     <xsd:enumeration value="Er"/>
     <xsd:enumeration value="Es"/>
     <xsd:enumeration value="Eu"/>
     <xsd:enumeration value="F"/>
     <xsd:enumeration value="Fe"/>
     <xsd:enumeration value="Fm"/>
     <xsd:enumeration value="Fr"/>
     <xsd:enumeration value="Ga"/>
     <xsd:enumeration value="Gd"/>
     <xsd:enumeration value="Ge"/>
     <xsd:enumeration value="H">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Any isotope of hydrogen.</h:div>
        <h:div class="description">
         <h:p>There are no special element symbols for D and T which should use the 
          <h:tt>isotope</h:tt> attribute. 
         </h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="He"/>
     <xsd:enumeration value="Hf"/>
     <xsd:enumeration value="Hg"/>
     <xsd:enumeration value="Ho"/>
     <xsd:enumeration value="Hs"/>
     <xsd:enumeration value="I"/>
     <xsd:enumeration value="In"/>
     <xsd:enumeration value="Ir"/>
     <xsd:enumeration value="K"/>
     <xsd:enumeration value="Kr"/>
     <xsd:enumeration value="La"/>
     <xsd:enumeration value="Li"/>
     <xsd:enumeration value="Lr"/>
     <xsd:enumeration value="Lu"/>
     <xsd:enumeration value="Md"/>
     <xsd:enumeration value="Mg"/>
     <xsd:enumeration value="Mn"/>
     <xsd:enumeration value="Mo"/>
     <xsd:enumeration value="Mt"/>
     <xsd:enumeration value="N"/>
     <xsd:enumeration value="Na"/>
     <xsd:enumeration value="Nb"/>
     <xsd:enumeration value="Nd"/>
     <xsd:enumeration value="Ne"/>
     <xsd:enumeration value="Ni"/>
     <xsd:enumeration value="No"/>
     <xsd:enumeration value="Np"/>
     <xsd:enumeration value="O"/>
     <xsd:enumeration value="Os"/>
     <xsd:enumeration value="P"/>
     <xsd:enumeration value="Pa"/>
     <xsd:enumeration value="Pb"/>
     <xsd:enumeration value="Pd"/>
     <xsd:enumeration value="Pm"/>
     <xsd:enumeration value="Po"/>
     <xsd:enumeration value="Pr"/>
     <xsd:enumeration value="Pt"/>
     <xsd:enumeration value="Pu"/>
     <xsd:enumeration value="Ra"/>
     <xsd:enumeration value="Rb"/>
     <xsd:enumeration value="Re"/>
     <xsd:enumeration value="Rf"/>
     <xsd:enumeration value="Rh"/>
     <xsd:enumeration value="Rn"/>
     <xsd:enumeration value="Ru"/>
     <xsd:enumeration value="S"/>
     <xsd:enumeration value="Sb"/>
     <xsd:enumeration value="Sc"/>
     <xsd:enumeration value="Se"/>
     <xsd:enumeration value="Sg"/>
     <xsd:enumeration value="Si"/>
     <xsd:enumeration value="Sm"/>
     <xsd:enumeration value="Sn"/>
     <xsd:enumeration value="Sr"/>
     <xsd:enumeration value="Ta"/>
     <xsd:enumeration value="Tb"/>
     <xsd:enumeration value="Tc"/>
     <xsd:enumeration value="Te"/>
     <xsd:enumeration value="Th"/>
     <xsd:enumeration value="Ti"/>
     <xsd:enumeration value="Tl"/>
     <xsd:enumeration value="Tm"/>
     <xsd:enumeration value="U"/>
     <xsd:enumeration value="Uun"/>
     <xsd:enumeration value="Uuu"/>
     <xsd:enumeration value="Uub"/>
     <xsd:enumeration value="Uut"/>
     <xsd:enumeration value="Uuq"/>
     <xsd:enumeration value="Uup"/>
     <xsd:enumeration value="Uuh"/>
     <xsd:enumeration value="Uus"/>
     <xsd:enumeration value="Uuo"/>
     <xsd:enumeration value="V"/>
     <xsd:enumeration value="W"/>
     <xsd:enumeration value="Xe"/>
     <xsd:enumeration value="Y"/>
     <xsd:enumeration value="Yb"/>
     <xsd:enumeration value="Zn"/>
     <xsd:enumeration value="Zr"/>
     <xsd:enumeration value="Dummy"/>
     <xsd:enumeration value="Du">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A point or object with no chemical semantics.</h:div>
        <h:div class="description">
         <h:p>Examples can be centroids, bond-midpoints, orienting "atoms" in small z-matrices. </h:p>
         <h:p>Note "Dummy" has the same semantics but is now deprecated.</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="R">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A point at which an atom or group might be attached.</h:div>
        <h:div class="description">
         <h:p>Examples are abbreviated organic functional groups, Markush representations, polymers, unknown atoms, etc. Semantics may be determined by the 
          <h:tt>role</h:tt> attribute on the atom. 
         </h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:pattern value="[A-Za-z]+:[A-Za-z][A-Za-z0-9\-]+"/>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="errorBasisType" id="st.errorBasisType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The basis of an error value.</h:div>
    <h:div class="description">Errors in values can be of several types and this simpleType provides a small controlled vocabulary.</h:div>
    <h:div class="example" href="scalar1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="observedRange"/>
     <xsd:enumeration value="observedStandardDeviation"/>
     <xsd:enumeration value="observedStandardError"/>
     <xsd:enumeration value="estimatedStandardDeviation"/>
     <xsd:enumeration value="estimatedStandardError"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="errorValueArrayType" id="st.errorValueArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Array of error estimate values.</h:div>
    <h:div class="description">An observed or calculated estimate of the error in the value of a numeric quantity. It should be ignored for dataTypes such as URL, date or string. The statistical basis of the errorValueType is not defined - it could be a range, an estimated standard deviation, an observed standard error, etc. This information can be added through _errorBasisType_.</h:div>
    <h:div class="example" href="scalar1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="errorValueType"/>
 </xsd:simpleType>
 <xsd:simpleType name="errorValueType" id="st.errorValueType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An estimate of the error in the value of a quantity.</h:div>
    <h:div class="description">An observed or calculated estimate of the error in the value of a numeric quantity. It should be ignored for dataTypes such as URL, date or string. The statistical basis of the errorValueType is not defined - it could be a range, an estimated standard deviation, an observed standard error, etc. This information can be added through _errorBasisType_.</h:div>
    <h:div class="example" href="scalar1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double"/>
 </xsd:simpleType>
 <xsd:simpleType name="floatArrayType" id="st.floatArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">OBSOLETE An array of floats.</h:div>
    <h:div class="description">An array of floats or other real numbers. Not used in STM Schema, but re-used by CML and other languages.</h:div>
    <h:div class="example" href="floatArrayType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="xsd:double"/>
 </xsd:simpleType>
 <xsd:simpleType name="formalChargeArrayType" id="st.formalChargeArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Array of formalCharges.</h:div>
    <h:div class="description">Used for electron-bookeeping. This has no relation to its calculated (fractional) charge or oxidation state.</h:div>
    <h:div class="example" href="formalChargeType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="formalChargeType"/>
 </xsd:simpleType>
 <xsd:simpleType name="formalChargeType" id="st.formalChargeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The formal charge on an object.</h:div>
    <h:div class="description">Used for electron-bookeeping. This has no relation to its calculated (fractional) charge or oxidation state.</h:div>
    <h:div class="example" href="formalChargeType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:integer"/>
 </xsd:simpleType>
 <xsd:simpleType id="st.formatType" name="formatType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Format of a spectrum.</h:div>
    <h:div class="description">The data structure of the spectrum. (Not the format of the data). This describes how the data structure is to be interpreted.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="1D">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">one dimensional spectru.</h:div>
        <h:div class="description"> Data are represented by two _array_s, one representing the independent variable (e.g. wavelength, mass number) and the other the measured dependent variable (absorption, intensity, etc.). This can normally be plotted directly with the independent variable as the x-axis. The order of the points is not necessarily significant and may be increasing or decreasing.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="2Dsymm">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Two dimensional spectru.</h:div>
        <h:div class="description"> Data are represented by a single symmetric _matrix_ with both axes identical (i.e. the same independent variable). A typical example is a "2D 1HNMR spectrum". The dependent variable is represented by the matrix elements. This can normally be plotted as a square symmentric about a diagonal.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="2Dasymm">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Two dimensional spectrum with different axe.</h:div>
        <h:div class="description">Data are represented by non-square _matrix_ with independent axes. A typical example is a "2D 1H 13C NMR spectrum". The dependent variable is represented by the matrix elements. .</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="formulaType" id="st.formulaType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A concise representation for a molecular formula.</h:div>
    <h:div class="description">This MUST adhere to a whitespaced syntax so that it is trivially machine-parsable. Each element is followed by its count (which may be decimal), and the string is optionally ended by a formal charge (of form d or -d, i.e. no '+') NO brackets or other nesting is allowed.</h:div>
    <h:div class="example" href="formulaType1.xml"/>
    <h:div class="curation">2005-08-30: allowed decimal points</h:div>
   </xsd:documentation>
   <xsd:appinfo/>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <!-- obsoleted <xsd:pattern value="\s*([A-Z][a-z]?\s+([1-9][0-9]*(\.[0-9]*)?\s*))+(\s+[-|+]?[0-9]+)?\s*"/>-->
   <!-- failed to support charge <xsd:pattern value="\s*([A-Z][a-z]?\s+(([0-9]+(\.[0-9]*)?)|(\.[0-9]*))?\s*)+"/>-->
   <xsd:pattern value="\s*([A-Z][a-z]?\s+(([0-9]+(\.[0-9]*)?)|(\.[0-9]*))?\s*)+(\s+[\-|+]?[0-9]+)?\s*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType id="st.ftType" name="ftType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Domain of an FT spectrum.</h:div>
    <h:div class="description">Indicates whether a spectrum is raw FID or has been transforme.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="raw">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Data are raw, so will normally require transforming.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="transformed">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Data have been transformed. This value indicates that an FT experiment and transformation have been performe.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="none">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">This was not known to be an FT experiment. (It may have been, but the author or abstracter omitted to mention it).</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="headType" id="st.headType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The head linker in a polymeric repeat unit</h:div>
    <h:div class="description">
     <h:p>A polymeric chain may be described by liniing the head of one repeat unit to the tail or head of another. The head attribute indicates the atom id (normally on an atom of elementType="R") which acts as the head</h:p>
    </h:div>
    <h:div class="curation">2006-05-20: PMR added</h:div>
    <h:div class="example" href="headType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[A-z][A-z0-9_]*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="hydrogenCountArrayType" id="st.hydrogenCountArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Array of hydrogenCounts.</h:div>
    <h:div class="description">The total number of hydrogen atoms bonded to an atom or contained in a molecule, whether explicitly included as atoms or not. It is an error to have hydrogen count less than the explicit hydrogen count. There is no default value and no assumptions about hydrogen Count can be made if it is not given. If hydrogenCount is given on every atom, then the values can be summed to give the total hydrogenCount for the (sub)molecule. Because of this hydrogenCount should not be used where hydrogen atoms bridge 2 or more atoms.</h:div>
    <h:div class="example" href="atom1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="hydrogenCountType"/>
 </xsd:simpleType>
 <xsd:simpleType name="hydrogenCountType" id="st.hydrogenCountType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The total number of hydrogen atoms bonded to an object.</h:div>
    <h:div class="description">The total number of hydrogen atoms bonded to an atom or contained in a molecule, whether explicitly included as atoms or not. It is an error to have hydrogen count less than the explicit hydrogen count. There is no default value and no assumptions about hydrogen Count can be made if it is not given. If hydrogenCount is given on every atom, then the values can be summed to give the total hydrogenCount for the (sub)molecule. Because of this hydrogenCount should not be used where hydrogen atoms bridge 2 or more atoms.</h:div>
    <h:div class="example" href="atom1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:nonNegativeInteger"/>
 </xsd:simpleType>
 <xsd:simpleType name="idArrayType" id="st.idArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of ids or idRefs.</h:div>
    <h:div class="description">See idType.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="idType"/>
 </xsd:simpleType>
 <xsd:simpleType name="idType" id="st.idType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A unique ID for an element.</h:div>
    <h:div class="description">
     <h:p>This is not formally of type ID (an XML NAME which must start with a letter and contain only letters, digits and 
      <h:tt>.-_:</h:tt>). It is recommended that IDs start with a letter, and contain no punctuation or whitespace. The function in XSLT will generate semantically void unique IDs.
     </h:p>
     <h:p>It is difficult to ensure uniqueness when documents are merged. We suggest namespacing IDs, perhaps using the containing elements as the base. Thus 
      <h:tt>mol3:a1</h:tt> could be a useful unique ID. However this is still experimental.
     </h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <!-- <xsd:restriction base="xsd:QName"/>-->
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[A-Za-z][A-Za-z0-9\.\-_]*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType id="st.inheritType" name="inheritType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Inheritance mechanism.</h:div>
    <h:div class="description">
     <h:p>A reference to an existing element can be used to supplement values such as coordinates. The 
      <h:tt>inheritance</h:tt> attribute determines whether the values are supplemented, overwritten or deleted. In the example:
     </h:p>
     <h:pre> &lt;molecule id="m1" view="initial"&gt; &lt;atomArray&gt; &lt;atom id="a1" x3="0.1"/&gt; &lt;/atomArray&gt; &lt;/molecule&gt; &lt;!-- this adds more information --&gt; &lt;molecule ref="m1" view="initial" inherit="supplement"&gt; &lt;atomArray&gt; &lt;atom id="a1" hydrogenCount="1"/&gt; &lt;/atomArray&gt; &lt;/molecule&gt; &lt;!-- this will overwrite the previous values --&gt; &lt;molecule ref="m1" inherit="overwrite" view="final" id="m2"&gt; &lt;atomArray&gt; &lt;atom id="a1" x3="0.1"/&gt; &lt;/atomArray&gt; &lt;/molecule&gt; &lt;!-- this will delete the previous values --&gt; &lt;molecule ref="m1" inherit="delete" view="restart"&gt; &lt;atomArray&gt; &lt;atom id="a1" hydrogenCount=""/&gt; &lt;/atomArray&gt; &lt;/molecule&gt; </h:pre>
     <h:p> The first 
      <h:tt>molecule/@ref</h:tt> adds complementary information, the second changes the values. Software is allowed to generate two independent copies of the molecule and reference them by different IDs (
      <h:tt>m1</h:tt> and 
      <h:tt>m2</h:tt>). 
     </h:p>
     <h:p>This mechanism is necessary to manage the implied inheritance of partial information during minimisations and dynamics. It requires careful software implementation. </h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="merge">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">Values from this element will be merged.</h:div>
      <h:div class="description">The merging is element-specific with the intention that information from the current element will not conflict with the existing information. It is an error if there is a conflict.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="replace">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">Values from this element will replace existing information.</h:div>
      <h:div class="description">The merging is element-specific with the intention that information from the current element will replace the existing information.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="delete">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">Components of this element will de deleted if they exist.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="integerArrayType" id="st.integerArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of integers.</h:div>
    <h:div class="description">An array of integers; for re-use by other schemas. Not machine-validatable.</h:div>
    <h:div class="example" href="integerArrayType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="xsd:integer"/>
 </xsd:simpleType>
 <xsd:simpleType name="isotopeType" id="st.isotopeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The numeric representation of an isotope.</h:div>
    <h:div class="description">
     <h:p>In core CML this represents a single number; either the combined proton/neutron count or a more accurate estimate of the nuclear mass. This is admittedly fuzzy, and requires a more complex object (which can manage conventions, lists of isotopic masses, etc.) See 
      <h:a href="el.isotope">isotope</h:a>.
     </h:p>
     <h:p>The default is "natural abundance" - whatever that can be interpreted as.</h:p>
     <h:p>Delta values (i.e. deviations from the most abundant istopic mass) are never allowed.</h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minInclusive value="0.0"/>
   <xsd:maxInclusive value="99999999999.0"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="isotopicSpinType" id="st.isotopicSpinType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A fractional representation of the spin of the nucleus.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="\d{1,}(/\d)?"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="latticeType" id="st.latticeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Allowed lattice types.</h:div>
    <h:div class="description"/>
    <h:div class="example" href="lattice3.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="primitive"/>
     <xsd:enumeration value="full"/>
     <xsd:enumeration value="aCentred">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">lattice with A centering.</h:div>
        <h:div class="description">A lattice which uses the translation operator {0, 0.5, 0.5}.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div class="summary">User-defined lattice-type.</h:div>
       <h:div class="description">This definition must be by reference to a namespaced dictionary entry.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="line3Type" id="st.line3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An unbounded line in 3-space.</h:div>
    <h:div class="description">Defined by 6 real numbers, conventionally an arbitrary point on the line and a vector3. There is no significance to the point (i.e. it is not the "end of the line") and there are an infinite number of ways of representing the line. DANGER. Line3 now uses the point3 and vector3 attributes and the line3Type may be OBSOLETED.</h:div>
    <h:div class="example" href="line31.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="6"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType id="st.linkTypeType" name="linkTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The type of the link.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="extended">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">A container for locators.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="locator">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">A link to an element.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="arc">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">A labelled link.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType id="st.lmType" name="lmType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">symbolic represention of l amd m.</h:div>
    <h:div class="description">takes avlues of s, p, px, dxy, dx2y2, f, etc.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="s"/>
   <xsd:enumeration value="p"/>
   <xsd:enumeration value="px"/>
   <xsd:enumeration value="py"/>
   <xsd:enumeration value="pz"/>
   <xsd:enumeration value="d"/>
   <xsd:enumeration value="dxy"/>
   <xsd:enumeration value="dyz"/>
   <xsd:enumeration value="dxz"/>
   <xsd:enumeration value="dx2y2"/>
   <xsd:enumeration value="dz2"/>
   <xsd:enumeration value="f"/>
   <xsd:enumeration value="g"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="matrix44Type" id="st.matrix44Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A 4x4 transformation matrix</h:div>
    <h:div class="description">This is the base for extending the transform3 element. </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="16"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="matrixType" id="st.matrixType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Allowed matrix types.</h:div>
    <h:div class="description">
     <h:p>Many are square matrices. By default all elements must be included. For symmetric, antisymmetric and diagonal matrices some compression is possible by not reporting the identical or forced zero elements. These have their own subtypes, usually with UT or LT appended. Use these with caution as there is chance of confusion and you cannot rely on standard software to read these.</h:p>
     <h:p>The matrix type fixes the order and semantics of the elements in the XML element but does not mandate any local syntax. Thus an application may insert newline characters after each row or use a &lt;row&gt; element.</h:p>
    </h:div>
    <h:div class="example" href="matrix1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="rectangular">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Rectangular with no semantic constraints and ordered rowwise (i.e. the column index runs fastest). 
         <h:pre> 1 2 3 4 0 3 5 6 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="square">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square with no semantic constraints. 
         <h:pre> 1 2 78 3 4 -1 -34 2 7 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="squareSymmetric">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square symmetric with all elements explicit. 
         <h:pre> 1 2 3 2 7 1 3 1 9 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="squareSymmetricLT">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square symmetric with the diagonal and lower triangle explicit and the upper triangle omitted. Rows are of length 1, 2, 3... 
         <h:pre> 1 2 7 3 1 9 </h:pre> is equivalent to 
         <h:pre> 1 2 3 2 7 1 3 1 9 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="squareSymmetricUT">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square symmetric with the diagonal and upper triangle explicit. Rows are of length n, n-1, ... 2, 1 
         <h:pre> 1 7 9 2 -1 34 </h:pre> is equivalent to 
         <h:pre> 1 7 9 7 2 -1 9 -1 34 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="squareAntisymmetric">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square antisymmetric with all elements explicit. The diagonal is necessarily zero. 
         <h:pre> 0 -2 3 2 0 1 -3 -1 0 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="squareAntisymmetricLT">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square symmetric with the lower triangle explicit and diagonal and upper triangle omitted. Rows are of length 1, 2,... n-1. 
         <h:pre> -7 -9 1 </h:pre> is equivalent to 
         <h:pre> 0 7 9 -7 0 -1 -9 1 0 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="squareAntisymmetricUT">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square symmetric with the upper triangle explicit and diagonal and lower triangle omitted. Rows are of length n-1, n-2,... 2,1. 
         <h:pre> 7 9 -1 </h:pre> is equivalent to 
         <h:pre> 0 7 9 -7 0 -1 -9 1 0 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="diagonal">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Symmetric. Elements are zero except on the diagonal. No compressed representation available (use 
         <h:tt>array</h:tt> element).
        </h:div>
        <h:pre> 1 0 0 0 3 0 0 0 4 </h:pre>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="upperTriangular">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square. Elements are zero below the diagonal 
         <h:pre> 1 2 3 4 0 3 5 6 0 0 4 8 0 0 0 2 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="upperTriangularUT">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square. Elements below the diagonal are zero and omitted, and rows are of length n, n-1, ... , 2, 1. 
         <h:pre> 1 2 3 4 3 5 6 4 8 2 </h:pre> is equivalent to 
         <h:pre> 1 2 3 4 0 3 5 6 0 0 4 8 0 0 0 2 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="lowerTriangular">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square. Elements are zero above the diagonal 
         <h:pre> 1 0 0 7 3 0 9 2 4 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="lowerTriangularLT">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square. Elements above the diagonal are zero and omitted, and rows are of length 1, 2, ...n. 
         <h:pre> 1 3 7 9 2 3 </h:pre> is equivalent to 
         <h:pre> 1 0 0 3 7 0 9 2 3 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="unit">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square. Diagonal elements are 1 and off-diagonal are zero. 
         <h:pre> 1 0 0 0 1 0 0 0 1 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="unitary">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square. When multiplied by its transpose gives the unit matrix. 
         <h:pre> 0 -1 0 1 0 0 0 0 1 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="rowEigenvectors">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Square. Each row corresponds to an eigenvector of a square matrix. Elements are real. The length of the eigenvectors is undefined, i.e. they are not required to be normalised to 1. 
         <h:pre> 0 -1 0 1 0 0 0 0 1 </h:pre>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="rotation22">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">The rotation is defined by the matrix premultiplyin a column vector (x, y) . 
         <h:pre> 0 -1 1 0 </h:pre> produces (-y, x), i.e. a rotation of -90 degrees.
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="rotationTranslation32">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">A third column defining the translation is added to a rotation22. 
         <h:pre> 0 -1 22 1 0 33 </h:pre> produces (-y + 22, x + 33), i.e. a rotation of -90 degrees followed by a translation of (22, 33).
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="homogeneous33"/>
     <xsd:enumeration value="rotation33"/>
     <xsd:enumeration value="rotationTranslation43"/>
     <xsd:enumeration value="homogeneous44"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div class="summary">User-defined matrix-type.</h:div>
       <h:div class="description">This definition must be by reference to a namespaced dictionary entry.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="maxType" id="st.maxType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The maximum INCLUSIVE value of a quantity.</h:div>
    <h:div class="description">
     <h:p>The maximum INCLUSIVE value of a sortable quantity such as numeric, date or string. It should be ignored for dataTypes such as URL. The use of 
      <h:tt>min</h:tt> and 
      <h:tt>max</h:tt> attributes can be used to give a range for the quantity. The statistical basis of this range is not defined. The value of 
      <h:tt>max</h:tt> is usually an observed quantity (or calculated from observations). To restrict a value, the 
      <h:tt> maxExclusive</h:tt> type in a dictionary should be used.
     </h:p>
     <h:p>The type of the maximum is the same as the quantity to which it refers - numeric, date and string are currently allowed</h:p>
    </h:div>
    <h:div class="example" href="maxType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string"/>
 </xsd:simpleType>
 <xsd:simpleType id="st.measurementType" name="measurementType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Type of spectral measurement.</h:div>
    <h:div class="description">The nature of the measured data. This is not an exhaustive list and should only be used if it affects the storage or immediate processing.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="transmittance">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Data are transmittance, so "peaks" are usually troughs.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="absorbance">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Data are absorbanc.</h:div>
        <h:div class="description">so "peaks" are normally peaks.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="metadataType" id="st.metadataType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The name of the metadata.</h:div>
    <h:div class="description">Metadata consists of name-value pairs (value is in the "content" attribute). The names are from a semi-restricted vocabulary, mainly Dublin Core. The content is unrestricted. The order of metadata has no implied semantics at present. Users can create their own metadata names using the namespaced prefix syntax (e.g. foo:institution). Ideally these names should be defined in an STMML dictionary.</h:div>
    <h:div class="curation">2003-03-05: Added UNION to manage non-controlled name.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="dc:coverage">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">The extent or scope of the content of the resource.</h:div>
        <h:div class="description">Coverage will typically include spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity). Recommended best practice is to select a value from a controlled vocabulary (for example, the Thesaurus of Geographic Names [TGN]) and that, where appropriate, named places or time periods be used in preference to numeric identifiers such as sets of coordinates or date ranges.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:description">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">An account of the content of the resource.</h:div>
        <h:div class="description">Description may include but is not limited to: an abstract, table of contents, reference to a graphical representation of content or a free-text account of the content.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:identifier">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">An unambiguous reference to the resource within a given context.</h:div>
        <h:div class="description">Recommended best practice is to identify the resource by means of a string or number conforming to a formal identification system. Example formal identification systems include the Uniform Resource Identifier (URI) (including the Uniform Resource Locator (URL)), the Digital Object Identifier (DOI) and the International Standard Book Number (ISBN).</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:format">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">The physical or digital manifestation of the resource.</h:div>
        <h:div class="description">Typically, Format may include the media-type or dimensions of the resource. Format may be used to determine the software, hardware or other equipment needed to display or operate the resource. Examples of dimensions include size and duration. Recommended best practice is to select a value from a controlled vocabulary (for example, the list of Internet Media Types [MIME] defining computer media formats).</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:relation">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">A reference to a related resource.</h:div>
        <h:div class="description">Recommended best practice is to reference the resource by means of a string or number conforming to a formal identification system.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:rights">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">Information about rights held in and over the resource.</h:div>
        <h:div class="description">Typically, a Rights element will contain a rights management statement for the resource, or reference a service providing such information. Rights information often encompasses Intellectual Property Rights (IPR), Copyright, and various Property Rights. If the Rights element is absent, no assumptions can be made about the status of these and other rights with respect to the resource.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:subject">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">The topic of the content of the resource.</h:div>
        <h:div class="description">Typically, a Subject will be expressed as keywords, key phrases or classification codes that describe a topic of the resource. Recommended best practice is to select a value from a controlled vocabulary or formal classification scheme.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:title">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">A name given to the resource.</h:div>
        <h:div class="description">Typically, a Title will be a name by which the resource is formally known.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:type">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">The nature or genre of the content of the resource.</h:div>
        <h:div class="description">Type includes terms describing general categories, functions, genres, or aggregation levels for content. Recommended best practice is to select a value from a controlled vocabulary (for example, the working draft list of Dublin Core Types [DCT1]). To describe the physical or digital manifestation of the resource, use the FORMAT element.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:contributor">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">An entity responsible for making contributions to the content of the resource.</h:div>
        <h:div class="description">Examples of a Contributor include a person, an organisation, or a service. Typically, the name of a Contributor should be used to indicate the entity.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:creator">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">An entity primarily responsible for making the content of the resource.</h:div>
        <h:div class="description">Examples of a Creator include a person, an organisation, or a service. Typically, the name of a Creator should be used to indicate the entity.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:publisher">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">An entity responsible for making the resource available.</h:div>
        <h:div class="description">Examples of a Publisher include a person, an organisation, or a service. Typically, the name of a Publisher should be used to indicate the entity.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:source">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">A Reference to a resource from which the present resource is derived.</h:div>
        <h:div class="description">The present resource may be derived from the Source resource in whole or in part. Recommended best practice is to reference the resource by means of a string or number conforming to a formal identification system.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:language">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">A language of the intellectual content of the resource.</h:div>
        <h:div class="description">Recommended best practice for the values of the Language element is defined by RFC 1766 [RFC1766] which includes a two-letter Language Code (taken from the ISO 639 standard [ISO639]), followed optionally, by a two-letter Country Code (taken from the ISO 3166 standard [ISO3166]). For example, 'en' for English, 'fr' for French, or 'en-uk' for English used in the United Kingdom.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="dc:date">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">A date associated with an event in the life cycle of the resource.</h:div>
        <h:div class="description">Typically, Date will be associated with the creation or availability of the resource. Recommended best practice for encoding the date value is defined in a profile of ISO 8601 [W3CDTF] and follows the YYYY-MM-DD format.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="cmlm:safety">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">Entry contains information relating to chemical safety.</h:div>
        <h:div class="description">Typically the content will be a reference to a handbook, MSDS, threshhold or other human-readable strin.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="cmlm:insilico">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">Part or whole of the information was computer-generated.</h:div>
        <h:div class="description">Typically the content will be the name of a method or a progra.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="cmlm:structure">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="definition">3D structure included.</h:div>
        <h:div class="description">details include.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="cmlm:reaction"/>
     <xsd:enumeration value="cmlm:identifier"/>
     <xsd:enumeration value="other"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="minType" id="st.minType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The minimum INCLUSIVE value of a quantity.</h:div>
    <h:div class="description">
     <h:p>The minimum INCLUSIVE value of a sortable quantity such as numeric, date or string. It should be ignored for dataTypes such as URL. The use of 
      <h:tt>min</h:tt> and 
      <h:tt>min</h:tt> attributes can be used to give a range for the quantity. The statistical basis of this range is not defined. The value of 
      <h:tt>min</h:tt> is usually an observed quantity (or calculated from observations). To restrict a value, the 
      <h:tt> minExclusive</h:tt> type in a dictionary should be used.
     </h:p>
     <h:p>The type of the minimum is the same as the quantity to which it refers - numeric, date and string are currently allowed</h:p>
    </h:div>
    <h:div class="example" href="maxType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string"/>
 </xsd:simpleType>
 <xsd:simpleType name="moleculeIDType" id="st.moleculeIDType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An identifier for an molecule.</h:div>
    <h:div class="description">
     <h:p>Of the form prefix:suffix where prefix and suffix are purely alphanumeric (with _ and -) and prefix is optional. This is similar to XML IDs (and we promote this as good practice for moleculeIDs. Other punctuation and whitespace is forbidden, so IDs from (say) PDB files are not satisfactory.</h:p>
     <h:p>The prefix is intended to form a pseudo-namespace so that molecule IDs in different molecules may have identical suffixes. It is also useful if the prefix is the ID for the molecule (though this clearly has its limitation). molecule IDs should not be typed as XML IDs since they may not validate.</h:p>
    </h:div>
    <h:div class="curation">2006-11-24: PMR created.</h:div>
    <h:div class="example" href="moleculeIDType1.xml"/>
   </xsd:documentation>
   <xsd:appinfo/>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[A-Za-z_][A-Za-z0-9_\-]*(:[A-Za-z0-9_\-]+)?"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="moleculeRefArrayType" id="st.moleculeRefArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of moleculeRefs.</h:div>
    <h:div class="description">Typical applications are the annotation of peaks in chromatograms and mapping reactions. The context of the id resolution is the childOrSibling concept.</h:div>
    <!-- <h:div class="example" href="moleculeRefArrayType1.xml"></h:div>-->
   </xsd:documentation>
   <xsd:appinfo/>
  </xsd:annotation>
  <xsd:list itemType="moleculeRefType"/>
 </xsd:simpleType>
 <xsd:simpleType name="moleculeRefs2Type" id="st.moleculeRefs2Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to two distinct existing molecules in order.</h:div>
    <h:div class="summary">At present used for joining molecules or fragments(with join).</h:div>
    <h:div class="curation">2006-11-24: PMR created</h:div>
    <h:div class="example" href="moleculeRefs21.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="moleculeIDType"/>
   </xsd:simpleType>
   <xsd:length value="2"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="moleculeRefType" id="st.moleculeRefType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to an existing molecule.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="idType"/>
 </xsd:simpleType>
 <xsd:simpleType name="namespaceArrayType" id="st.namespaceArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of namespaceURIs with required protocol.</h:div>
    <h:div class="description">
     <h:p>used to identify dictionaries, units, conventions or other metadata.</h:p>
    </h:div>
    <!-- <h:div class="example" href="namespaceRefType1.xml"></h:div>-->
    <h:div class="curation">2005-12-17: PMR. Added for use with unitList</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="namespaceType"/>
 </xsd:simpleType>
 <xsd:simpleType name="namespaceRefType" id="st.namespaceRefType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An XML QName with required prefix.</h:div>
    <h:div class="description">
     <h:p>A string referencing a dictionary, units, convention or other metadata.</h:p>
     <h:p>The purpose is to allow authors to extend the vocabulary through their own namespaces without altering the schema. The prefix is mandatory. This convention is only used within CML and related languages; it is NOT a generic URI. </h:p>
    </h:div>
    <h:div class="example" href="namespaceRefType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:annotation>
    <xsd:documentation>
     <h:div class="description">
      <h:p>The namespace prefix must start with an alpha character and can only contain alphanumeric and '_'. The suffix can have characters from the XML ID specification (alphanumeric, '_', '.' and '-'</h:p>
     </h:div>
    </xsd:documentation>
   </xsd:annotation>
   <xsd:pattern value="[A-Za-z][A-Za-z0-9_]*:[A-Za-z][A-Za-z0-9_\.\-]*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="namespaceType" id="st.namespaceType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A namespaceURI with required protocol.</h:div>
    <h:div class="description">
     <h:p>used to identify a dictionary, units, convention or other metadata. Not yet confirmant with XSD</h:p>
    </h:div>
    <h:div class="example" href="namespaceRefType1.xml"/>
    <h:div class="curation">2005-12-10: PMR. Added for use with dictionary</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:annotation>
    <xsd:documentation>
     <h:div class="description">
      <h:p>The namespace prefix must start with a protocol.</h:p>
     </h:div>
    </xsd:documentation>
   </xsd:annotation>
   <xsd:pattern value="http://[A-Za-z][A-Za-z0-9_\.\-]*(/[A-Za-z0-9_\.\-]+)+"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="nonHydrogenCountType" id="st.nonHydrogenCountType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The number of non-hydrogen atoms attached to an atom.</h:div>
    <h:div class="description">Obsolete in core CML. Only useful in CML queries.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:nonNegativeInteger"/>
 </xsd:simpleType>
 <xsd:simpleType name="nonNegativeAngleType" id="st.nonNegativeAngleType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A non-signed angle.</h:div>
    <h:div class="description">Re-used by _angle_. Note that we also provide positiveAngleType (e.g. for cell angles) and torsionAngleType for _torsion_.</h:div>
    <h:div class="example" href="nonNegativeAngleType.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minInclusive value="0.0"/>
   <xsd:maxInclusive value="180.0"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="nonNegativeNumberType" id="st.nonNegativeNumberType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="description">A nonNegative number.</h:div>
    <h:div class="description">Note that we also provide positiveNumber to avoid inclusive zero. The maximum number is 1.0E+999 since 'unbounded' is more difficult to implement. This is greater than Eddington's estimate of the number of particles in the universe so it should work for most people.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minInclusive value="0.0"/>
   <xsd:maxInclusive value="1.0E+99"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="occupancyArrayType" id="st.occupancyArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Array of atomic occupancies.</h:div>
    <h:div class="description">Primarily for crystallography. Values outside 0-1 are not allowed.</h:div>
    <h:div class="example" href="atom1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="occupancyType"/>
 </xsd:simpleType>
 <xsd:simpleType name="occupancyType" id="st.occupancyType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A floating point number between 0 and 1 inclusive</h:div>
    <h:div class="description">Originally for crystallographic occupancy but re-usable for fractional yield, etc.</h:div>
    <h:div class="example" href="atom1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minInclusive value="0"/>
   <xsd:maxInclusive value="1"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="orderArrayType" id="st.orderArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of bond orders.</h:div>
    <h:div class="description">See order.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="orderType"/>
 </xsd:simpleType>
 <xsd:simpleType name="orderType" id="st.orderType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Bond order.</h:div>
    <h:div class="description">
     <h:p>This is purely conventional and used for bond/electron counting. There is no default value. The emptyString attribute can be used to indicate a bond of unknown or unspecified type. The interpretation of this is outside the scope of CML-based algorithms. It may be accompanied by a 
      <h:tt>convention</h:tt> attribute on the 
      <h:tt>bond</h:tt> which links to a dictionary. Example: 
      <h:tt>&lt;bond convention="ccdc:9" atomRefs2="a1 a2"/&gt;</h:tt> could represent a delocalised bond in the CCDC convention.
     </h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="hbond">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Hydrogen bond.</h:div>
        <h:div class="description">Carries no semantics but will normally be between a hydrogen atom and an element with lone pairs.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="partial01">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Partial bond.</h:div>
        <h:div class="description">Can be used for a partial bond in a transition state, intermolecular interaction, etc. There is no numeric value associated and the bond order could be anywhere between 0 and single.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="S">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Single bond.</h:div>
        <h:div class="description">synonymous with "1.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="1">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Single bond.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="partial12">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Intermediate between 1 and .</h:div>
        <h:div class="description">Could be used for a transition state or a delocalised system.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="D">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Double bond.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="2">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Double bond.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="partial23">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Intermediate between 2 and .</h:div>
        <h:div class="description">Could be used for a transition state or a delocalised system.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="T">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Triple bond.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="3">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Triple bond.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="A">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Aromatic bond.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType id="st.peakMultiplicityType" name="peakMultiplicityType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Multiplicity of a peak.</h:div>
    <h:div class="description">Uses a semi-controlled vocabulary.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="singlet">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A single maximum within the peak rang.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="doublet">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Two maxima (not necessarily equal) within the peak rang.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="triplet">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Three maxima (not necessarily equal) within the peak rang.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="quartet">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Four maxima (not necessarily equal) within the peak rang.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="quintet">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Five maxima (not necessarily equal) within the peak rang.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="sextuplet">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Six maxima (not necessarily equal) within the peak rang.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="multiplet">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">Several maxima (not necessarily equal) within the peak rang.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div>User contributed vocabulary of type foo:ba.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType id="st.peakShapeType" name="peakShapeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Shape of a peak.</h:div>
    <h:div class="description">Semi-controlled vocabulary such as broad or sharp.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="sharp">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A sharp peak.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="broad">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A broad peak.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="shoulder">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A brodening of a peak suggesting the presence of a smaller incompletely resolved component.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div class="summary">User contributed vocabulary of type foo:bar.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType id="st.peakStructureTypeType" name="peakStructureTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">type of a peakStructure.</h:div>
    <h:div class="description">Semi-controlled vocabulary such as coupling or splitting.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="coupling">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A coupling such as in NMR.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="splitting">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A splitting such as in NMR.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div class="summary">User contributed vocabulary.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="peakWidthType" id="st.peakWidthType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The width of a peak.</h:div>
    <h:div class="description">At present we allow a peakWidth to be positive or exactly zero (to signal that the peak should not be integrated).</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minInclusive value="0.0"/>
   <xsd:maxInclusive value="1.0E+99"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="plane3Type" id="st.plane3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An unbounded plane in 3-space.</h:div>
    <h:div class="description">Defined by 4 real numbers, conventionally a vector3 normal to the plane and a signed scalar representing the distance to the origin. The vector must not be of zero length (and need not be normalized.</h:div>
    <h:div class="example" href="plane31.xml">
     <h:p>The first three numbers are the vector, followed by the distance</h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="4"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="point3Type" id="st.point3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A point in 3-space.</h:div>
    <h:div class="description">The 3 components can have any signed value.</h:div>
    <h:div class="example" href="point31.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="3"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="positiveAngleType" id="st.positiveAngleType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A non-signed angle such as a cell angle.</h:div>
    <h:div class="description">Re-used by _crystal_. Note that we also provide nonNegativeAngleType (e.g. for bond angles).</h:div>
    <h:div class="example" href="positiveAngleType.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minExclusive value="0.0"/>
   <xsd:maxInclusive value="180.0"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="positiveNumberType" id="st.positiveNumberType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A positive number.</h:div>
    <h:div class="description">Note that we also provide 
     <tt>nonNegativeNumber</tt> with inclusive zero. The maximum number is (quite large) since 'unbounded' is more difficult to implement.
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minExclusive value="0.0"/>
   <xsd:maxInclusive value="1.0E+99"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="reactionFormatType" id="st.reactionFormatType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The format of the reaction.</h:div>
    <h:div>
     <h:p>This is provided for machine-understanding of the format of the reaction steps and components.</h:p>
     <h:p>Semantics are semi-controlled.</h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="reactantProduct">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>The commonest representation with reactantList and productList.</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="cmlSnap">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>A list of molecules representing snap shots on a reaction pathway.</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="reactionRoleType" id="st.reactionRoleType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The role of the reaction within a reactionList.</h:div>
    <h:div class="description">Semantics are semi-controlled.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="complete">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>On reactionList signifies that the children are the complete description of the reaction.</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="overall">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>The overall reaction in a multi-step reaction. Normally this would be the first reaction in a reactionList and the individual steps are held in a following sibling reactionList.</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="rateDeterminingStep">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>The rate-determining step in a multi-step reaction. This implies also that the reaction has a role of step.</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="step">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>A step in a multi-step reaction. This reaction will normally be a child of reactionList.</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="steps">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>a reactionList containing steps</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div>
        <h:p>Examples could be "myDict:step1", "foo:chainPropagation", etc.</h:p>
       </h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType id="st.reactionStepListTypeType" name="reactionStepListTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The sequence of steps in a reactionStepList.</h:div>
    <h:div class="description">By default the reactions in a reactionStepList are assumed to take place in sequence (e.g. one or more products of reaction n are used in reaction n+1 or later. However there are cases where it is known that reactions take place in parallel (e.g. if there is no overlap of molecular identities). Alternatively there are points at which there are two or more competing reactions which may depend on conditions or concentrations. A small semi-controlled vocabulary is suggested.</h:div>
    <h:div>The semantic of these are not fully explored, but we suggest that consecutive and simultaneous should be the first to be supported</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="unknown">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The order of the steps is unknown.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="consecutive">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The reaction proceeds through the steps in the order given.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="choice">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The reaction may proceed through either (or possibly both) of the contained reactions or reactionScheme, but it may not be known which.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="simultaneous">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The two or more independent reaction/List children proceed independently.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="reactionTypeType" id="st.reactionTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The semantic type of the reaction.</h:div>
    <h:div>
     <h:p>This is provided for machine-understanding of the topology or logic of the reaction steps and components (i.e. not for a general classification for which 
      <h:tt>label</h:tt> is more appropriate.)
     </h:p>
     <h:p>Semantics are semi-controlled. Some terms are appropriate to multistep reactions, and can be used with or without explicit steps.</h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="chainReaction">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>A reaction in which one or more reactive reaction intermediates (frequently radicals) are continuously regenerated, usually through a repetitive cycle of elementary steps (the 'propagation step') (IUPAC GoldBook).</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="initiation">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p> A reaction or process generating free radicals (or some other reactive reaction intermediates) which then induce a chain reaction. For example, in the chlorination of alkanes by a radical mechanism the initiation step is the dissociation of molecular chlorine. IUPAC Compendium of Chemical Terminology 2nd Edition (1997).</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="termination">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>The steps in a chain reaction in which reactive intermediates are destroyed or rendered inactive, thus ending the chain. IUPAC Compendium of Chemical Terminology 2nd Edition (1997) .</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="reversible">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>
         <h:p>A reaction which can proceed in the forward direction as readily as in the reverse direction (IUPAC GoldBook).</h:p>
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="refType" id="st.refType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A reference to an existing object.</h:div>
    <h:div class="description">A reference to an existing element in the document. The target of the ref attribute must exist. The test for validity will normally occur in the element's _appinfo_. Any DOM Node created from this element will normally be a reference to another Node, so that if the target node is modified a the dereferenced content is modified. At present there are no deep copy semantics hardcoded into the schema.</h:div>
    <h:div class="description">The semantic of reference are normally identical to an idType (e.g. "a123b"). Howevere there are some cases where compound references are required, such as "a123b:pq456". It is likely that this will be superseded at by RDF or Xpointer, but as long as we have non-uniqueIds this is a problem</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="([A-Za-z_][A-Za-z0-9_\.\-]*:)?[A-Za-z_][A-Za-z0-9_\.\-]*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType id="st.relatedEntryTypeType" name="relatedEntryTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Type of relatedEntry.</h:div>
    <h:div class="description">Type represents a the type of relationship in a relatedEntry element.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="parent"/>
     <xsd:enumeration value="partitiveParent"/>
     <xsd:enumeration value="child"/>
     <xsd:enumeration value="partitiveChild"/>
     <xsd:enumeration value="related"/>
     <xsd:enumeration value="synonym"/>
     <xsd:enumeration value="quasi-synonym"/>
     <xsd:enumeration value="antonym"/>
     <xsd:enumeration value="homonym"/>
     <xsd:enumeration value="see"/>
     <xsd:enumeration value="seeAlso"/>
     <xsd:enumeration value="abbreviation"/>
     <xsd:enumeration value="acronym"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="repeatType" id="st.repeatType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">instruction to create repeat of the object.</h:div>
    <h:div class="description">The attribute contains an index, its start value (normally 1) and its end value as in "i 3 10" which would make 8 repeat of the object. In selected attribute values the string _i_ acts as a macro and would be replaced by the value of i. EXPERIMENTAL. It can also have variables as the values.</h:div>
    <h:div class="curation">2006-05-20: PMR added.</h:div>
    <h:div class="example" href="repeatType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[A-z]+ [A-z0-9_\-\+]+ [A-z0-9_\-\+]+"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType id="st.schemeType" name="schemeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The sequence of steps in a reactionList.</h:div>
    <h:div class="description">By default the reactions in a reactionStepList are assumed to take place in sequence (e.g. one or more products of reaction n are used in reaction n+1 or later. However there are cases where it is known that reactions take place in parallel (e.g. if there is no overlap of molecular identities). Alternatively there are points at which there are two or more competing reactions which may depend on conditions or concentrations. A small semi-controlled vocabulary is suggested.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="unknown">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The order of the steps is unknow.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="sequence">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The reaction proceeds through the steps in the order give.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="choice">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The reaction may proceed through either of the contained reactions or reactionScheme.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="and">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">The two or more independent reaction/List children proceed independently. This can be extended to synthetic chemistry where two parts of the synthesis are conducted in parallel.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="shapeType" id="st.shapeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Allowed shapes of arrayList.</h:div>
    <h:div class="description">
     <h:p>Rectangular, triangular or irregular.</h:p>
    </h:div>
    <h:div class="example" href="arrayList1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="rectangular">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Rectangular.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="triangularDecreasing.">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Triangular decreasing in size from ncols to 1.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="triangularIncreasing.">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Triangular increasing in size from 1 to ncols.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="irregular">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Irregular shape.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div class="summary">User-defined arrayList-type.</h:div>
       <h:div class="description">This definition must be by reference to a namespaced dictionary entry.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="sizeType" id="st.sizeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The size of an array.</h:div>
    <h:div class="description">The size of an array. Redundant, but serves as a check for processing software (useful if delimiters are used).</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:nonNegativeInteger"/>
 </xsd:simpleType>
 <xsd:simpleType name="spaceType" id="st.spaceType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Signifies real or reciprocal space.</h:div>
    <h:div class="description">Likely to be used on types such as lattice, plane, point.</h:div>
    <h:div class="example" href="space1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="real"/>
     <xsd:enumeration value="k-space">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">A synonym for reciprocal.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="Fourier">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">A synonym for reciprocal.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="reciprocal">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description"/>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div class="summary">User-defined space-type.</h:div>
       <h:div class="description">No obvious possibilities, but who know.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType id="st.spectrumTypeType" name="spectrumTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The type of the spectrum.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="infrared">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">An infrared spectrum.</h:div>
        <h:div class="description">The measurement should denote transmittance or absorbanc.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="massSpectrum">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A "simple" mass spectrum.</h:div>
        <h:div class="description">This excludes experiments such as GC/MS, MS/MS, etc. though these could be constructed out of individual spectra with some care. The spectrum may be continuous ( 
         <h:tt>data</h:tt> or a 
         <h:tt>peakList</h:tt>).
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="NMR">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">An NMR spectrum.</h:div>
        <h:div class="description">This can include any experiment which creates a "1D" or "2D" data array. The symmetry of the spectrum can be specified but the details of the NMR experiment (COSY, NOESY, etc.) are not part of CMLSpect. They can be described though the normal 
         <h:tt>dictRef</h:tt> mechanism.
        </h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="UV/VIS">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="summary">A spectrum somewhere in the UV VIS region of the spectrum.</h:div>
        <h:div class="description">The measurement should denote transmittance or absorbance.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="sphere3Type" id="st.sphere3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A sphere in 3-space.</h:div>
    <h:div class="description">Defined by 4 real numbers, conventionally a point3 at the centre of the sphere and a nonNegative scalar for the radius.</h:div>
    <h:div class="example" href="sphere31.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:double"/>
   </xsd:simpleType>
   <xsd:length value="4"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="stateType" id="st.stateType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">State of a substance or property.</h:div>
    <h:div class="description">The state(s) of matter appropriate to a substance or property. It follows a partially controlled vocabulary. It can be extended through namespace codes to dictionaries.</h:div>
    <h:div class="example" href="stateType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <!-- should be union with user-supplied -->
     <xsd:enumeration value="aqueous">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>An aqueous solutio.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="gas">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>Gas or vapor. The default state for computation on isolated molecule.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="glass">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>A glassy stat.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="liquid">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>Normally pure liquid (use solution where appropriate.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="nematic">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>The nematic phas.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="smectic">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>The smectic phas.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="solid">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>A soli.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="solidSolution">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>A solid solutio.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="solution">
      <xsd:annotation>
       <xsd:documentation>
        <h:div>A (liquid) solutio.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType"/>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="stereoType" id="st.stereoType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Bond stereochemistry as a string.</h:div>
    <h:div class="description">This is purely conventional. There is no default value. The emptyString attribute can be used to indicate a bond of unknown or unspecified type. The interpretation of this is outside the scope of CML-based algorithms. It may be accompanied by a 
     <h:tt>convention</h:tt> attribute which links to a dictionary.
    </h:div>
    <h:div class="example" href="bond1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="C">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">A cis bond.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="T">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">A trans bond.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="W">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">A wedge bond.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="H">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">A hatch bond.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="summary">empty or missing.</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="stringArrayType" id="st.stringArrayType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">An array of strings, separated by whitespace.</h:div>
    <h:div class="description">An array of strings, separated by whitespace. If the strings have embedded whitespace or may be empty (zero-length), a non-whitespace single-character delimiter must be used. At present no machine validation</h:div>
    <h:div class="example" href="stringArrayType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:list itemType="xsd:string"/>
 </xsd:simpleType>
 <xsd:simpleType id="st.substanceListTypeType" name="substanceListTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Type of the substanceList.</h:div>
    <h:div class="description">Extension is allowed through the "other" value.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="solution"/>
   <xsd:enumeration value="mixture"/>
   <xsd:enumeration value="other"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="tableTypeType" id="st.tableTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Allowed types of table.</h:div>
    <h:div class="description">
     <h:p>rowBased, arrayBased, contentBased.</h:p>
    </h:div>
    <h:div class="example" href="arrayList1.xml"/>
    <h:div class="curation">2006-11-03: formlized 3 table types</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:union>
   <xsd:simpleType>
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="rowBased">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">rowBased.</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="arrayBased">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">Based on child arrayList containing arrays or lists</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="contentBased">
      <xsd:annotation>
       <xsd:documentation>
        <h:div class="description">child tableContent</h:div>
       </xsd:documentation>
      </xsd:annotation>
     </xsd:enumeration>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType>
    <xsd:restriction base="namespaceRefType">
     <xsd:annotation>
      <xsd:documentation>
       <h:div class="summary">User-defined table-type.</h:div>
       <h:div class="description">This definition must be by reference to a namespaced dictionary entry.</h:div>
      </xsd:documentation>
     </xsd:annotation>
    </xsd:restriction>
   </xsd:simpleType>
  </xsd:union>
 </xsd:simpleType>
 <xsd:simpleType name="tailType" id="st.tailType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The tail linker in a polymeric repeat unit</h:div>
    <h:div class="description">
     <h:p>A polymeric chain may be described by liniing the tail of one repeat unit to the head or tail of another. The tail attribute indicates the atom id (normally on an atom of elementType="R") which acts as the tail</h:p>
    </h:div>
    <h:div class="curation">2006-05-20: PMR added</h:div>
    <h:div class="example" href="tailType1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[A-z][A-z0-9_]*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="torsionAngleType" id="st.torsionAngleType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The type of a torsion angle.</h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:double">
   <xsd:minInclusive value="-360.0"/>
   <xsd:maxInclusive value="360.0"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="unitListTypeType" id="st.unitListTypeType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Type of unitList.</h:div>
    <h:div class="description">Required to differentiate between the two types of unitList (units and unitTypes)</h:div>
    <!-- <h:div class="example" href="unit2.xml"></h:div>-->
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="unit">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="description">child elements are unit</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
   <xsd:enumeration value="unitType">
    <xsd:annotation>
     <xsd:documentation>
      <h:div class="description">child elements are unitType</h:div>
     </xsd:documentation>
    </xsd:annotation>
   </xsd:enumeration>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="unitsType" id="st.unitsType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Scientific units.</h:div>
    <h:div class="description">These will be linked to dictionaries of units with conversion information, using namespaced references (e.g. 
     <h:tt>si:m</h:tt>). Distinguish carefully from _unitType_ which is an element describing a type of a unit in a _unitList_.
    </h:div>
    <h:div class="example" href="unit2.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="namespaceRefType"/>
 </xsd:simpleType>
 <xsd:simpleType name="vector3Type" id="st.vector3Type" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">A vector in 3-space.</h:div>
    <h:div class="description">No constraints on magnitude (i.e. could be zero.</h:div>
    <h:div class="example" href="vector31.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction>
   <xsd:simpleType>
    <xsd:list itemType="xsd:float"/>
   </xsd:simpleType>
   <xsd:length value="3"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="versionType" id="st.versionType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">Version of a document or code.</h:div>
    <h:div class="description">Forms include 1, 0.9, 1.1.3, 1.2alpha, etc.</h:div>
    <h:div class="example" href="version1.xml"/>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:string">
   <xsd:pattern value="[0-9]+(\.[0-9]+[A-Za-z0-9\.\-_]*)*"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="xmlElementType" id="st.xmlElementType" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
   <xsd:documentation>
    <h:div class="summary">The name of an XMLElement.</h:div>
    <h:div class="description">
     <h:p>(Distinguish from a chemical element as in elementTypeType). Currently used for assigning XMLElement types to references (e.g. to='a1' toType='atom'). Semantics are not controlled and in principle elements outside the CML tagSet could be used. Implementers cannot assume that namespace prefixes can be resolved and default usage is probably the local name.</h:p>
    </h:div>
   </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="refType"/>
 </xsd:simpleType>
</schema>
