home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2003 October / INTERNET108.ISO / pc / software / windows / building / xmlspy / xmlspyentcomplete5.exe / Data1.cab / _6DD88140F1B045EE95C893779462ABCE < prev    next >
Encoding:
Extensible Markup Language  |  2003-02-13  |  198.5 KB  |  5,014 lines

  1. <?xml version="1.0" encoding="utf-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.xml-cml.org/schema/cml2/core" xmlns:stm="http://www.xml-cml.org/schema/stmml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:val="http://www.w3.org/1999/XSL/TransformX" targetNamespace="http://www.xml-cml.org/schema/cml2/core" elementFormDefault="qualified">
  2.  
  3. <!-- cannot always get this to work; it seems to be relative
  4. to instance directory rather than schema directory.
  5. (This was a known Xerces bug - requires entityResolver ...)
  6.  
  7.    <xsd:include schemaLocation="cmlCore0.xsd"/> 
  8.  
  9.    <xsd:include schemaLocation="angleUnitsType.xsd"/> 
  10.    <xsd:include schemaLocation="atomRefs2.xsd"/> 
  11.    <xsd:include schemaLocation="atomRefs3.xsd"/> 
  12.    <xsd:include schemaLocation="atomRefs4.xsd"/> 
  13.    <xsd:include schemaLocation="atomRefArrayType.xsd"/>
  14.    <xsd:include schemaLocation="atomIDType.xsd"/>
  15.    <xsd:include schemaLocation="countType.xsd"/>
  16.    <xsd:include schemaLocation="elementTypeType.xsd"/>
  17.    <xsd:include schemaLocation="elementTypeArrayType.xsd"/>
  18.    <xsd:include schemaLocation="formalChargeType.xsd"/>
  19.    <xsd:include schemaLocation="hydrogenCountType.xsd"/>
  20.    <xsd:include schemaLocation="isotopeType.xsd"/>
  21.    <xsd:include schemaLocation="lengthType.xsd"/>
  22.    <xsd:include schemaLocation="nonHydrogenCountType.xsd"/>
  23.    <xsd:include schemaLocation="nonNegativeAngleType.xsd"/>
  24.    <xsd:include schemaLocation="nonNegativeNumber.xsd"/>
  25.    <xsd:include schemaLocation="occupancyType.xsd"/>
  26.    <xsd:include schemaLocation="orderType.xsd"/>
  27.    <xsd:include schemaLocation="orderArrayType.xsd"/>
  28.    <xsd:include schemaLocation="spacegroupType.xsd"/>
  29.    <xsd:include schemaLocation="stereoType.xsd"/>
  30.    <xsd:include schemaLocation="stringBuiltinType.xsd"/> 
  31.    <xsd:include schemaLocation="torsionAngleType.xsd"/>
  32.   
  33.  
  34.    <xsd:include schemaLocation="angle.xsd"/>
  35.    <xsd:include schemaLocation="atom.xsd"/>
  36.    <xsd:include schemaLocation="atomArray.xsd"/>
  37.    <xsd:include schemaLocation="atomParity.xsd"/>
  38.    <xsd:include schemaLocation="bond.xsd"/>
  39.    <xsd:include schemaLocation="bondArray.xsd"/>
  40.    <xsd:include schemaLocation="cml.xsd"/>
  41.    <xsd:include schemaLocation="crystal.xsd"/>
  42.    <xsd:include schemaLocation="electron.xsd"/>
  43.    <xsd:include schemaLocation="formula.xsd"/>
  44.    <xsd:include schemaLocation="length.xsd"/>
  45.    <xsd:include schemaLocation="molecule.xsd"/>
  46.    <xsd:include schemaLocation="name.xsd"/>
  47.    <xsd:include schemaLocation="reaction.xsd"/>
  48.    <xsd:include schemaLocation="sequence.xsd"/>
  49.    <xsd:include schemaLocation="bondStereo.xsd"/>
  50.    <xsd:include schemaLocation="symmetry.xsd"/>
  51.    <xsd:include schemaLocation="torsion.xsd"/>
  52. -->
  53.   <!-- the head of the schema -->
  54. <xsd:annotation>
  55.   <xsd:documentation xml:lang="en">
  56.     <div class="heading">WARNING</div>
  57.     <div class="curation">
  58.     <p>This document has been automatically generated from the XSD Schema, using XSLT stylesheets. Schemas are complex and it is
  59.     not easy to produce the "best" view. It is possible that some information is included twice and (possibly)
  60.     some is omitted. <b>The Schema itself should always be taken as definitive</b></p>
  61.     </div>
  62.   </xsd:documentation>
  63. </xsd:annotation>
  64. <xsd:annotation>
  65.   <xsd:documentation xml:lang="en">
  66.     <div class="heading">Curation</div>
  67.     <div class="curation">
  68.       <ul>
  69.         <li> Created by hand starting from output of dtd2xsd.
  70.       editing to enhance datatypes and content models, etc.
  71.       2001-09-21</li>
  72.         <li>First draft 2001-10-02</li>
  73.         <li>Next draft 2002-09-20 (sic)</li>
  74.         <li>Next draft 2002-11-20 (CML 2.0, on website)</li>
  75.         <li>Submitted to JCICS 2002-12-01</li>
  76.         <li>changed #REQUIRED to #IMPLIED on various id attributes 2002-12-21</li>
  77.         <li>added property and propertyList 2002-12-29</li>
  78.         <li>added identifier Element 2002-12-29</li>
  79.         <li>added name Element 2002-12-29</li>
  80.         <li>revision submitted to JCICS 2003-01-31 (CML V2.1)</li>
  81.       </ul>
  82.       <p>This schema represents a fundamental core for future CML. Some of the earlier
  83.       elements may be obsolete, and some will be moved into new CML schemaspaces. The 
  84.       vocabulary is essentially unaltered but the syntax is simpler and the validation
  85.       is more powerful.</p>
  86.     </div>
  87.   </xsd:documentation>
  88. </xsd:annotation>
  89. <xsd:annotation>
  90.   <xsd:documentation xml:lang="en">
  91.     <div class="heading">XSL validation</div>
  92.     <div class="curation">
  93.       <p>There is a prototypic validation procedure based on XSLT stylesheets with namespace prefix <tt>val</tt>.
  94.       The syntax is XSL. The only example occurs in <tt>bond</tt> at present. Some global <tt>val</tt> resources will be defined
  95.       in this section.</p>
  96.     </div>
  97.     <pre>
  98.  
  99.     </pre>
  100.   </xsd:documentation>
  101.   <xsd:appinfo>
  102.     <val:key names="atoms" match="atom" use="@id"/> 
  103.     <val:key names="bonds" match="bond" use="@id"/> 
  104.     <val:key names="molecules" match="molecule" use="@id"/>
  105.  
  106.     <val:template name="error">
  107.       <val:param name="error"/>
  108.       <val:message>XSLT validation error: <val:value-of select="$error"/></val:message>
  109.       <val:element name="error">
  110. XSLT validation error: <val:value-of select="$error"/>
  111.       </val:element>
  112.     </val:template>
  113.   </xsd:appinfo>
  114. </xsd:annotation>
  115.  
  116.  
  117.  <!-- attributes from STMML -->
  118.   <!-- stmml attributes in CML -->
  119.   <xsd:attributeGroup name="convention" id="attGp.convention">
  120.   <xsd:attribute id="att.convention" name="convention" type="namespaceRefType">
  121.     <xsd:annotation>
  122.       <xsd:documentation>
  123.         <div class="summary">A reference to a convention</div>
  124.         <div class="description">
  125.           <p>There is no controlled vocabulary for conventions, but the author must ensure that the semantics are openly available and that there are mechanisms for implementation. The convention is inherited by all the subelements, 
  126. so that a convention for <tt>molecule</tt> would by default extend to its <tt>bond</tt> and <tt>atom</tt> children. This can be overwritten
  127.     if necessary by an explicit <tt>convention</tt>.</p>
  128.     <p>It may be useful to create conventions with namespaces (e.g. <tt>iupac:name</tt>).
  129.     Use of <tt>convention</tt> will normally require non-STMML semantics, and should be used with
  130.     caution. We would expect that conventions prefixed with "ISO" would be useful,
  131.     such as ISO8601 for dateTimes.</p>
  132.     <p>There is no default, but the conventions of STMML or the related language (e.g. CML) will be assumed.</p>
  133.         </div>
  134.  
  135.         <div class="example">
  136.           <pre/>
  137.         </div>
  138.       </xsd:documentation>
  139.     </xsd:annotation>
  140.   </xsd:attribute>   
  141. </xsd:attributeGroup>   
  142.  
  143.   <xsd:attributeGroup id="attGp.delimiter" name="delimiter">
  144.   <xsd:attribute id="att.delimiter" name="delimiter" type="delimiterType">
  145.     <xsd:annotation>
  146.       <xsd:documentation>
  147.         <div class="summary">A delimiter character for arrays and matrices</div>
  148.         <div class="description">By default array components ('elements' in the non-XML sense) are whitespace-separated.
  149.         This fails for components with embedded whitespace or missing completely:
  150.         <pre>
  151.         Example:
  152.         In the protein database ' CA' and 'CA' are different atom types, and and array could be:
  153.         <array delimiter="/" dictRef="pdb:atomTypes">/ N/ CA/CA/ N/</array> 
  154.         </pre>
  155.         Note that the array starts and ends with the delimiter, which must be chosen to avoid accidental use. There is currently no syntax for escaping delimiters.
  156.         </div>
  157.       </xsd:documentation>
  158.     </xsd:annotation>
  159.   </xsd:attribute>
  160. </xsd:attributeGroup>
  161.  
  162.  
  163.   <xsd:attributeGroup id="attGp.dataType" name="dataType">
  164.   <xsd:attribute id="att.dataType" name="dataType" type="dataTypeType" default="xsd:string">
  165.     <xsd:annotation>
  166.       <xsd:documentation>
  167.         <div class="summary">The dataType of an (simple) element or attribute</div> 
  168.         <div class="description"/> 
  169.       </xsd:documentation>
  170.     </xsd:annotation>
  171.   </xsd:attribute>
  172. </xsd:attributeGroup>
  173.    
  174.  
  175.   <xsd:attributeGroup name="dictRef" id="attGp.dictRef">
  176.   <xsd:attribute id="att.dictRef" name="dictRef" type="namespaceRefType">
  177.     <xsd:annotation>
  178.       <xsd:documentation>
  179.         <div class="summary">
  180.           <p>A reference to a dictionary entry.</p>
  181.         </div>
  182.    
  183.         <div class="description">
  184.           <p>Elements in data instances such as <a href="el.scalar">scalar</a> may have a
  185.  <tt>dictRef</tt> attribute to point to an entry in a dictionary. To avoid
  186.  excessive use of (mutable) filenames and URIs we recommend a namespace
  187.  prefix, mapped to a namespace URI in the normal manner. In this case,
  188.  of course, the namespace URI must point to a real XML document containing
  189.  <a href="el.entry">entry</a> elements and validated against STMML Schema.</p>
  190.  <p>Where there is concern about the dictionary becoming separated from the document
  191.  the dictionary entries can be physically included as part of the data instance
  192.  and the normal XPointer addressing mechanism can be used.</p>
  193.  <p>This attribute can also be used on <a href="el.dictionary">dictionary</a>
  194.  elements to define the namespace prefix</p>
  195.         </div>
  196.   
  197.         <div class="example">
  198.          <pre><stmml title="dictRef example">
  199.  
  200. <scalar dataType="xsd:float" title="surfaceArea" 
  201.   dictRef="cmlPhys:surfArea" 
  202.   xmlns:cmlPhys="http://www.xml-cml.org/dict/physical"
  203.   units="units:cm2">50</scalar>
  204.   </stmml>
  205. </pre>
  206.         </div>
  207.  
  208.         <div class="example">
  209.    <pre><stmml title="dictRef example 2">
  210. <stm:list xmlns:stm="http://www.xml-cml.org/schema/stmml">
  211.   <stm:observation>
  212.     <p>We observed <object count="3" dictRef="foo:p1"/> 
  213.       constructing dwellings of different material</p>
  214.   </stm:observation>
  215.   <stm:entry id="p1" term="pig">
  216.     <stm:definition>A domesticated animal.</stm:definition>
  217.     <stm:description>Predators include wolves</stm:description>
  218.     <stm:description class="scientificName">Sus scrofa</stm:description>
  219.   </stm:entry>
  220. </stm:list>
  221. </stmml>
  222. </pre>
  223.         </div>
  224.        </xsd:documentation>
  225.     </xsd:annotation>
  226.   </xsd:attribute>
  227. </xsd:attributeGroup>
  228.   <xsd:attributeGroup id="attGp.errorBasis" name="errorBasis">
  229.   <xsd:attribute id="att.errorBasis" name="errorBasis" type="errorBasisType">
  230.     <xsd:annotation>
  231.       <xsd:documentation>
  232.         <div class="summary"/> 
  233.         <div class="description"/> 
  234.       </xsd:documentation>
  235.     </xsd:annotation>
  236.   </xsd:attribute>
  237. </xsd:attributeGroup>
  238.    
  239.  
  240.   <xsd:attributeGroup id="attGp.errorValue" name="errorValue">
  241.   <xsd:attribute id="att.errorValue" name="errorValue" type="errorValueType">
  242.     <xsd:annotation>
  243.       <xsd:documentation>
  244.         <div class="summary"/> 
  245.         <div class="description"/> 
  246.       </xsd:documentation>
  247.     </xsd:annotation>
  248.   </xsd:attribute>
  249. </xsd:attributeGroup>
  250.    
  251.  
  252.   <xsd:attributeGroup id="attGp.id" name="id">
  253.   <xsd:attribute id="att.id" name="id" type="idType">
  254.     <xsd:annotation>
  255.       <xsd:documentation>
  256.         <div class="summary">An attribute providing a unique ID for an element</div>
  257.         <div class="description">
  258.         </div>
  259.       </xsd:documentation>
  260.     </xsd:annotation>
  261.   </xsd:attribute>
  262. </xsd:attributeGroup>
  263.  
  264.  
  265.   <xsd:attributeGroup id="attGp.mandatoryId" name="mandatoryId">
  266.   <xsd:attribute id="att.mandatoryId" name="id" type="idType" use="required">
  267.     <xsd:annotation>
  268.       <xsd:documentation>
  269.         <div class="summary">An attribute providing a mandatory unique ID for an element</div>
  270.         <div class="description">This is a horrible hack. It should be possible to add 'required' to
  271.     the attributeGroup where used... (Maybe it is and I am still fighting Schema Wars)
  272.         </div>
  273.       </xsd:documentation>
  274.     </xsd:annotation>
  275.   </xsd:attribute>
  276. </xsd:attributeGroup>
  277.  
  278.  
  279.   <xsd:attributeGroup id="attGp.max" name="max">
  280.   <xsd:attribute id="att.max" name="max" type="maxType">
  281.     <xsd:annotation>
  282.       <xsd:documentation>
  283.         <div class="summary"/> 
  284.         <div class="description"/> 
  285.       </xsd:documentation>
  286.     </xsd:annotation>
  287.   </xsd:attribute>
  288. </xsd:attributeGroup>
  289.  
  290.   <xsd:attributeGroup id="attGp.min" name="min">
  291.   <xsd:attribute id="att.min" name="min" type="minType">
  292.     <xsd:annotation>
  293.       <xsd:documentation>
  294.         <div class="summary"/> 
  295.         <div class="description"/> 
  296.       </xsd:documentation>
  297.     </xsd:annotation>
  298.   </xsd:attribute>
  299. </xsd:attributeGroup>
  300.  
  301.   <xsd:attributeGroup id="attGp.ref" name="ref">
  302. <xsd:attribute id="att.ref" name="ref" type="refType">
  303.   <xsd:annotation>
  304.     <xsd:documentation>
  305.       <div class="summary">A reference to an element of given type</div>
  306.       <div class="description">
  307.        <p><tt>ref</tt> modifies an element into a reference to an existing element 
  308.        of that type within the document. This is similar to a pointer and it can be thought of a strongly typed hyperlink.
  309.        It may also be used for "subclassing" or "overriding" elements.
  310.        </p>
  311.    </div>
  312.  
  313.    <div class="example">
  314.      <pre>
  315. <stmml title="ref example">
  316. <cml>
  317.   <molecule id="m1">
  318.     <atomArray>
  319.       <atom elementType="N"/>
  320.       <atom elementType="O"/>
  321.     </atomArray>
  322.   </molecule>
  323.   <html:p>The action of <molecule ref="#m1"/> on cardiac muscle ...</html:p>
  324. </cml>
  325. </stmml>
  326.  
  327.      </pre>
  328.    </div>
  329.    </xsd:documentation>
  330.   </xsd:annotation>
  331. </xsd:attribute>   
  332. </xsd:attributeGroup>
  333.  
  334.   <xsd:attributeGroup id="attGp.size" name="size">
  335.   <xsd:attribute id="att.size" name="size" type="sizeType">
  336.     <xsd:annotation>
  337.       <xsd:documentation>
  338.         <div class="summary">The size of an array, matrix, list, etc.</div> 
  339.       </xsd:documentation>
  340.     </xsd:annotation>
  341.   </xsd:attribute>
  342. </xsd:attributeGroup>
  343.    
  344.  
  345.   <xsd:attributeGroup id="attGp.title" name="title">
  346.   <xsd:attribute id="att.title" name="title" type="xsd:string">
  347.     <xsd:annotation>
  348.       <xsd:documentation>
  349.         <div class="summary">A title on an element.</div> 
  350.         <div class="description">No controlled value.</div> 
  351.         <div class="example">
  352.           <pre><stmml title="title example">
  353. <action title="turn on heat" start="T09:00:00" convention="xsd"/>
  354. </stmml>
  355. </pre>
  356.         </div>
  357.       </xsd:documentation>
  358.     </xsd:annotation>
  359.   </xsd:attribute>
  360. </xsd:attributeGroup>
  361.  
  362.   <xsd:attributeGroup id="attGp.units" name="units">
  363.   <xsd:attribute id="att.units" name="units" type="unitsType">
  364.     <xsd:annotation>
  365.       <xsd:documentation>
  366.         <div class="summary">Scientific units on an element.</div> 
  367.         <div class="description">These must be taken from a dictionary of units. There should be some mechanism for validating the type of the units against the possible values of the element.</div> 
  368.       </xsd:documentation>
  369.     </xsd:annotation>
  370.   </xsd:attribute>
  371. </xsd:attributeGroup>
  372.    
  373.  
  374.  
  375.   <xsd:attributeGroup name="tit_id_convGroup" id="attGp.tit_id_convGroup">  
  376.   <xsd:annotation>
  377.     <xsd:documentation>
  378. <!--
  379.         <div class="summary">An group of attribute applicable to most STMML elements</div>
  380.         <div class="description"><p>A group of attributes applicable to most STMML elements. It is 
  381.         recommended that IDs are used widely. Titles have no semantics but
  382.         are useful for humans (e.g. a bond angle could be labelled "ortho"
  383.         or "gamma". Coventions are inherited by subelements; the default is the
  384.         current schema.</p> 
  385.          </div>
  386. -->
  387.     </xsd:documentation>
  388.   </xsd:annotation>
  389.     
  390.   <xsd:attributeGroup ref="title"/>
  391.   <xsd:attributeGroup ref="id"/>
  392.   <xsd:attributeGroup ref="convention"/>
  393.  
  394. </xsd:attributeGroup>
  395.  
  396.   <xsd:attributeGroup name="tit_id_conv_dictGroup" id="attGp.tit_id_conv_dictGroup">  
  397.   <xsd:annotation>
  398.     <xsd:documentation>
  399. <!--      <div class="summary">Addition of the <tt>dictRef</tt> attribute to the <tt>tit_id_conv</tt> group.</div>-->
  400.     </xsd:documentation>
  401.   </xsd:annotation>
  402.   <xsd:attributeGroup ref="tit_id_convGroup"/>
  403.   <xsd:attributeGroup ref="dictRef"/>
  404. </xsd:attributeGroup>
  405.  
  406.  
  407.  
  408.  <!-- types from STMML -->
  409.   <!-- stmml types in CML -->
  410.   
  411. <xsd:simpleType name="coordinateComponentArrayType" id="st.coordinateComponentArrayType">  
  412.   <xsd:annotation>
  413.     <xsd:documentation>
  414.       <div class="summary">An array of coordinateComponents for a single coordinate.</div>
  415.       <div class="description">
  416.         <p>An array of coordinateComponents for a single coordinate
  417.          where these all refer to an X-coordinate (NOT x,y,z) 
  418.     Instances of this type will
  419.       be used in array-style representation of 2-D or 3-D coordinates.</p>
  420.       <p>Currently no machine validation</p>
  421.       <p>Currently not used in STMML, but re-used by CML (see example)</p>
  422.       </div>
  423.       <div class="example">
  424.         <pre>
  425. <stmml title="coordinateComponentArrayType">
  426.  
  427. <cml:atomArray 
  428.   xmlns:cml="http://www.xml-cml.org/schema/cml2/core"
  429.   x2="1.2 2.3 4.5 6.7"/>
  430.   </stmml>
  431.   
  432.  
  433.         </pre>
  434.       </div>
  435.      </xsd:documentation>
  436.    </xsd:annotation>
  437.    <xsd:list itemType="xsd:float"/>
  438. </xsd:simpleType>
  439.  
  440.   <xsd:simpleType name="coordinate2Type" id="st.coordinate2Type">  
  441.    <xsd:annotation>
  442.      <xsd:documentation>
  443.         <div class="summary">An x/y coordinate pair</div>
  444.          <div class="description">
  445.          <p>An x/y coordinate pair consisting of 
  446.          two real numbers, separated by whitespace or a comma.
  447.          In arrays and matrices, it may be useful to set a separate delimiter</p> 
  448.       </div>
  449.       <div class="example">
  450.         <pre>
  451. <stmml title="coordinate2Type example">
  452. <list>
  453.   <array dataType="xsd:decimal"
  454.       >1.2,3.4   3.2,4.5   6.7,23.1 </array>
  455.   <array delimiter="/" dataType="xsd:decimal"
  456.       >/1.2 3.4/3.2 4.5/6.7 23.1/</array>
  457. </list>
  458. </stmml>
  459.  
  460.         </pre>
  461.        </div>
  462.      </xsd:documentation>
  463.    </xsd:annotation>
  464.    <xsd:restriction base="xsd:string">
  465.       <xsd:pattern value="\s*([-]|[+])?\d*\.?\d*(\s+|[,])([-]|[+])?\d*\.?\d*\s*"/>
  466.    </xsd:restriction>
  467. </xsd:simpleType>
  468.  
  469.   
  470.    <xsd:simpleType name="coordinate3Type" id="st.coordinate3Type">  
  471.       <xsd:annotation>
  472.         <xsd:documentation>
  473.           <div class="summary">An x/y/z coordinate triple</div>
  474.  
  475.           <div class="description">
  476.             <p>An x/y/z coordinate triple consisting of 
  477.             three real numbers, separated by whitespace or commas.
  478.             In arrays and matrices, it may be useful to set a separate delimiter</p> 
  479.          </div>
  480.  
  481.          <div class="example">
  482.            <pre>
  483. <stmml title="coordinate3Type example">
  484. <list>
  485.   <array dataType="xsd:decimal">1.2,3.4,1.2   
  486.     3.2,4.5,7.3   6.7,23.1,5.6 </array>
  487.   <array delimiter="/" dataType="xsd:decimal"
  488.   >/1.2 3.4 3.3/3.2 4.5 4.5/6.7 23.1 5.6/</array>
  489. </list>
  490. </stmml>
  491.  
  492.  
  493.            </pre>
  494.          </div>
  495.         </xsd:documentation>
  496.       </xsd:annotation>
  497.       <xsd:restriction base="xsd:string">
  498.          <xsd:pattern value="\s*([-]|[+])?\d*\.?\d*(\s+|[,])([-]|[+])?\d*\.?\d*(\s+|[,])([-]|[+])?\d*\.?\d*\s*"/>
  499. <!--         <xsd:pattern value="\s*([-]|[+])?\d*\.?\d*  (\s*[,|\s+]\s*([-]|[+])?\d*\.?\d*){2}\s*"/>-->
  500.       </xsd:restriction>
  501.    </xsd:simpleType>
  502.  
  503.      <xsd:simpleType name="countType" id="st.countType">
  504.       <xsd:annotation>
  505.         <xsd:documentation>
  506.            <div class="summary">
  507.             <p>A count multiplier for an element</p>
  508.          </div>
  509.  
  510.           <div class="description">
  511.             <p>Many elements represent objects which can occur an arbitrary number of times in a scientific context.
  512.             Examples are
  513.             <tt>action</tt>, <tt>object</tt> or <tt>molecule</tt>s.</p>
  514.          </div>
  515.  
  516.          <div class="example">
  517.            <pre>
  518. <stmml title="countType example">
  519.  
  520. <list>
  521. <object title="frog" count="10"/>
  522. <action title="step3" count="3">
  523.   <p>Add 10 ml reagent</p>
  524. </action>
  525. </list>
  526. </stmml>
  527.  
  528.            </pre>
  529.          </div>
  530.         </xsd:documentation>
  531.       </xsd:annotation>
  532.       <xsd:restriction base="xsd:nonNegativeInteger">
  533.       </xsd:restriction>
  534.    </xsd:simpleType>
  535.  
  536.  
  537.   
  538.    <xsd:simpleType name="dataTypeType" id="st.dataTypeType">  
  539.       <xsd:annotation>
  540.         <xsd:documentation>
  541.           <div class="summary">
  542.            <p>an enumerated type for all builtin allowed dataTypes in STM</p>
  543.          </div>
  544.  
  545.          <div class="description">
  546.             <p>
  547.                <tt>dataTypeType</tt> represents an enumeration of allowed dataTypes
  548.                (at present identical with those in XML-Schemas (Part2- datatypes).
  549.                This means that implementers should be able to use standard XMLSchema-based
  550.                tools for validation without major implementation problems.
  551.             </p>
  552.             <p>It will often be used an an attribute on 
  553.             <a href="el.scalar">scalar</a>,
  554.             <a href="el.array">array</a> or
  555.             <a href="el.matrix">matrix</a> 
  556.             elements.</p>
  557.          </div>
  558.  
  559.          <div class="example">
  560.            <pre>
  561. <stmml title="dataType example">
  562.  
  563. <list xmlns="http://www.xml-cml.org/schema/cml2/core">
  564.   <scalar dataType="xsd:boolean" title="she loves me">true</scalar>
  565.   <scalar dataType="xsd:float" title="x">23.2</scalar>
  566.   <scalar dataType="xsd:duration" title="egg timer">PM4</scalar>
  567.   <scalar dataType="xsd:dateTime" title="current data and time">2001-02-01:00:30</scalar>
  568.   <scalar dataType="xsd:time" title="wake up">06:00</scalar>
  569.   <scalar dataType="xsd:date" title="where is it">1752-09-10</scalar>
  570.   <scalar dataType="xsd:anyURI" title="CML site">http://www.xml-cml.org/</scalar>
  571.   <scalar dataType="xsd:QName" title="CML atom">cml:atom</scalar>
  572.   <scalar dataType="xsd:normalizedString" title="song">the mouse ran up the clock</scalar>
  573.   <scalar dataType="xsd:language" title="UK English">en-GB</scalar>
  574.   <scalar dataType="xsd:Name" title="atom">atom</scalar>
  575.   <scalar dataType="xsd:ID" title="XML ID">_123</scalar>
  576.   <scalar dataType="xsd:integer" title="the answer">42</scalar>
  577.   <scalar dataType="xsd:nonPositiveInteger" title="zero">0</scalar>
  578. </list>
  579. </stmml>
  580.  
  581.            </pre>
  582.          </div>
  583.         </xsd:documentation>
  584.       </xsd:annotation>
  585.   <xsd:union>
  586.     <xsd:simpleType>
  587.       <xsd:restriction base="xsd:string">
  588.         <xsd:enumeration value="xsd:string"/>
  589.        <xsd:enumeration value="xsd:boolean"/>
  590.        <xsd:enumeration value="xsd:float"/>
  591.        <xsd:enumeration value="xsd:double"/>
  592.        <xsd:enumeration value="xsd:decimal"/>
  593.        <xsd:enumeration value="xsd:duration"/>
  594.        <xsd:enumeration value="xsd:dateTime"/>
  595.        <xsd:enumeration value="xsd:time"/>
  596.        <xsd:enumeration value="xsd:date"/>
  597.        <xsd:enumeration value="xsd:gYearMonth"/>
  598.        <xsd:enumeration value="xsd:gYear"/>
  599.        <xsd:enumeration value="xsd:gMonthDay"/>
  600.        <xsd:enumeration value="xsd:gDay"/>
  601.        <xsd:enumeration value="xsd:gMonth"/>
  602.        <xsd:enumeration value="xsd:hexBinary"/>
  603.        <xsd:enumeration value="xsd:base64Binary"/>
  604.        <xsd:enumeration value="xsd:anyURI"/>
  605.        <xsd:enumeration value="xsd:QName"/>
  606.        <xsd:enumeration value="xsd:NOTATION"/>
  607.        <xsd:enumeration value="xsd:normalizedString"/>
  608.        <xsd:enumeration value="xsd:token"/>
  609.        <xsd:enumeration value="xsd:language"/>
  610.        <xsd:enumeration value="xsd:IDREFS"/>
  611.        <xsd:enumeration value="xsd:ENTITIES"/>
  612.        <xsd:enumeration value="xsd:NMTOKEN"/>
  613.        <xsd:enumeration value="xsd:NMTOKENS"/>
  614.        <xsd:enumeration value="xsd:Name"/>
  615.        <xsd:enumeration value="xsd:NCName"/>
  616.        <xsd:enumeration value="xsd:ID"/>
  617.        <xsd:enumeration value="xsd:IDREF"/>
  618.        <xsd:enumeration value="xsd:ENTITY"/>
  619.        <xsd:enumeration value="xsd:integer"/>
  620.        <xsd:enumeration value="xsd:nonPositiveInteger"/>
  621.        <xsd:enumeration value="xsd:negativeInteger"/>
  622.        <xsd:enumeration value="xsd:long"/>
  623.        <xsd:enumeration value="xsd:int"/>
  624.        <xsd:enumeration value="xsd:short"/>
  625.        <xsd:enumeration value="xsd:byte"/>
  626.        <xsd:enumeration value="xsd:nonNegativeInteger"/>
  627.        <xsd:enumeration value="xsd:unsignedLong"/>
  628.        <xsd:enumeration value="xsd:unsignedInt"/>
  629.        <xsd:enumeration value="xsd:unsignedShort"/>
  630.        <xsd:enumeration value="xsd:unsignedByte"/>
  631.        <xsd:enumeration value="xsd:positiveInteger"/>
  632.      </xsd:restriction>
  633.    </xsd:simpleType>
  634.    <xsd:simpleType>
  635.      <xsd:restriction base="xsd:QName">
  636.      </xsd:restriction>
  637.     </xsd:simpleType>
  638.   </xsd:union>
  639. </xsd:simpleType>
  640.  
  641.   
  642. <xsd:simpleType name="delimiterType" id="st.delimiterType">
  643.    <xsd:annotation>
  644.      <xsd:documentation>
  645.        <div class="summary">A non-whitespace character used in arrays to separate components</div>
  646.       <div class="description">
  647.         <p>Some STMML elements (such as <a href="el.array">array</a>) have
  648.         content representing concatenated values. The default separator is
  649.         whitespace (which can be normalised) and this should be used whenever
  650.         possible. However in some cases the values are empty, or contain whitespace or other
  651.         problematic punctuation, and a delimiter is required.</p>
  652.         <p>Note that the content string MUST start and end with the delimiter so
  653.         there is no ambiguity as to what the components are. Only printable
  654.         characters from the ASCII character set should be used, and character
  655.         entities should be avoided.</p>
  656.         <p>When delimiters are used to separate precise whitespace this should always
  657.         consist of spaces and not the other allowed whitespace characters 
  658.         (newline, tabs, etc.). If the latter are important it is probably best to redesign
  659.         the application.</p>
  660.       </div>
  661.       <div class="example">
  662.         <pre>
  663. <stmml title="delimiter example">
  664.  
  665. <array size="4"  dataType="xsd:string" delimiter="|">|A|B12||D and   E|</array>
  666. </stmml>
  667.  
  668.  
  669.  <em>The values in the array are</em>
  670.   "A", "B12", "" (empty string) and "D and   E" 
  671.  <em>note the spaces</em>
  672.         </pre>
  673.       </div>
  674.      </xsd:documentation>
  675.    </xsd:annotation>
  676.    <xsd:restriction base="xsd:string">
  677.    </xsd:restriction>
  678. </xsd:simpleType>
  679.  
  680.   <xsd:simpleType name="errorBasisType" id="st.errorBasisType">
  681.   <xsd:annotation>
  682.     <xsd:documentation>
  683.       <div class="summary">The basis of an error value</div>
  684.       <div class="description">
  685.         <p>Errors in values can be of several types and this simpleType
  686.          provides a small controlled vocabulary</p>
  687.       </div>
  688.  
  689.       <div class="example">
  690.          <pre><stmml title="scalar example">
  691. <scalar 
  692.     dataType="xsd:decimal" 
  693.     errorValue="1.0" 
  694.     errorBasis="observedStandardDeviation" 
  695.     title="body weight"
  696.     dictRef="zoo:bodywt"
  697.     units="units:g">34.3</scalar>
  698.     </stmml>
  699. </pre>
  700.       </div>
  701.     </xsd:documentation>
  702.   </xsd:annotation>
  703.   <xsd:restriction base="xsd:string">
  704.     <xsd:enumeration value="observedRange"/>
  705.     <xsd:enumeration value="observedStandardDeviation"/>
  706.     <xsd:enumeration value="observedStandardError"/>
  707.     <xsd:enumeration value="estimatedStandardDeviation"/>
  708.     <xsd:enumeration value="estimatedStandardError"/>
  709.   </xsd:restriction>
  710. </xsd:simpleType>
  711.  
  712.   <xsd:simpleType name="errorValueType" id="st.errorValueType">
  713.   <xsd:annotation>
  714.     <xsd:documentation>
  715.       <div class="summary">An observed or calculated estimate of the error in the value of a numeric quantity</div>
  716.       <div class="description">
  717.         <p>An observed or calculated estimate of the error in the value of a numeric quantity.
  718. .        It should be ignored for dataTypes such as URL, date or string. 
  719.          The statistical basis of the <tt>errorValueType</tt> is not defined - it could be a range,
  720.          an estimated standard deviation, an observed standard error, etc. This information can 
  721.          be added through <a href="at.errorBasisType">errorBasisType</a>.</p>
  722.       </div>
  723.       <div class="example">
  724.         <pre><stmml title="scalar example">
  725. <scalar 
  726.     dataType="xsd:decimal" 
  727.     errorValue="1.0" 
  728.     errorBasis="observedStandardDeviation" 
  729.     title="body weight"
  730.     dictRef="zoo:bodywt"
  731.     units="units:g">34.3</scalar>
  732.     </stmml>
  733. </pre>
  734.       </div>
  735.     </xsd:documentation>
  736.   </xsd:annotation>
  737.   <xsd:restriction base="xsd:float"/>
  738. </xsd:simpleType>
  739.  
  740.   <xsd:simpleType name="idType" id="st.idType">  
  741.   <xsd:annotation>
  742.     <xsd:documentation>
  743.       <div class="summary">A unique ID for an element</div>
  744.       <div class="description">          
  745.       <p>This is not formally
  746.           of type ID (an XML NAME which must start with a letter and contain only letters,
  747.           digits and <tt>.-_:</tt>). It is recommended that IDs start with a letter,
  748.           and contain no punctuation or whitespace. The function <tt>generate-id()</tt>
  749.           in XSLT will generate semantically void unique IDs.</p>
  750.           <p>It is difficult to ensure uniqueness when documents are merged. We suggest
  751.           namespacing IDs, perhaps using the containing elements as the base.
  752.           Thus <tt>mol3:a1</tt> could be a useful unique ID. 
  753.           However this is still experimental.</p>
  754.          </div>
  755.       </xsd:documentation>
  756.      </xsd:annotation>
  757.    <xsd:restriction base="xsd:string">
  758.      <xsd:pattern value="([A-Za-z][A-Za-z0-9_-]*:)?[A-Za-z][A-Za-z0-9_\-\.]*"/>
  759.    </xsd:restriction>
  760. </xsd:simpleType>
  761.   
  762.    <xsd:simpleType name="floatArrayType" id="st.floatArrayType">  
  763.      <xsd:annotation>
  764.        <xsd:documentation>
  765.          <div class="summary">An array of floats</div>
  766.  
  767.          <div class="description">
  768.             <p>An array of floats or other real numbers. 
  769.             Not used in STM Schema, but re-used by CML and other languages.
  770.             </p> 
  771.          </div>
  772.  
  773.         <div class="example">
  774.            <pre/>
  775.          </div>
  776.         </xsd:documentation>
  777.       </xsd:annotation>
  778.       <xsd:list itemType="xsd:float"/>
  779.    </xsd:simpleType>
  780.  
  781.   <xsd:simpleType name="integerArrayType" id="st.integerArrayType">  
  782.   <xsd:annotation>
  783.     <xsd:documentation>
  784.       <div class="summary">An array of integers</div>
  785.       <div class="description">
  786.         <p>An array of integers; for re-use by other schemas</p> 
  787.         <p>Not machine-validatable</p>
  788.       </div>
  789.       <div class="example">
  790.         <pre>
  791. <stmml title="integerArray type">
  792.  
  793. <atomArray xmlns="http://www.xml-cml.org/schema/cml2/core"
  794.   hydrogenCount="3 1 0 2"/>
  795.   </stmml>
  796.  
  797.         </pre>
  798.       </div>
  799.     </xsd:documentation>
  800.   </xsd:annotation>
  801.   <xsd:list itemType="xsd:integer"/>
  802. </xsd:simpleType>
  803.  
  804.    <xsd:simpleType name="maxType" id="st.maxType">
  805.     <xsd:annotation>
  806.        <xsd:documentation>
  807.           <div class="summary">The maximum INCLUSIVE value of a quantity</div>
  808.           <div class="description"><p>The maximum INCLUSIVE value of a sortable quantity such as
  809.           numeric, date or string. It should be ignored for dataTypes such as URL. 
  810.           The use of <tt>min</tt> and
  811.         <tt>max</tt> attributes can be used to give a range for the quantity.
  812.        The statistical basis of this range is not defined. The value of <tt>max</tt> 
  813.        is usually an observed 
  814.        quantity (or calculated from observations). To restrict a value, the <tt>
  815.        maxExclusive</tt> type in a dictionary should be used.</p>
  816.        <p>The type of the maximum is the same as the quantity to which it refers - numeric,
  817.        date and string are currently allowed</p>
  818.        </div>
  819.        <div class="example"><pre><stmml title="maxType example">
  820.  
  821. <scalar dataType="xsd:float" max="20" min="12">15</scalar>
  822. </stmml>
  823. </pre></div>
  824.       </xsd:documentation>
  825.     </xsd:annotation>
  826.     <xsd:restriction base="xsd:string">
  827.     </xsd:restriction>
  828.  </xsd:simpleType>
  829.  
  830.  <xsd:attribute name="maxValue" type="maxType"/>
  831.  
  832.   <xsd:simpleType name="matrixType" id="st.matrixType">   
  833.   <xsd:annotation>
  834.     <xsd:documentation>
  835.       <div class="summary">Allowed <a href="el.matrix">matrix</a> types</div>
  836.        <div class="description"><p>Allowed <tt>matrix</tt> types.
  837.        These are mainly square matrices</p></div>
  838.       <div class="example">
  839.       <pre>
  840. <stmml title="matrix example">
  841.  
  842. <matrix id="m1" title="mattrix-1" dictRef="foo:bar"
  843.   rows="3" columns="3" dataType="xsd:decimal" 
  844.   delimiter="|" matrixType="squareSymmetric" units="unit:m"
  845.   >|1.1|1.2|1.3|1.2|2.2|2.3|1.3|2.3|3.3|</matrix>
  846.   </stmml>
  847.  
  848.       </pre>
  849.       </div>
  850.     </xsd:documentation>
  851.   </xsd:annotation>
  852.   <xsd:union>
  853.   <xsd:simpleType>
  854.   <xsd:restriction base="xsd:string">
  855.       <xsd:enumeration value="rectangular"/>
  856.       <xsd:enumeration value="square"/>
  857.       <xsd:enumeration value="squareSymmetric"/>
  858.       <xsd:enumeration value="squareAntisymmetric"/>
  859.       <xsd:enumeration value="diagonal">
  860.         <xsd:annotation>
  861.           <xsd:documentation>
  862.             <div class="description">Symmetric. Elements are zero except on the diagonal</div>
  863.           </xsd:documentation>
  864.         </xsd:annotation>
  865.       </xsd:enumeration>
  866.       <xsd:enumeration value="upperTriangular">
  867.         <xsd:annotation>
  868.           <xsd:documentation>
  869.             <div class="description">Square. Elements are zero below the diagonal
  870.             <pre>
  871. 1 2 3 4
  872. 0 3 5 6
  873. 0 0 4 8
  874. 0 0 0 2
  875.       </pre>
  876.             </div>
  877.           </xsd:documentation>
  878.         </xsd:annotation>
  879.       </xsd:enumeration>
  880.       <xsd:enumeration value="lowerTriangular">
  881.         <xsd:annotation>
  882.           <xsd:documentation>
  883.             <div class="description">Symmetric. Elements are zero except on the diagonal</div>
  884.           </xsd:documentation>
  885.         </xsd:annotation>
  886.       </xsd:enumeration>
  887.       <xsd:enumeration value="unitary"/>
  888.       <xsd:enumeration value="rowEigenvectors"/>
  889.       <xsd:enumeration value="rotation22"/>
  890.       <xsd:enumeration value="rotationTranslation32"/>
  891.       <xsd:enumeration value="homogeneous33"/>
  892.       <xsd:enumeration value="rotation33"/>
  893.       <xsd:enumeration value="rotationTranslation43"/>
  894.       <xsd:enumeration value="homogeneous44"/>
  895.       <xsd:enumeration value="square"/>
  896.    </xsd:restriction>
  897.   </xsd:simpleType>
  898.   <xsd:simpleType>
  899.     <xsd:restriction base="namespaceRefType">
  900.       <xsd:annotation>
  901.         <xsd:documentation>
  902.           <div class="summary">User-defined matrix-type</div>
  903.           <div class="description">This definition must be by reference to a namespaced dictionary entry.</div>
  904.         </xsd:documentation>
  905.      </xsd:annotation>
  906.     </xsd:restriction>
  907.   </xsd:simpleType>
  908.   </xsd:union>
  909. </xsd:simpleType>
  910.  
  911.     <xsd:simpleType name="metadataType" id="md.metadataType">
  912.         <xsd:annotation>
  913.           <xsd:documentation>
  914.             <div class="summary">The name of the metadata</div>
  915.             <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.
  916.             </div>
  917.           </xsd:documentation>
  918.         </xsd:annotation>
  919.       <xsd:restriction base="xsd:string">
  920.       <xsd:enumeration value="dc:coverage">
  921.         <xsd:annotation>
  922.           <xsd:documentation>
  923.             <div class="definition">The extent or scope of the
  924.             content of the resource.</div>
  925.  
  926.             <div class="description">Coverage will typically include
  927.             spatial location (a place name or geographic
  928.             coordinates), temporal period (a period label, date, or
  929.             date range) or jurisdiction (such as a named
  930.             administrative entity). Recommended best practice is to
  931.             select a value from a controlled vocabulary (for
  932.             example, the Thesaurus of Geographic Names [TGN]) and
  933.             that, where appropriate, named places or time periods
  934.             be used in preference to numeric identifiers such as
  935.             sets of coordinates or date ranges.
  936.             </div>
  937.           </xsd:documentation>
  938.         </xsd:annotation>
  939.       </xsd:enumeration>
  940.  
  941.       <xsd:enumeration value="dc:description">
  942.         <xsd:annotation>
  943.           <xsd:documentation>
  944.             <div class="definition">An account of the content of the
  945.             resource.</div>
  946.  
  947.             <div class="description">Description may include but is not
  948.             limited to: an abstract, table of contents, reference
  949.             to a graphical representation of content or a free-text
  950.             account of the content.
  951.           </div>
  952. </xsd:documentation>
  953.         </xsd:annotation>
  954.       </xsd:enumeration>
  955.  
  956.       <xsd:enumeration value="dc:identifier">
  957.         <xsd:annotation>
  958.           <xsd:documentation>
  959.             <div class="definition">An unambiguous reference to the
  960.             resource within a given context.</div>
  961.  
  962.             <div class="description">Recommended best practice is to
  963.             identify the resource by means of a string or number
  964.             conforming to a formal identification system. Example
  965.             formal identification systems include the Uniform
  966.             Resource Identifier (URI) (including the Uniform
  967.             Resource Locator (URL)), the Digital Object Identifier
  968.             (DOI) and the International Standard Book Number
  969.             (ISBN).
  970.           </div>
  971. </xsd:documentation>
  972.         </xsd:annotation>
  973.       </xsd:enumeration>
  974.  
  975.       <xsd:enumeration value="dc:format">
  976.         <xsd:annotation>
  977.           <xsd:documentation>
  978.             <div class="definition">The physical or digital
  979.             manifestation of the resource.</div>
  980.  
  981.             <div class="description">Typically, Format may include the
  982.             media-type or dimensions of the resource. Format may be
  983.             used to determine the software, hardware or other
  984.             equipment needed to display or operate the resource.
  985.             Examples of dimensions include size and duration.
  986.             Recommended best practice is to select a value from a
  987.             controlled vocabulary (for example, the list of
  988.             Internet Media Types [MIME] defining computer media
  989.             formats).
  990.           </div>
  991. </xsd:documentation>
  992.         </xsd:annotation>
  993.       </xsd:enumeration>
  994.  
  995.       <xsd:enumeration value="dc:relation">
  996.         <xsd:annotation>
  997.           <xsd:documentation>
  998.             <div class="definition">A reference to a related
  999.             resource.</div>
  1000.  
  1001.             <div class="description">Recommended best practice is to
  1002.             reference the resource by means of a string or number
  1003.             conforming to a formal identification system.
  1004.           </div>
  1005. </xsd:documentation>
  1006.         </xsd:annotation>
  1007.       </xsd:enumeration>
  1008.  
  1009.       <xsd:enumeration value="dc:rights">
  1010.         <xsd:annotation>
  1011.           <xsd:documentation>
  1012.             <div class="definition">Information about rights held in
  1013.             and over the resource.</div>
  1014.  
  1015.             <div class="description">Typically, a Rights element will
  1016.             contain a rights management statement for the resource,
  1017.             or reference a service providing such information.
  1018.             Rights information often encompasses Intellectual
  1019.             Property Rights (IPR), Copyright, and various Property
  1020.             Rights. If the Rights element is absent, no assumptions
  1021.             can be made about the status of these and other rights
  1022.             with respect to the resource.
  1023.           </div>
  1024. </xsd:documentation>
  1025.         </xsd:annotation>
  1026.       </xsd:enumeration>
  1027.  
  1028.       <xsd:enumeration value="dc:subject">
  1029.         <xsd:annotation>
  1030.           <xsd:documentation>
  1031.             <div class="definition">The topic of the content of the
  1032.             resource.</div>
  1033.  
  1034.             <div class="description">Typically, a Subject will be
  1035.             expressed as keywords, key phrases or classification
  1036.             codes that describe a topic of the resource.
  1037.             Recommended best practice is to select a value from a
  1038.             controlled vocabulary or formal classification
  1039.             scheme.
  1040.           </div>
  1041. </xsd:documentation>
  1042.         </xsd:annotation>
  1043.       </xsd:enumeration>
  1044.  
  1045.       <xsd:enumeration value="dc:title">
  1046.         <xsd:annotation>
  1047.           <xsd:documentation>
  1048.             <div class="definition">A name given to the resource.</div>
  1049.  
  1050.             <div class="description">Typically, a Title will be a name by
  1051.             which the resource is formally known.
  1052.           </div>
  1053.          </xsd:documentation>
  1054.         </xsd:annotation>
  1055.       </xsd:enumeration>
  1056.  
  1057.       <xsd:enumeration value="dc:type">
  1058.         <xsd:annotation>
  1059.           <xsd:documentation>
  1060.             <div class="definition">The nature or genre of the
  1061.             content of the resource.</div>
  1062.  
  1063.             <div class="description">Type includes terms describing
  1064.             general categories, functions, genres, or aggregation
  1065.             levels for content. Recommended best practice is to
  1066.             select a value from a controlled vocabulary (for
  1067.             example, the working draft list of Dublin Core Types
  1068.             [DCT1]). To describe the physical or digital
  1069.             manifestation of the resource, use the FORMAT
  1070.             element.
  1071.           </div>
  1072.          </xsd:documentation>
  1073.         </xsd:annotation>
  1074.       </xsd:enumeration>
  1075.  
  1076.       <xsd:enumeration value="dc:contributor">
  1077.         <xsd:annotation>
  1078.           <xsd:documentation>
  1079.             <div class="definition">An entity responsible for making
  1080.             contributions to the content of the resource.</div>
  1081.  
  1082.             <div class="description">Examples of a Contributor include a
  1083.             person, an organisation, or a service. Typically, the
  1084.             name of a Contributor should be used to indicate the
  1085.             entity.
  1086.           </div>
  1087.          </xsd:documentation>
  1088.         </xsd:annotation>
  1089.       </xsd:enumeration>
  1090.  
  1091.       <xsd:enumeration value="dc:creator">
  1092.         <xsd:annotation>
  1093.           <xsd:documentation>
  1094.             <div class="definition">An entity primarily responsible
  1095.             for making the content of the resource.</div>
  1096.  
  1097.             <div class="description">Examples of a Creator include a
  1098.             person, an organisation, or a service. Typically, the
  1099.             name of a Creator should be used to indicate the
  1100.             entity.
  1101.           </div>
  1102.           </xsd:documentation>
  1103.         </xsd:annotation>
  1104.       </xsd:enumeration>
  1105.  
  1106.       <xsd:enumeration value="dc:publisher">
  1107.         <xsd:annotation>
  1108.           <xsd:documentation>
  1109.             <div class="definition">An entity responsible for making
  1110.             the resource available</div>
  1111.  
  1112.             <div class="description">Examples of a Publisher include a
  1113.             person, an organisation, or a service. Typically, the
  1114.             name of a Publisher should be used to indicate the
  1115.             entity.
  1116.           </div>
  1117.          </xsd:documentation>
  1118.         </xsd:annotation>
  1119.       </xsd:enumeration>
  1120.  
  1121.       <xsd:enumeration value="dc:source">
  1122.         <xsd:annotation>
  1123.           <xsd:documentation>
  1124.             <div class="definition">A Reference to a resource from
  1125.             which the present resource is derived.</div>
  1126.  
  1127.             <div class="description">The present resource may be derived
  1128.             from the Source resource in whole or in part.
  1129.             Recommended best practice is to reference the resource
  1130.             by means of a string or number conforming to a formal
  1131.             identification system.
  1132.           </div>
  1133. </xsd:documentation>
  1134.         </xsd:annotation>
  1135.       </xsd:enumeration>
  1136.  
  1137.       <xsd:enumeration value="dc:language">
  1138.         <xsd:annotation>
  1139.           <xsd:documentation>
  1140.             <div class="definition">A language of the intellectual
  1141.             content of the resource.</div>
  1142.  
  1143.             <div class="description">Recommended best practice for the
  1144.             values of the Language element is defined by RFC 1766
  1145.             [RFC1766] which includes a two-letter Language Code
  1146.             (taken from the ISO 639 standard [ISO639]), followed
  1147.             optionally, by a two-letter Country Code (taken from
  1148.             the ISO 3166 standard [ISO3166]). For example, 'en' for
  1149.             English, 'fr' for French, or 'en-uk' for English used
  1150.             in the United Kingdom.
  1151.           </div>
  1152. </xsd:documentation>
  1153.         </xsd:annotation>
  1154.       </xsd:enumeration>
  1155.  
  1156.       <xsd:enumeration value="dc:date">
  1157.         <xsd:annotation>
  1158.           <xsd:documentation>
  1159.             <div class="definition">A date associated with an event
  1160.             in the life cycle of the resource.</div>
  1161.  
  1162.             <div class="description">Typically, Date will be associated
  1163.             with the creation or availability of the resource.
  1164.             Recommended best practice for encoding the date value
  1165.             is defined in a profile of ISO 8601 [W3CDTF] and
  1166.             follows the YYYY-MM-DD format.
  1167.           </div>
  1168. </xsd:documentation>
  1169.         </xsd:annotation>
  1170.       </xsd:enumeration>
  1171.  
  1172.       <xsd:enumeration value="cmlm:safety">
  1173.         <xsd:annotation>
  1174.           <xsd:documentation>
  1175.             <div class="definition">Entry contains information
  1176.             relating to chemical safety</div>
  1177.  
  1178.             <div class="description">Typically the content will be a
  1179.             reference to a handbook, MSDS, threshhold or other
  1180.             human-readable string
  1181.           </div>
  1182. </xsd:documentation>
  1183.         </xsd:annotation>
  1184.       </xsd:enumeration>
  1185.  
  1186.       <xsd:enumeration value="cmlm:insilico">
  1187.         <xsd:annotation>
  1188.           <xsd:documentation>
  1189.             <div class="definition">Part or whole of the information
  1190.             was computer-generated</div>
  1191.             <div class="description">Typically the content will be the
  1192.             name of a method or a program
  1193.           </div>
  1194. </xsd:documentation>
  1195.         </xsd:annotation>
  1196.       </xsd:enumeration>
  1197.  
  1198.       <xsd:enumeration value="cmlm:structure">
  1199.         <xsd:annotation>
  1200.           <xsd:documentation>
  1201.             <div class="definition">3D structure included</div>
  1202.             <div class="description">details included
  1203.           </div>
  1204. </xsd:documentation>
  1205.         </xsd:annotation>
  1206.       </xsd:enumeration>
  1207.  
  1208.       <xsd:enumeration value="cmlm:reaction">
  1209.       </xsd:enumeration>
  1210.  
  1211.       <xsd:enumeration value="cmlm:identifier">
  1212.       </xsd:enumeration>
  1213.  
  1214.       <xsd:enumeration value="other">
  1215.       </xsd:enumeration>
  1216.     </xsd:restriction>
  1217.   </xsd:simpleType>
  1218.  
  1219.      <xsd:simpleType name="minType" id="st.minType">
  1220.       <xsd:annotation>
  1221.          <xsd:documentation>
  1222.             <div class="summary">The minimum INCLUSIVE value of a quantity</div>
  1223.             <div class="description"><p>The minimum INCLUSIVE value of a sortable quantity such as
  1224.             numeric, date or string. It should be ignored for dataTypes such as URL. 
  1225.             The use of <tt>min</tt> and
  1226.           <tt>min</tt> attributes can be used to give a range for the quantity.
  1227.          The statistical basis of this range is not defined. The value of <tt>min</tt> 
  1228.          is usually an observed 
  1229.          quantity (or calculated from observations). To restrict a value, the <tt>
  1230.          minExclusive</tt> type in a dictionary should be used.</p>
  1231.          <p>The type of the minimum is the same as the quantity to which it refers - numeric,
  1232.          date and string are currently allowed</p>
  1233.          </div>
  1234.           <div class="example"><pre><stmml title="maxType example">
  1235.  
  1236. <scalar dataType="xsd:float" max="20" min="12">15</scalar>
  1237. </stmml>
  1238. </pre></div>
  1239.         </xsd:documentation>
  1240.       </xsd:annotation>
  1241.       <xsd:restriction base="xsd:string">
  1242.       </xsd:restriction>
  1243.    </xsd:simpleType>
  1244.  
  1245.    <xsd:attribute name="minValue" type="minType"/>
  1246.  
  1247.   <xsd:simpleType name="namespaceRefType" id="st.namespaceRefType">
  1248.    <xsd:annotation>
  1249.       <xsd:documentation>
  1250.         <div class="summary">
  1251.          A string referencing a dictionary, units, convention or other metadata.
  1252.       </div>
  1253.         <div class="description">
  1254.          <p>The namespace is optional but recommended where possible</p> 
  1255.       <p>Note: this convention is only used within STMML and related languages;
  1256.       it is NOT a generic URI.</p>
  1257.       </div>
  1258.         <div class="example">
  1259.         <pre>
  1260. <stmml title="namespace example">
  1261.  
  1262. <list>
  1263. <!-- dictRef is of namespaceRefType -->
  1264.   <scalar dictRef="chem:mpt">123</scalar>  
  1265. <!-- error -->
  1266.   <scalar dictRef="mpt23">123</scalar>  
  1267. </list>
  1268. </stmml>
  1269.  
  1270.         </pre>
  1271.       </div>
  1272.      </xsd:documentation>
  1273.    </xsd:annotation>
  1274.    <xsd:restriction base="xsd:string">
  1275.      <xsd:annotation>
  1276.        <xsd:documentation>
  1277.          <div class="description">
  1278.          <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 '-'</p>
  1279.       </div>
  1280.      </xsd:documentation>
  1281.    </xsd:annotation>
  1282.       <xsd:pattern value="([A-Za-z][A-Za-z0-9_]*:)?[A-Za-z][A-Za-z0-9_\.\-]*"/>
  1283.    </xsd:restriction>
  1284. </xsd:simpleType>
  1285.  
  1286.   <xsd:simpleType name="positiveNumberType" id="st.positiveNumberType">  
  1287.   <xsd:annotation>
  1288.     <xsd:documentation>
  1289.       <div class="description">A positive number. Note that we also provide nonNegativeNumber 
  1290.       with inclusive zero. The maximum number is (quite large) since 'unbounded' is more difficult 
  1291.       to implement.  This is greater than Eddington's estimate of the number of particles in the
  1292.       universe so it should work for most people.</div>
  1293.     </xsd:documentation>
  1294.   </xsd:annotation>
  1295.   <xsd:restriction base="xsd:double">
  1296.     <xsd:minExclusive value="0.0"/>
  1297.     <xsd:maxInclusive value="1.0E+99"/>
  1298.   </xsd:restriction>
  1299. </xsd:simpleType>
  1300.  
  1301.   <xsd:simpleType name="refType" id="st.refType">  
  1302.   <xsd:annotation>
  1303.     <xsd:documentation>
  1304.       <div class="summary">A reference to an existing element</div>
  1305.       <div class="description">
  1306.         <p>A reference to an existing element in the document.
  1307.            The target of the ref attribute must exist. The test for validity 
  1308.            will normally occur in the element's <tt>appinfo</tt>
  1309.         </p> 
  1310.         <p>Any DOM Node created from this element will normally be a <i>reference</i>
  1311.            to another Node, so that if the target node is modified a the dereferenced
  1312.            content is modified. At present there are no deep copy semantics hardcoded
  1313.            into the schema.
  1314.         </p>
  1315.       </div>
  1316.     </xsd:documentation>
  1317.   </xsd:annotation>
  1318.   <xsd:restriction base="idType"/>
  1319. </xsd:simpleType>
  1320.  
  1321.      <xsd:simpleType name="sizeType" id="st.sizeType">  
  1322.       <xsd:annotation>
  1323.          <xsd:documentation>
  1324.            <div class="summary">The size of an array</div>
  1325.            <div class="description">
  1326.             <p>The size of an array. Redundant, but serves as a check
  1327.          for processing software (useful if delimiters are used)</p> 
  1328.          </div>
  1329.        </xsd:documentation>
  1330.       </xsd:annotation>
  1331.       <xsd:restriction base="xsd:positiveInteger"/>
  1332.    </xsd:simpleType>
  1333.  
  1334.      <xsd:simpleType name="unitsType" id="st.unitsType">
  1335.       <xsd:annotation>
  1336.          <xsd:documentation>
  1337.            <div class="summary">Scientific units</div>
  1338.            <div class="description"><p>These will be linked to dictionaries of units with
  1339.          conversion information, using namespaced references (e.g. <tt>si:m</tt>)
  1340.           </p> 
  1341.           <p>Distinguish carefully from <a href="st.unitType">unitType</a>
  1342.           which is an element describing a type of a unit in a <a href="el.unitList">unitList</a> 
  1343.           </p></div>
  1344.            <div class="example"><pre><stmml title="unitList example">
  1345. <stm:unitList xmlns:stm="http://www.xml-cml.org/schema/stmml">
  1346.  
  1347. <!-- ======================================================================= -->
  1348. <!-- ========================= fundamental types =========================== -->
  1349. <!-- ======================================================================= -->
  1350.  
  1351. <stm:unitType id="length" name="length">
  1352.   <stm:dimension name="length" power="1"/>
  1353. </stm:unitType>
  1354.  
  1355. <stm:unitType id="time" name="time">
  1356.   <stm:dimension name="time" power="1"/>
  1357. </stm:unitType>
  1358.  
  1359. <!-- ... -->
  1360.  
  1361. <stm:unitType id="dimensionless" name="dimensionless">
  1362.   <stm:dimension name="dimensionless" power="1"/>
  1363. </stm:unitType>
  1364.  
  1365. <!-- ======================================================================= -->
  1366. <!-- ========================== derived types ============================== -->
  1367. <!-- ======================================================================= -->
  1368.  
  1369. <stm:unitType id="acceleration" name="acceleration">
  1370.   <stm:dimension name="length" power="1"/>
  1371.   <stm:dimension name="time" power="-2"/>
  1372. </stm:unitType>
  1373.  
  1374. <!-- ... -->
  1375.  
  1376. <!-- ======================================================================= -->
  1377. <!-- ====================== fundamental SI units =========================== -->
  1378. <!-- ======================================================================= -->
  1379.  
  1380. <stm:unit id="second" name="second" unitType="time">
  1381.   <stm:description>The SI unit of time</stm:description>
  1382. </stm:unit>
  1383.  
  1384. <stm:unit id="meter" name="meter" unitType="length"
  1385.   abbreviation="m">
  1386.   <stm:description>The SI unit of length</stm:description>
  1387. </stm:unit>
  1388.  
  1389. <!-- ... -->
  1390.  
  1391. <stm:unit id="kg" name="nameless" unitType="dimensionless"
  1392.   abbreviation="nodim">
  1393.   <stm:description>A fictitious parent for dimensionless units</stm:description>
  1394. </stm:unit>
  1395.  
  1396. <!-- ======================================================================= -->
  1397. <!-- ===================== derived SI units ================================ -->
  1398. <!-- ======================================================================= -->
  1399.  
  1400. <stm:unit id="newton" name="newton" unitType="force">
  1401.   <stm:description>The SI unit of force</stm:description>
  1402. </stm:unit>
  1403.  
  1404. <!-- ... -->
  1405.  
  1406. <!-- multiples of fundamental SI units -->
  1407.  
  1408. <stm:unit id="g" name="gram" unitType="mass"
  1409.   parentSI="kg"
  1410.   multiplierToSI="0.001"
  1411.   abbreviation="g">
  1412.   <stm:description>0.001 kg. </stm:description>
  1413. </stm:unit>
  1414.  
  1415. <stm:unit id="celsius" name="Celsius" parentSI="k"
  1416.   multiplierToSI="1" 
  1417.   constantToSI="273.18">
  1418.   <stm:description><p>A common unit of temperature</p></stm:description>
  1419. </stm:unit>
  1420.  
  1421. <!-- fundamental non-SI units -->
  1422.  
  1423. <stm:unit id="inch" name="inch" parentSI="meter"
  1424.    abbreviation="in"
  1425.   multiplierToSI="0.0254" >
  1426.   <stm:description>An imperial measure of length</stm:description>
  1427. </stm:unit>
  1428.  
  1429. <!-- derived non-SI units -->
  1430.  
  1431. <stm:unit id="l" name="litre" unitType="volume"
  1432.    parentSI="meterCubed"
  1433.    abbreviation="l"
  1434.    multiplierToSI="0.001">
  1435.   <stm:description>Nearly 1 dm**3 This is not quite exact</stm:description>
  1436. </stm:unit>
  1437.  
  1438. <!-- ... -->
  1439.  
  1440. <stm:unit id="fahr" name="fahrenheit" parentSI="k"
  1441.    abbreviation="F"
  1442.   multiplierToSI="0.55555555555555555" 
  1443.   constantToSI="-17.777777777777777777">
  1444.   <stm:description>An obsolescent unit of temperature still used in popular
  1445.   meteorology</stm:description>
  1446. </stm:unit>
  1447.  
  1448. </stm:unitList>
  1449. </stmml>
  1450.  
  1451. </pre></div>
  1452.         </xsd:documentation>
  1453.       </xsd:annotation>
  1454.       <xsd:restriction base="xsd:string"/>
  1455.    </xsd:simpleType>
  1456.  
  1457.  
  1458.   
  1459.  
  1460.  
  1461.  <!-- elements from STMML -->
  1462.   <!-- stmml types in CML -->
  1463. <!-- these elements will adopt the CML namespace -->
  1464.   <xsd:element name="array" id="el.array">  
  1465.    <xsd:annotation>
  1466.      <xsd:documentation>
  1467.        <div class="summary">
  1468.             A homogenous 1-dimensional array of similar objects.</div>
  1469.          <div class="description">
  1470.          <p>
  1471.             <tt>array</tt> manages a homogenous 1-dimensional array of similar objects. These 
  1472.             can be encoded as strings (i.e. XSD-like datatypes) and are concatenated as
  1473.             string content. The size of the array should always be >= 1.
  1474.          </p>
  1475.          <p>The default delimiter is whitespace. The <tt>normalize-space()</tt> function of
  1476.          XSLT could be used to normalize all whitespace to single spaces and this would not affect
  1477.          the value of the array elements. To extract the elements <tt>java.lang.StringTokenizer</tt>
  1478.          could be used. If the elements themselves contain whitespace then a different delimiter
  1479.          must be used and is identified through the <tt>delimiter</tt> attribute. This method is
  1480.          mandatory if it is required to represent empty strings. If a delimiter is used it MUST
  1481.          start and end the array - leading and trailing whitespace is ignored. Thus <tt>size+1</tt>
  1482.          occurrences of the delimiter character are required. If non-normalized whitespace is to be
  1483.          encoded (e.g. newlines, tabs, etc) you are recommended to translate it character-wise
  1484.          to XML character entities.
  1485.          </p>
  1486.          <p>Note that normal Schema validation tools cannot validate the elements
  1487.          of <b>array</b> (they are defined as <tt>string</tt>) However if the string is
  1488.          split, a temporary schema 
  1489.          can be constructed from the type and used for validation. Also the type
  1490.          can be contained in a dictionary and software could decide to retrieve this
  1491.          and use it for validation.</p>
  1492.          <p>When the elements of the <tt>array</tt> are not simple scalars
  1493.          (e.g. <a href="el.scalar">scalar</a>s with a value and an error, the 
  1494.          <tt>scalar</tt>s should be used as the elements. Although this is 
  1495.          verbose, it is simple to understand. If there is a demand for
  1496.          more compact representations, it will be possible to define the
  1497.          syntax in a later version.</p>
  1498.         </div>
  1499. <div class="example">
  1500. <pre><stmml title="array example 1">
  1501.  
  1502. <array size="5" title="value" 
  1503.   dataType="xsd:decimal">  1.23 2.34 3.45 4.56 5.67</array>
  1504.   </stmml>
  1505. </pre>
  1506.          <p>the <tt>size</tt> attribute is not mandatory but provides a useful validity
  1507.          check): </p>
  1508.         </div>
  1509. <div class="example">
  1510. <pre><stmml title="array example 2">
  1511.  
  1512. <array size="5" title="initials" dataType="xsd:string" 
  1513.   delimiter="/">/A B//C/D-E/F/</array>
  1514.   </stmml>
  1515. </pre>
  1516. <p>Note that the second array-element is the empty string ''.</p>
  1517.         </div>
  1518. <div class="example">
  1519. <pre><stmml title="array example 3">
  1520.  
  1521. <array title="mass" size="4"
  1522.   units="unit:g"
  1523.   errorBasis="observedStandardDeviation"
  1524.   minValues="10 11 10 9"
  1525.   maxValues="12 14 12 11"
  1526.   errorValues="1 2 1 1"
  1527.   dataType="xsd:float">11 12.5 10.9 10.2
  1528. </array>
  1529. </stmml>
  1530. </pre>
  1531.       </div>
  1532.        </xsd:documentation>
  1533.    </xsd:annotation>
  1534.    <xsd:complexType>
  1535.      <xsd:simpleContent>
  1536.        <xsd:extension base="xsd:string">
  1537.           <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  1538.           <xsd:attribute name="dataType" type="dataTypeType" use="required">
  1539.              <xsd:annotation>
  1540.                   <xsd:documentation>
  1541.                    <div class="summary">The mandatory data type.</div>
  1542.                    <div class="summary">All elements of the array must have the same dataType</div>
  1543.                   </xsd:documentation>
  1544.                </xsd:annotation>
  1545.             </xsd:attribute>
  1546.             <xsd:attribute name="errorValues" type="floatArrayType">
  1547.                <xsd:annotation>
  1548.                   <xsd:documentation>
  1549.                    <div class="summary">an optional array of error values for numeric arrays</div>
  1550.                   </xsd:documentation>
  1551.                </xsd:annotation>
  1552.             </xsd:attribute>
  1553.             <xsd:attributeGroup ref="errorBasis"/>
  1554.             <xsd:attribute name="minValues" type="floatArrayType">
  1555.                <xsd:annotation>
  1556.                   <xsd:documentation>
  1557.                    <div class="summary">an optional array of minimum values for numeric arrays</div>
  1558.                   </xsd:documentation>
  1559.                </xsd:annotation>
  1560.             </xsd:attribute>
  1561.             <xsd:attribute name="maxValues" type="floatArrayType">
  1562.                <xsd:annotation>
  1563.                   <xsd:documentation>
  1564.                    <div class="summary">an optional array of maximum values for numeric arrays</div>
  1565.                   </xsd:documentation>
  1566.                </xsd:annotation>
  1567.             </xsd:attribute>
  1568.             <xsd:attributeGroup ref="units"/>
  1569.             <xsd:attributeGroup ref="delimiter"/>
  1570.             <xsd:attributeGroup ref="size"/>
  1571.             <xsd:attributeGroup ref="ref"/>
  1572.        </xsd:extension>
  1573.      </xsd:simpleContent>
  1574.    </xsd:complexType>
  1575. </xsd:element>
  1576.  
  1577.  
  1578.   <xsd:element name="list" id="el.list">  
  1579.   <xsd:annotation>
  1580.     <xsd:documentation>
  1581.       <div class="summary">A generic container with no implied semantics</div>
  1582.       <div class="description"><p>
  1583.        A generic container with no implied semantics. It just contains
  1584.       things and can have attributes which bind conventions to it. It could often
  1585.       act as the root element in an STM document.</p>
  1586.       </div>
  1587.       <div class="example">
  1588.       <pre><stmml title="list example">
  1589.  
  1590. <list>
  1591.   <array title="animals" dataType="xsd:string">frog bear toad</array>
  1592.   <scalar title="weight" dataType="xsd:float">3.456</scalar>
  1593. </list>
  1594. </stmml>
  1595. </pre>
  1596.       </div>
  1597.     </xsd:documentation>
  1598.   </xsd:annotation>
  1599.   <xsd:complexType>
  1600.     <xsd:sequence>
  1601.       <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  1602.     </xsd:sequence>
  1603.     <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  1604.     <xsd:attribute name="type" type="xsd:string" id="att.list.type">
  1605.       <xsd:annotation>
  1606.         <xsd:documentation>
  1607.           <div class="summary">Type of the list</div>
  1608.           <div class="description">Semeantics undefined.</div>
  1609.           <div class="example">
  1610.             <pre><stmml title="list example">
  1611.  
  1612. <list>
  1613.   <array title="animals" dataType="xsd:string">frog bear toad</array>
  1614.   <scalar title="weight" dataType="xsd:float">3.456</scalar>
  1615. </list>
  1616. </stmml>
  1617. </pre>
  1618.           </div>
  1619.         </xsd:documentation>
  1620.       </xsd:annotation>
  1621.     </xsd:attribute>
  1622.   </xsd:complexType>
  1623. </xsd:element>
  1624.  
  1625.   <xsd:element name="matrix" id="el.matrix">  
  1626.    <xsd:annotation>
  1627.       <xsd:documentation>
  1628.         <div class="summary">A rectangular matrix of any quantities</div>
  1629.         <div class="description"><p>By default <tt>matrix</tt> represents 
  1630.         a rectangular matrix of any quantities
  1631.             representable as XSD or STMML dataTypes. It consists of 
  1632.             <tt>rows*columns</tt> elements, where <tt>columns</tt> is the 
  1633.      fasting moving index. Assuming the elements are counted from 1 they are
  1634.      ordered <tt>V[1,1],V[1,2],...V[1,columns],V[2,1],V[2,2],...V[2,columns], 
  1635.      ...V[rows,1],V[rows,2],...V[rows,columns]</tt></p>
  1636.      <p>By default whitespace is used to separate matrix elements; see 
  1637.      <a href="el.array">array</a> for details. There are NO characters or markup 
  1638.      delimiting the end of rows; authors must be careful!. The <tt>columns</tt>
  1639.      and <tt>rows</tt> attributes have no default values; a row vector requires
  1640.      a <tt>rows</tt> attribute of 1.</p>
  1641.      <p><tt>matrix</tt> also supports many types of square matrix, but at present we
  1642.      require all elements to be given, even if the matrix is symmetric, antisymmetric
  1643.      or banded diagonal. The <tt>matrixType</tt> attribute allows software to 
  1644.      validate and process the type of matrix.</p>
  1645.       </div>
  1646.         <div class="example">
  1647.         <pre>
  1648. <stmml title="matrix example">
  1649.  
  1650. <matrix id="m1" title="mattrix-1" dictRef="foo:bar"
  1651.   rows="3" columns="3" dataType="xsd:decimal" 
  1652.   delimiter="|" matrixType="squareSymmetric" units="unit:m"
  1653.   >|1.1|1.2|1.3|1.2|2.2|2.3|1.3|2.3|3.3|</matrix>
  1654.   </stmml>
  1655.  
  1656.         </pre>
  1657.         </div>
  1658.      </xsd:documentation>
  1659.    </xsd:annotation>
  1660.  
  1661.    <xsd:complexType>
  1662.       <xsd:simpleContent>
  1663.          <xsd:extension base="xsd:string">
  1664.             <xsd:attribute name="dataType" type="dataTypeType" use="required" id="att.matrix.dataType"/>
  1665.             <xsd:attribute name="delimiter" type="delimiterType" id="att.matrix.delimiter"/>
  1666.             <xsd:attribute name="rows" type="sizeType" use="required">
  1667.                <xsd:annotation>
  1668.                   <xsd:documentation>
  1669.                      <div class="summary"><p>Number of rows</p>
  1670.                   </div>
  1671.                   </xsd:documentation>
  1672.                </xsd:annotation>
  1673.             </xsd:attribute>
  1674.             <xsd:attribute name="columns" type="sizeType" use="required" id="att.matrix.columns">
  1675.                <xsd:annotation>
  1676.                   <xsd:documentation>
  1677.                     <div class="summary"><p>Number of columns</p>
  1678.                   </div>
  1679.                   </xsd:documentation>
  1680.                </xsd:annotation>
  1681.             </xsd:attribute>
  1682.             <xsd:attribute name="units" type="unitsType" id="att.matrix.units">
  1683.                <xsd:annotation>
  1684.                   <xsd:documentation>
  1685.                     <div class="summary"><p>units (recommended for numeric quantities!!)</p>
  1686.                   </div>
  1687.                   </xsd:documentation>
  1688.                </xsd:annotation>
  1689.             </xsd:attribute>
  1690.             <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  1691.             <xsd:attribute name="matrixType" type="matrixType" id="att.matrix.matrixType">
  1692.               <xsd:annotation>
  1693.                  <xsd:documentation>
  1694.                   <div class="summary">Type of matrix</div>
  1695.                   <div class="description">Mainly square, but extensible through the <tt>xsd:union</tt> mechanism.
  1696.                </div>
  1697.               </xsd:documentation>
  1698.             </xsd:annotation>
  1699.          </xsd:attribute>
  1700.            <xsd:attribute name="errorValues" type="floatArrayType" id="att.matrix.errorValues">
  1701.               <xsd:annotation>
  1702.                  <xsd:documentation>
  1703.                   <div class="summary">an optional array of error values for numeric matrices</div>
  1704.                  </xsd:documentation>
  1705.               </xsd:annotation>
  1706.            </xsd:attribute>
  1707.            <xsd:attributeGroup ref="errorBasis"/>
  1708.            <xsd:attribute name="minValues" type="floatArrayType" id="att.matrix.minValues">
  1709.               <xsd:annotation>
  1710.                  <xsd:documentation>
  1711.                   <div class="summary">an optional array of minimum values for numeric matrices</div>
  1712.                  </xsd:documentation>
  1713.               </xsd:annotation>
  1714.            </xsd:attribute>
  1715.            <xsd:attribute name="maxValues" type="floatArrayType" id="att.matrix.maxValues">
  1716.               <xsd:annotation>
  1717.                  <xsd:documentation>
  1718.                   <div class="summary">an optional array of maximum values for numeric matrices</div>
  1719.                  </xsd:documentation>
  1720.               </xsd:annotation>
  1721.            </xsd:attribute>
  1722.  
  1723.          </xsd:extension>
  1724.       </xsd:simpleContent>
  1725.    </xsd:complexType>
  1726. </xsd:element>
  1727.  
  1728.   <xsd:element name="metadata" id="el.metadata">
  1729.   <xsd:annotation>
  1730.     <xsd:documentation>
  1731.       <div class="summary">A general container for metadata</div>
  1732.       <div class="description"><p>A general container for metadata, including at least
  1733.       Dublin Core (DC) and CML-specific metadata</p>
  1734.       <p>In its simple form each element provides a name and content in a similar
  1735.       fashion to the <tt>meta</tt> element in HTML. <tt>metadata</tt> may have simpleContent
  1736.       (i.e. a string for adding further information - this is not controlled).</p>
  1737.     </div>
  1738.       <div class="example">
  1739.       <pre><stmml title="metadata example">
  1740.  
  1741. <list>
  1742.   <metadataList>
  1743.     <metadata name="dc:coverage" content="Europe"/>
  1744.     <metadata name="dc:description" content="Ornithological chemistry"/>
  1745.     <metadata name="dc:identifier"  content="ISBN:1234-5678"/>
  1746.     <metadata name="dc:format" content="printed"/>
  1747.     <metadata name="dc:relation" content="abc:def123"/>
  1748.     <metadata name="dc:rights" content="licence:GPL"/>
  1749.     <metadata name="dc:subject" content="Informatics"/>
  1750.     <metadata name="dc:title" content="birds"/>
  1751.     <metadata name="dc:type" content="bird books on chemistry"/>
  1752.     <metadata name="dc:contributor" content="Tux Penguin"/>
  1753.     <metadata name="dc:creator" content="author"/>
  1754.     <metadata name="dc:publisher" content="Penguinone publishing"/>
  1755.     <metadata name="dc:source" content="penguinPub"/>
  1756.     <metadata name="dc:language" content="en-GB"/>
  1757.     <metadata name="dc:date" content="1752-09-10"/>
  1758.   </metadataList>
  1759.   <metadataList>
  1760.     <metadata name="cmlm:safety" content="mostly harmless"/>
  1761.     <metadata name="cmlm:insilico" content="electronically produced"/>
  1762.     <metadata name="cmlm:structure" content="penguinone"/>
  1763.     <metadata name="cmlm:reaction" content="synthesis of penguinone"/>
  1764.     <metadata name="cmlm:identifier" content="smiles:O=C1C=C(C)C(C)(C)C(C)=C1"/>
  1765.   </metadataList>
  1766. </list>
  1767. </stmml>
  1768. </pre>
  1769.       </div>
  1770.     </xsd:documentation>
  1771.   </xsd:annotation>
  1772.   <xsd:complexType>
  1773.     <xsd:simpleContent>
  1774.       <xsd:extension base="xsd:string">
  1775.         <xsd:attribute name="name" type="metadataType" id="att.metadata.name">
  1776.           <xsd:annotation>
  1777.             <xsd:documentation>
  1778.               <div class="summary">The metadata type</div>
  1779.             </xsd:documentation>
  1780.           </xsd:annotation>
  1781.         </xsd:attribute>
  1782.         <xsd:attributeGroup ref="convention"/>
  1783.         <xsd:attribute name="content" type="xsd:string" id="att.metadata.content">
  1784.           <xsd:annotation>
  1785.             <xsd:documentation>
  1786.               <div class="summary">The metadata</div>
  1787.              </xsd:documentation>
  1788.           </xsd:annotation>
  1789.         </xsd:attribute>
  1790.       </xsd:extension>
  1791.     </xsd:simpleContent>
  1792.   </xsd:complexType>
  1793. </xsd:element>
  1794.  
  1795.     <xsd:element name="metadataList" id="el.metadataList">
  1796.     <xsd:annotation>
  1797.       <xsd:documentation>
  1798.         <div class="summary">A general container for metadata elements</div>
  1799.         <div class="example"><pre><stmml title="metadata example">
  1800.  
  1801. <list>
  1802.   <metadataList>
  1803.     <metadata name="dc:coverage" content="Europe"/>
  1804.     <metadata name="dc:description" content="Ornithological chemistry"/>
  1805.     <metadata name="dc:identifier"  content="ISBN:1234-5678"/>
  1806.     <metadata name="dc:format" content="printed"/>
  1807.     <metadata name="dc:relation" content="abc:def123"/>
  1808.     <metadata name="dc:rights" content="licence:GPL"/>
  1809.     <metadata name="dc:subject" content="Informatics"/>
  1810.     <metadata name="dc:title" content="birds"/>
  1811.     <metadata name="dc:type" content="bird books on chemistry"/>
  1812.     <metadata name="dc:contributor" content="Tux Penguin"/>
  1813.     <metadata name="dc:creator" content="author"/>
  1814.     <metadata name="dc:publisher" content="Penguinone publishing"/>
  1815.     <metadata name="dc:source" content="penguinPub"/>
  1816.     <metadata name="dc:language" content="en-GB"/>
  1817.     <metadata name="dc:date" content="1752-09-10"/>
  1818.   </metadataList>
  1819.   <metadataList>
  1820.     <metadata name="cmlm:safety" content="mostly harmless"/>
  1821.     <metadata name="cmlm:insilico" content="electronically produced"/>
  1822.     <metadata name="cmlm:structure" content="penguinone"/>
  1823.     <metadata name="cmlm:reaction" content="synthesis of penguinone"/>
  1824.     <metadata name="cmlm:identifier" content="smiles:O=C1C=C(C)C(C)(C)C(C)=C1"/>
  1825.   </metadataList>
  1826. </list>
  1827. </stmml>
  1828. </pre></div>
  1829.       </xsd:documentation>
  1830.     </xsd:annotation>
  1831.  
  1832.     <xsd:complexType>
  1833.       <xsd:sequence>
  1834.         <xsd:element ref="metadata" maxOccurs="unbounded"/>
  1835.       </xsd:sequence>
  1836.     </xsd:complexType>
  1837.   </xsd:element>
  1838.  
  1839.  
  1840.     <xsd:element name="observation" id="el.observation">
  1841.     <xsd:annotation>
  1842.       <xsd:documentation>
  1843.         <div class="summary">An observation or occurrence</div>
  1844.         <div class="description"><p>A container for any events that
  1845.         need to be recorded, whether planned or not. They can include notes,
  1846.         measurements, conditions that may be referenced elsewhere, etc. There are
  1847.         no controlled semantics </p>
  1848.         <div class="example"><pre><stmml title="observation example">
  1849. <observation type="ornithology">
  1850.   <object title="sparrow" count="3"/>
  1851.   <observ/>
  1852. </observation>
  1853. </stmml>
  1854. </pre></div>
  1855.       </div>
  1856.      </xsd:documentation>
  1857.    </xsd:annotation>
  1858.     <xsd:complexType mixed="true">
  1859.       <xsd:sequence minOccurs="0" maxOccurs="unbounded">
  1860.         <xsd:any processContents="lax"/>
  1861.       </xsd:sequence>
  1862.       <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  1863.       <xsd:attribute name="type" type="xsd:string" id="att.observation.type">
  1864.         <xsd:annotation>
  1865.           <xsd:documentation>
  1866.             <div class="summary">Type of observation (uncontrolled vocabulary)</div>
  1867.          </xsd:documentation>
  1868.        </xsd:annotation>
  1869.       </xsd:attribute>
  1870.       <xsd:attribute name="count" type="countType" id="att.observation.count"/>
  1871.     </xsd:complexType>
  1872.  
  1873.   </xsd:element>
  1874.  
  1875.  
  1876.   <xsd:element name="scalar" id="el.scalar">  
  1877.    <xsd:annotation>
  1878.      <xsd:documentation>
  1879.        <div class="summary">An element to hold scalar data.</div>
  1880.          <div class="description">
  1881.            <p><tt>scalar</tt> holds scalar data under a single
  1882.             generic container. The semantics are usually resolved by
  1883.             linking to a dictionary.
  1884.              <b>scalar</b> defaults to a scalar string but
  1885.              has attributes which affect the type.
  1886.          </p>
  1887.          <p><tt>scalar</tt> does not necessarily reflect a physical object (for which
  1888.          <a href="el.object">object</a> should be used). It may reflect a property of an object
  1889.          such as temperature, size, etc. </p>
  1890.          <p>Note that normal Schema validation tools cannot validate the data type 
  1891.          of <b>scalar</b> (it is defined as <tt>string</tt>), but that a temporary schema 
  1892.          can be constructed from the type and used for validation. Also the type
  1893.          can be contained in a dictionary and software could decide to retrieve this
  1894.          and use it for validation.</p>
  1895.       </div>
  1896.  
  1897.       <div class="example">
  1898.         <pre>
  1899. <stmml title="scalar example">
  1900. <scalar 
  1901.     dataType="xsd:decimal" 
  1902.     errorValue="1.0" 
  1903.     errorBasis="observedStandardDeviation" 
  1904.     title="body weight"
  1905.     dictRef="zoo:bodywt"
  1906.     units="units:g">34.3</scalar>
  1907.     </stmml>
  1908.  
  1909.         </pre>
  1910.       </div>
  1911.      </xsd:documentation>
  1912.    </xsd:annotation>
  1913.    <xsd:complexType>
  1914.       <xsd:simpleContent>
  1915.          <xsd:extension base="xsd:string">
  1916.             <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  1917.             <xsd:attributeGroup ref="dataType"/>
  1918.             <xsd:attributeGroup ref="errorValue"/>
  1919.             <xsd:attributeGroup ref="errorBasis"/>
  1920.             <xsd:attributeGroup ref="min"/>
  1921.             <xsd:attributeGroup ref="max"/>
  1922.             <xsd:attributeGroup ref="units"/>
  1923.          </xsd:extension>
  1924.       </xsd:simpleContent>
  1925.    </xsd:complexType>
  1926. </xsd:element>
  1927.  
  1928.  
  1929.  
  1930.   
  1931.   
  1932.  
  1933.    <!-- cml types -->
  1934.    <!-- CML types -->
  1935.    <xsd:simpleType name="angleUnitsType" id="st.angleUnitsType">  
  1936.    <xsd:annotation>
  1937.      <xsd:documentation>
  1938.        <div class="summary">an enumeration of allowed angle units</div>
  1939.       <div class="description">
  1940.       </div>
  1941.       <div class="example">
  1942.         <pre>
  1943.         </pre>
  1944.       </div>
  1945.      </xsd:documentation>
  1946.    </xsd:annotation>
  1947.    <xsd:restriction base="xsd:string">
  1948.      <xsd:enumeration value="degrees"/>
  1949.      <xsd:enumeration value="radians"/>
  1950.    </xsd:restriction>
  1951.  </xsd:simpleType>
  1952.  
  1953.    <xsd:simpleType name="atomRefType" id="st.atomRefType">  
  1954.   <xsd:annotation>
  1955.     <xsd:documentation>
  1956.       <div class="summary">A reference to an existing atom</div>
  1957.       <div class="example">
  1958.          <pre><cml title="atomRef example">
  1959.   <molecule id="m1">
  1960.     <atomArray>
  1961.       <atom id="a1"/>
  1962.     </atomArray>
  1963.     <electron id="e1" atomRef="a1"/>
  1964.   </molecule>
  1965. </cml>
  1966. </pre>
  1967.       </div>
  1968.     </xsd:documentation>
  1969.   </xsd:annotation>
  1970.   <xsd:restriction base="xsd:string">
  1971.     <xsd:pattern value="\s*[A-Za-z_][A-Za-z0-9\-:_]*\s*"/>
  1972.   </xsd:restriction>
  1973. </xsd:simpleType>
  1974.  
  1975.    <xsd:simpleType name="atomRefs2Type" id="st.atomRefs2Type">  
  1976.   <xsd:annotation>
  1977.     <xsd:documentation>
  1978.       <div class="summary">A reference to two distinct existing atoms in order</div>
  1979.       <div class="example">
  1980.         <pre><cml title="atomRefs2 example">
  1981.   <molecule id="m1">
  1982.     <atomArray>
  1983.       <atom id="a1"/>  
  1984.       <atom id="a2"/>
  1985.     </atomArray>
  1986.     <bondArray>
  1987.       <bond atomRefs2="a1 a2"/>
  1988.     </bondArray>
  1989.   </molecule>
  1990. </cml>
  1991.  
  1992. </pre>
  1993.       </div>
  1994.     </xsd:documentation>
  1995.       </xsd:annotation>
  1996.  
  1997.       <xsd:restriction base="xsd:string">
  1998.          <xsd:pattern value="\s*\S+\s+\S+\s*"/>
  1999.       </xsd:restriction>
  2000.    </xsd:simpleType>
  2001.  
  2002.       <xsd:simpleType name="atomRefs3Type" id="st.atomRefs3Type">  
  2003.       <xsd:annotation>
  2004.          <xsd:documentation>
  2005.       <div class="summary">A reference to three distinct existing atoms in order</div>
  2006.       <div class="example">
  2007.        <pre><cml title="atomRefs3 example">
  2008.   <molecule id="m1">
  2009.     <atomArray>
  2010.       <atom id="a1"/>  
  2011.       <atom id="a2"/>
  2012.       <atom id="a3"/>
  2013.     </atomArray>
  2014.     <angle atomRefs3="a1 a2 a3" units="degrees">123.4</angle>
  2015.   </molecule>
  2016. </cml>
  2017.  
  2018.  
  2019.        </pre>
  2020.       </div>
  2021.          </xsd:documentation>
  2022.       </xsd:annotation>
  2023.       <xsd:restriction base="xsd:string">
  2024.          <xsd:pattern value="\s*(\S+\s+){2}\S+\s*"/>
  2025.       </xsd:restriction>
  2026.    </xsd:simpleType>
  2027.  
  2028.    
  2029.    <xsd:simpleType name="atomRefs4Type" id="st.atomRefs4Type">  
  2030.       <xsd:annotation>
  2031.          <xsd:documentation>
  2032.       <div class="summary">A reference to four distinct existing atoms in order</div>
  2033.       <div class="example">
  2034.        <pre><cml title="atomRefs4 example">
  2035.   <molecule id="m1">
  2036.     <atomArray>
  2037.       <atom id="a1"/>  
  2038.       <atom id="a2"/>
  2039.       <atom id="a3"/>
  2040.      <atom id="a4"/>
  2041.     </atomArray>
  2042.     <torsion atomRefs4="a1 a2 a3 a4" units="degrees">123.4</torsion>
  2043.   </molecule>
  2044. </cml>
  2045.  
  2046.  
  2047.        </pre>
  2048.       </div>
  2049.          </xsd:documentation>
  2050.       </xsd:annotation>
  2051.       <xsd:restriction base="xsd:string">
  2052.          <xsd:pattern value="\s*(\S+\s+){3}\S+\s*"/>
  2053.       </xsd:restriction>
  2054.    </xsd:simpleType>
  2055.  
  2056.    
  2057.    <xsd:simpleType name="atomRefArrayType" id="st.atomRefArrayType">  
  2058.       <xsd:annotation>
  2059.          <xsd:documentation>
  2060.       <div class="summary">An array of atomRefs</div>
  2061.       <div class="description">
  2062.             <p>The atomRefs
  2063.          cannot be schema- or schematron-validated. Instances of this type will
  2064.          be used in array-style representation of bonds and atomParitys.
  2065.          It can also be used for arrays of atomIDTypes such as in complex setereochemistry,
  2066.          geometrical definitions, atom groupings, etc.</p> </div>
  2067.       <div class="example">
  2068.        <pre>
  2069. <cml title="atomArray example">
  2070.   <molecule id="m1">
  2071.     <atomArray atomID="a2 a4 a6"  
  2072.       elementType="O N S"/>
  2073.   </molecule>
  2074. </cml>
  2075.  
  2076.        </pre>
  2077.       </div>
  2078.          </xsd:documentation>
  2079.          <xsd:appinfo>
  2080.          </xsd:appinfo>
  2081.       </xsd:annotation>
  2082.       <xsd:list itemType="atomRefType"/>
  2083.    </xsd:simpleType>
  2084.  
  2085.    <xsd:simpleType name="atomIDType" id="st.atomIDType">  
  2086.    <xsd:annotation>
  2087.       <xsd:documentation>
  2088.    <div class="summary">An identifier for an atom</div>
  2089.    <div class="description">
  2090.          <p>Of the form prefix:suffix where prefix and suffix
  2091.          are purely alphanumeric (with _ and -) and prefix
  2092.          is optional. This is similar to XML IDs (and we promote
  2093.          this as good practice for atomIDs. Other punctuation and 
  2094.          whitespace is forbidden, so IDs from (say) PDB files are
  2095.          not satisfactory.</p>
  2096.          <p>The prefix is intended to form a pseudo-namespace so that
  2097.          atom IDs in different molecules may have identical suffixes. 
  2098.          It is also useful if the prefix is the ID for the molecule
  2099.          (though this clearly has its limitation). Atom IDs should not
  2100.          be typed as XML IDs since they may not validate.</p>
  2101.          </div>
  2102.    <div class="example">
  2103.    <pre><cml title="example of IDs on atoms">
  2104.   <molecule id="m1">
  2105.     <atomArray>
  2106. <!-- this atom might be referenced as m1:a2. This is not formally
  2107.      part of CML yet -->
  2108.       <atom id="a2" elementType="O"/>
  2109.     </atomArray>
  2110.   </molecule>
  2111.   <molecule id="m2">
  2112.     <atomArray>
  2113. <!-- this atom might be referenced as m2:a2. This is not formally
  2114.      part of CML yet -->
  2115.       <atom id="a2" elementType="O"/>
  2116.     </atomArray>
  2117.   </molecule>
  2118. </cml>
  2119.   
  2120.     
  2121. </pre>
  2122.          </div>
  2123.       </xsd:documentation>
  2124.       <xsd:appinfo>
  2125.       </xsd:appinfo>
  2126.    </xsd:annotation>
  2127.    <xsd:restriction base="xsd:string">
  2128.       <xsd:pattern value="[A-Za-z0-9_-]+(:[A-Za-z0-9_-]+)?"/>
  2129.    </xsd:restriction>
  2130. </xsd:simpleType>
  2131.  
  2132.    <xsd:simpleType name="bondRefType" id="st.bondRefType">  
  2133.   <xsd:annotation>
  2134.     <xsd:documentation>
  2135.       <div class="summary">A reference to an existing bond</div>
  2136.            <div class="general"><p>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
  2137.            (no examples yet). The semantics are relatively flexible.</p>
  2138.            </div>
  2139.  
  2140.       <div class="example">
  2141.        <pre>
  2142. <cml title="bondArray example">
  2143.   <bondArray>
  2144.     <bond id="b1" atomRefs2="a3 a8" order="D">
  2145.       <electron bondRef="b1"/>
  2146.       <bondStereo>C</bondStereo>
  2147.     </bond>
  2148.     <bond id="b2" atomRefs2="a3 a8" order="S">
  2149.       <bondStereo convention="MDL" conventionValue="6"/>
  2150.     </bond>
  2151.   </bondArray>
  2152. </cml>
  2153.  
  2154.        </pre>
  2155.       </div>
  2156.     </xsd:documentation>
  2157.   </xsd:annotation>
  2158.   <xsd:restriction base="xsd:string">
  2159.     <xsd:pattern value="\s*\S+\s*"/>
  2160.   </xsd:restriction>
  2161. </xsd:simpleType>
  2162.  
  2163.    
  2164.    <xsd:simpleType name="bondRefArrayType" id="st.bondRefArrayType">  
  2165.       <xsd:annotation>
  2166.          <xsd:documentation>
  2167.       <div class="summary">An array of references to bonds</div>
  2168.       <div class="description">
  2169.             <p>The references cannot (yet)
  2170.          cannot be schema- or schematron-validated. Instances of this type will
  2171.          be used in array-style representation of electron counts, etc.
  2172.          It can also be used for arrays of bondIDTypes such as in complex stereochemistry,
  2173.          geometrical definitions, bond groupings, etc.</p> </div>
  2174.       <div class="example">
  2175.        <pre>
  2176.        </pre>
  2177.       </div>
  2178.          </xsd:documentation>
  2179.          <xsd:appinfo>
  2180.          </xsd:appinfo>
  2181.       </xsd:annotation>
  2182.       <xsd:list itemType="bondRefType"/>
  2183.    </xsd:simpleType>
  2184.  
  2185.    <xsd:simpleType name="elementTypeType" id="st.elementTypeType">   
  2186.   <xsd:annotation>
  2187.     <xsd:documentation>
  2188.       <div class="summary">Allowed <tt>elementType</tt> values</div>
  2189.       <div class="description">
  2190.         <p>The periodic table (up to
  2191.          element number 118. In addition the following strings are allowed:
  2192.          <ul>
  2193.             <li><tt>Du</tt>. ("dummy") This does not correspond to a "real" atom and can 
  2194.          support a point in space or within a chemical graph.</li>
  2195.             <li><tt>R</tt>. ("R-group") This indicates that an atom or group of atoms could be attached at this point. </li>
  2196.          </ul>
  2197.          </p> 
  2198.       </div>
  2199.       <div class="example">
  2200.         <pre><cml title="elementType example">
  2201.   <atomArray>
  2202.     <atom id="a1" elementType="C"/>
  2203.     <atom id="a2" elementType="N"/>
  2204.     <atom id="a3" elementType="Pb"/>
  2205.     <atom id="a4" elementType="Dummy"/>
  2206.   </atomArray>
  2207. </cml>
  2208.  
  2209. </pre>
  2210.       </div>
  2211.     </xsd:documentation>
  2212.   </xsd:annotation>
  2213.   <xsd:union>
  2214.         <xsd:simpleType>
  2215.           <xsd:restriction base="xsd:string">
  2216.             <xsd:enumeration value="Ac"/>
  2217.             <xsd:enumeration value="Al"/>
  2218.             <xsd:enumeration value="Ag"/>
  2219.             <xsd:enumeration value="Am"/>
  2220.             <xsd:enumeration value="Ar"/>
  2221.             <xsd:enumeration value="As"/>
  2222.             <xsd:enumeration value="At"/>
  2223.             <xsd:enumeration value="Au"/>
  2224.             <xsd:enumeration value="B"/>
  2225.             <xsd:enumeration value="Ba"/>
  2226.             <xsd:enumeration value="Bh"/>
  2227.             <xsd:enumeration value="Bi"/>
  2228.             <xsd:enumeration value="Be"/>
  2229.             <xsd:enumeration value="Bk"/>
  2230.             <xsd:enumeration value="Br"/>
  2231.             <xsd:enumeration value="C"/>
  2232.             <xsd:enumeration value="Ca"/>
  2233.             <xsd:enumeration value="Cd"/>
  2234.             <xsd:enumeration value="Ce"/>
  2235.             <xsd:enumeration value="Cf"/>
  2236.             <xsd:enumeration value="Cl"/>
  2237.             <xsd:enumeration value="Cm"/>
  2238.             <xsd:enumeration value="Co"/>
  2239.             <xsd:enumeration value="Cr"/>
  2240.             <xsd:enumeration value="Cs"/>
  2241.             <xsd:enumeration value="Cu"/>
  2242.             <xsd:enumeration value="Db"/>
  2243.             <xsd:enumeration value="Dy"/>
  2244.             <xsd:enumeration value="Er"/>
  2245.             <xsd:enumeration value="Es"/>
  2246.             <xsd:enumeration value="Eu"/>
  2247.             <xsd:enumeration value="F"/>
  2248.             <xsd:enumeration value="Fe"/>
  2249.             <xsd:enumeration value="Fm"/>
  2250.             <xsd:enumeration value="Fr"/>
  2251.             <xsd:enumeration value="Ga"/>
  2252.             <xsd:enumeration value="Gd"/>
  2253.             <xsd:enumeration value="Ge"/>
  2254.             <xsd:enumeration value="H">
  2255.   <xsd:annotation>
  2256.     <xsd:documentation>
  2257.       <div class="summary">Any isotope of hydrogen.</div>
  2258.             <div class="description">
  2259. <p>There are no special element symbols for D and T which should use the <tt>isotope</tt> attribute. </p></div>
  2260.     </xsd:documentation>
  2261.   </xsd:annotation>
  2262.             </xsd:enumeration>
  2263.             <xsd:enumeration value="He"/>
  2264.             <xsd:enumeration value="Hf"/>
  2265.             <xsd:enumeration value="Hg"/>
  2266.             <xsd:enumeration value="Ho"/>
  2267.             <xsd:enumeration value="Hs"/>
  2268.             <xsd:enumeration value="I"/>
  2269.             <xsd:enumeration value="In"/>
  2270.             <xsd:enumeration value="Ir"/>
  2271.             <xsd:enumeration value="K"/>
  2272.             <xsd:enumeration value="Kr"/>
  2273.             <xsd:enumeration value="La"/>
  2274.             <xsd:enumeration value="Li"/>
  2275.             <xsd:enumeration value="Lr"/>
  2276.             <xsd:enumeration value="Lu"/>
  2277.             <xsd:enumeration value="Md"/>
  2278.             <xsd:enumeration value="Mg"/>
  2279.             <xsd:enumeration value="Mn"/>
  2280.             <xsd:enumeration value="Mo"/>
  2281.             <xsd:enumeration value="Mt"/>
  2282.             <xsd:enumeration value="N"/>
  2283.             <xsd:enumeration value="Na"/>
  2284.             <xsd:enumeration value="Nb"/>
  2285.             <xsd:enumeration value="Nd"/>
  2286.             <xsd:enumeration value="Ne"/>
  2287.             <xsd:enumeration value="Ni"/>
  2288.             <xsd:enumeration value="No"/>
  2289.             <xsd:enumeration value="Np"/>
  2290.             <xsd:enumeration value="O"/>
  2291.             <xsd:enumeration value="Os"/>
  2292.             <xsd:enumeration value="P"/>
  2293.             <xsd:enumeration value="Pa"/>
  2294.             <xsd:enumeration value="Pb"/>
  2295.             <xsd:enumeration value="Pd"/>
  2296.             <xsd:enumeration value="Pm"/>
  2297.             <xsd:enumeration value="Po"/>
  2298.             <xsd:enumeration value="Pr"/>
  2299.             <xsd:enumeration value="Pt"/>
  2300.             <xsd:enumeration value="Pu"/>
  2301.             <xsd:enumeration value="Ra"/>
  2302.             <xsd:enumeration value="Rb"/>
  2303.             <xsd:enumeration value="Re"/>
  2304.             <xsd:enumeration value="Rf"/>
  2305.             <xsd:enumeration value="Rh"/>
  2306.             <xsd:enumeration value="Rn"/>
  2307.             <xsd:enumeration value="Ru"/>
  2308.             <xsd:enumeration value="S"/>
  2309.             <xsd:enumeration value="Sb"/>
  2310.             <xsd:enumeration value="Sc"/>
  2311.             <xsd:enumeration value="Se"/>
  2312.             <xsd:enumeration value="Sg"/>
  2313.             <xsd:enumeration value="Si"/>
  2314.             <xsd:enumeration value="Sm"/>
  2315.             <xsd:enumeration value="Sn"/>
  2316.             <xsd:enumeration value="Sr"/>
  2317.             <xsd:enumeration value="Ta"/>
  2318.             <xsd:enumeration value="Tb"/>
  2319.             <xsd:enumeration value="Tc"/>
  2320.             <xsd:enumeration value="Te"/>
  2321.             <xsd:enumeration value="Th"/>
  2322.             <xsd:enumeration value="Ti"/>
  2323.             <xsd:enumeration value="Tl"/>
  2324.             <xsd:enumeration value="Tm"/>
  2325.             <xsd:enumeration value="U"/>
  2326.             <xsd:enumeration value="Uun"/>
  2327.             <xsd:enumeration value="Uuu"/>
  2328.             <xsd:enumeration value="Uub"/>
  2329.             <xsd:enumeration value="Uut"/>
  2330.             <xsd:enumeration value="Uuq"/>
  2331.             <xsd:enumeration value="Uup"/>
  2332.             <xsd:enumeration value="Uuh"/>
  2333.             <xsd:enumeration value="Uus"/>
  2334.             <xsd:enumeration value="Uuo"/>
  2335.             <xsd:enumeration value="V"/>
  2336.             <xsd:enumeration value="W"/>
  2337.             <xsd:enumeration value="Xe"/>
  2338.             <xsd:enumeration value="Y"/>
  2339.             <xsd:enumeration value="Yb"/>
  2340.             <xsd:enumeration value="Zn"/>
  2341.             <xsd:enumeration value="Zr"/>
  2342.     
  2343.             <xsd:enumeration value="Dummy">
  2344.             </xsd:enumeration>
  2345.             <xsd:enumeration value="Du">
  2346.   <xsd:annotation>
  2347.     <xsd:documentation>
  2348.       <div class="summary">A point or object with no chemical semantics.</div>
  2349.             <div class="description">
  2350. <p>Examples can be centroids, bond-midpoints, orienting "atoms" in small z-matrices. </p>
  2351. <p>Note "Dummy" has the same semantics but is now deprecated.</p></div>
  2352.     </xsd:documentation>
  2353.   </xsd:annotation>
  2354.             </xsd:enumeration>
  2355.             
  2356.             <xsd:enumeration value="R">
  2357.   <xsd:annotation>
  2358.     <xsd:documentation>
  2359.     
  2360.       <div class="summary">A point at which an atom or group might be attached</div>
  2361.             <div class="description">
  2362. <p>Examples are abbreviated organic functional groups, Markush representations, polymers, unknown atoms, etc. Semantics may be determined by the <tt>role</tt> attribute on the atom. </p></div>
  2363.     </xsd:documentation>
  2364.   </xsd:annotation>
  2365.             </xsd:enumeration>
  2366.             
  2367.           </xsd:restriction>
  2368.         </xsd:simpleType>
  2369.         <xsd:simpleType>
  2370.           <xsd:restriction base="xsd:string">
  2371.             <xsd:pattern value="[A-Za-z]+:[A-Za-z][A-Za-z0-9\-]+"/>
  2372.           </xsd:restriction>
  2373.         </xsd:simpleType>
  2374.       </xsd:union>
  2375.    </xsd:simpleType>
  2376.  
  2377.       <xsd:simpleType name="elementTypeArrayType" id="st.elementTypeArrayType">  
  2378.       <xsd:annotation>
  2379.          <xsd:documentation>
  2380.       <div class="summary">An array of elementTypes</div>
  2381.       <div class="description">
  2382.             <p>Instances of this type will
  2383.          be used in array-style representation of atoms.</p> </div>
  2384.       <div class="example">
  2385.        <pre><cml title="atomArray with elementTypes">
  2386.   <atomArray elementType="O N S Pb"/>
  2387. </cml>
  2388. </pre>
  2389.       </div>
  2390.          </xsd:documentation>
  2391.       </xsd:annotation>
  2392.       <xsd:list itemType="elementTypeType"/>
  2393.    </xsd:simpleType>
  2394.  
  2395.       <xsd:simpleType name="formalChargeType" id="st.formalChargeType">  
  2396.       <xsd:annotation>
  2397.          <xsd:documentation>
  2398.       <div class="summary">The formal charge on an atom</div>
  2399.       <div class="description">
  2400.             <p>Used for electron-bookeeping.
  2401.          This has no relation to its
  2402.          calculated (fractional) charge.</p> </div>
  2403.       <div class="example">
  2404.        <pre>
  2405. <cml title="formalCharge example">
  2406.   <atomArray>
  2407.     <atom id="a1" elementType="N" formalCharge="+1"/>
  2408.     <atom id="a2" elementType="O" formalCharge="-1"/>
  2409.   </atomArray>
  2410. </cml>
  2411.  
  2412.        </pre>
  2413.       </div>
  2414.          </xsd:documentation>
  2415.       </xsd:annotation>
  2416.       <xsd:restriction base="xsd:integer"/>
  2417.    </xsd:simpleType>
  2418.  
  2419.       <xsd:simpleType name="formulaType" id="st.formulaType">  
  2420.       <xsd:annotation>
  2421.          <xsd:documentation>
  2422.       <div class="summary">A concise representation for a molecular formula</div>
  2423.       <div class="description">
  2424.             <p>This MUST adhere to a whitespaced syntax so that it is trivially machine-parsable.
  2425.             Each element is followed by its count, and the string is optionally ended
  2426.             by a formal charge. NO brackets or other nesting is allowed.</p>
  2427.       </div>
  2428.       <div class="example">
  2429.        <pre>
  2430. <cml title="formulaType example (concise)">
  2431.   <list>
  2432.     <formula id="methane" concise="C 1 H 4"/>
  2433.     <formula id="chloroacetate" concise="Cl 1 H 2 C 2 O 2 -1"/>
  2434.     <formula id="sodiumSulfate">
  2435.       <formula concise="H 2 O 1" count="10"/>
  2436.       <formula concise="Na 1 +1" count="2"/>
  2437.       <formula concise="S 1 O 4 -2"/>
  2438.     </formula>
  2439.   </list>
  2440. </cml>
  2441.  
  2442.        </pre>
  2443.       </div>
  2444.          </xsd:documentation>
  2445.          <xsd:appinfo>
  2446.          </xsd:appinfo>
  2447.       </xsd:annotation>
  2448.       <xsd:restriction base="xsd:string">
  2449.          <xsd:pattern value="\s*([A-Z][a-z]?\s+[1-9][0-9]*)(\s+[A-Z][a-z]?\s+[1-9][0-9]*)*(\s+[-|+]?[0-9]+)?\s*"/>
  2450.       </xsd:restriction>
  2451.    </xsd:simpleType>
  2452.  
  2453.    <xsd:simpleType name="hydrogenCountType" id="st.hydrogenCountType">
  2454.    <xsd:annotation>
  2455.       <xsd:documentation>
  2456.       <div class="summary">The total number of hydrogen atoms bonded to an atom</div>
  2457.       <div class="description">
  2458.          <p>The total number of hydrogen atoms bonded to an atom, whether
  2459.       explicitly included as atoms or not. It is an error to have hydrogen count
  2460.       less than the explicit hydrogen count. There is no default value and no assumptions
  2461.       about hydrogen Count can be made if it is not given. </p>
  2462.          <p>If hydrogenCount is given on every atom, then the values can be summed to give
  2463.       the total hydrogenCount for the (sub)molecule. Because of this hydrogenCount
  2464.       should not be used where hydrogen atoms bridge 2 or more atoms.</p>
  2465.       </div>
  2466.       <div class="example">
  2467.        <pre>
  2468. <cml title="single atom example">
  2469. <atom id="a1" title="O3'" elementType="O" 
  2470.   formalCharge="1" hydrogenCount="1"
  2471.   isotope="17" occupancy="0.7" 
  2472.   x2="1.2" y2="2.3" 
  2473.   x3="3.4" y3="4.5" z3="5.6"
  2474.   convention="ABC" dictRef="chem:atom"
  2475. >
  2476.   <scalar title="dipole" dictRef="d:dip" 
  2477.     units="units:debye">0.2</scalar>
  2478.   <atomParity atomRefs4="a3 a7 a2 a4">1</atomParity>
  2479.   <electron id="e1" atomRef="a1" count="2"/>
  2480. </atom>
  2481. </cml>
  2482.  
  2483.        </pre>
  2484.       </div>
  2485.       </xsd:documentation>
  2486.    </xsd:annotation>
  2487.    <xsd:restriction base="xsd:nonNegativeInteger"/>
  2488. </xsd:simpleType>
  2489.  
  2490.    
  2491.    <xsd:simpleType name="isotopeType" id="st.isotopeType">  
  2492.       <xsd:annotation>
  2493.          <xsd:documentation>
  2494.       <div class="summary">The numeric representation of an isotope</div>
  2495.       <div class="description">
  2496.             <p>In core CML this represents a single number; either the 
  2497.          combined proton/neutron count or a more accurate estimate of the 
  2498.          nuclear mass. This is admittedly fuzzy, and requires a more complex
  2499.          object (which can manage conventions, lists of isotopic masses, etc.)
  2500.          See <a href="el.isotope">isotope</a>.</p>
  2501.          <p>The default is "natural abundance" - whatever that can be interpreted
  2502.          as.</p>
  2503.             <p>Delta values (i.e. deviations from the most abundant istopic mass)
  2504.          are never allowed.</p>
  2505.          </div>
  2506.          </xsd:documentation>
  2507.       </xsd:annotation>
  2508.       <xsd:restriction base="xsd:float">
  2509.          <xsd:minInclusive value="0.0"/>
  2510.          <xsd:maxInclusive value="99999999999.0"/>
  2511.       </xsd:restriction>
  2512.    </xsd:simpleType>
  2513.  
  2514.    <xsd:simpleType name="nonNegativeAngleType" id="st.nonNegativeAngleType">  
  2515.   <xsd:annotation>
  2516.     <xsd:documentation>
  2517.       <div class="summary">A non-signed angle, such as a bond angle. 
  2518.       Note that we also provide positiveAngleType (e.g. for cell angles) and
  2519.       torsionAngleType for - guess what - <a href="el.torsion">torsion</a>.</div>
  2520.       <div class="description">
  2521.         <p>Re-used by <a href="el.angle">angle</a></p>
  2522.       </div>
  2523.       <div class="example">
  2524.        <pre><stmml title="nonNegativeAngle type">
  2525.  
  2526. <scalar dataType="nonNegativeAngleType">123</scalar>  
  2527. </stmml>
  2528. </pre>
  2529.       </div>
  2530.     </xsd:documentation>
  2531.   </xsd:annotation>
  2532.   <xsd:restriction base="xsd:float">
  2533.     <xsd:minInclusive value="0.0"/>
  2534.     <xsd:maxInclusive value="180.0"/>
  2535.   </xsd:restriction>
  2536. </xsd:simpleType>
  2537.  
  2538.       <xsd:simpleType name="nonHydrogenCountType" id="st.nonHydrogenCountType">  
  2539.       <xsd:annotation>
  2540.          <xsd:documentation>
  2541.       <div class="summary">The number of non-hydrogen atoms attached to an atom</div>
  2542.       <div class="description">
  2543.             <p>Obsolete in core CML. Only useful in CML queries</p> 
  2544.             </div>
  2545.          </xsd:documentation>
  2546.       </xsd:annotation>
  2547.       <xsd:restriction base="xsd:nonNegativeInteger"/>
  2548.    </xsd:simpleType>
  2549.  
  2550.    <xsd:simpleType name="positiveAngleType" id="st.positiveAngleType">  
  2551.   <xsd:annotation>
  2552.     <xsd:documentation>
  2553.       <div class="summary">A non-signed angle, such as a cell angle. 
  2554.       Note that we also provide nonNegativeAngleType (e.g. for bond angles)</div>
  2555.       <div class="description">
  2556.         <p>Re-used by <a href="el.crystal">crystal</a></p>
  2557.       </div>
  2558.       <div class="example">
  2559.        <pre><cml title="positiveAngleType example">
  2560.   <list>
  2561.     <scalar title="alpha" units="units:degree">70.123</scalar>
  2562.     <scalar title="beta" units="units:degree">80.456</scalar>
  2563.     <scalar title="gamma" units="units:degree">90.789</scalar>
  2564.   </list>
  2565. </cml>
  2566.    
  2567. </pre>
  2568.       </div>
  2569.     </xsd:documentation>
  2570.   </xsd:annotation>
  2571.   <xsd:restriction base="xsd:float">
  2572.     <xsd:minExclusive value="0.0"/>
  2573.     <xsd:maxInclusive value="180.0"/>
  2574.   </xsd:restriction>
  2575. </xsd:simpleType>
  2576.  
  2577.    
  2578.    <xsd:simpleType name="occupancyType" id="st.occupancyType">  
  2579.       <xsd:annotation>
  2580.          <xsd:documentation>
  2581.       <div class="summary">Occupancy of an atomic site</div>
  2582.       <div class="description">
  2583.             <p> Primarily for crystallography. Values
  2584.          outside 0-1 are not allowed.</p> 
  2585.          </div>
  2586.       <div class="example">See <a href="el.atom">atom</a>.
  2587.       </div>
  2588.          </xsd:documentation>
  2589.       </xsd:annotation>
  2590.       <xsd:restriction base="xsd:float">
  2591.          <xsd:minInclusive value="0"/>
  2592.          <xsd:maxInclusive value="1"/>
  2593.       </xsd:restriction>
  2594.    </xsd:simpleType>
  2595.  
  2596.    <xsd:simpleType name="orderArrayType" id="st.orderArrayType">  
  2597.   <xsd:annotation>
  2598.     <xsd:documentation>
  2599.       <div class="summary">An array of bond orders</div>
  2600.       <div class="description">
  2601.       <p> (seeAlso <a href="st.orderType">orderType</a>)</p> </div>
  2602.     </xsd:documentation>
  2603.   </xsd:annotation>
  2604.   <xsd:list itemType="orderType"/>
  2605. </xsd:simpleType>
  2606.  
  2607.       <xsd:simpleType name="orderType" id="st.orderType">  
  2608.       <xsd:annotation>
  2609.          <xsd:documentation>
  2610.       <div class="summary">Bond order (as a string)</div>
  2611.       <div class="description">
  2612.             <p>This is purely conventional and used
  2613.        for bond/electron counting. There is no default value. 
  2614.          The emptyString attribute can be used to indicate a bond of 
  2615.          unknown or unspecified type. The interpretation of this is outside
  2616.          the scope of CML-based algorithms. It may be accompanied by a <tt>convention</tt>
  2617.          attribute on the <tt>bond</tt> which links to a dictionary.
  2618.          Example: <tt><bond convention="ccdc:9" atomRefs2="a1 a2"/></tt> could
  2619.          represent a delocalised bond in the CCDC convention.</p>
  2620.           </div>
  2621.          </xsd:documentation>
  2622.       </xsd:annotation>
  2623.       <xsd:restriction base="xsd:string">
  2624.         <xsd:enumeration value="S">
  2625.            <xsd:annotation>
  2626.              <xsd:documentation>
  2627.                <div class="summary">Single bond</div>
  2628.              </xsd:documentation>
  2629.            </xsd:annotation>
  2630.         </xsd:enumeration>
  2631.         <xsd:enumeration value="1">
  2632.            <xsd:annotation>
  2633.              <xsd:documentation>
  2634.                <div class="summary">Single bond</div>
  2635.              </xsd:documentation>
  2636.            </xsd:annotation>
  2637.         </xsd:enumeration>
  2638.         <xsd:enumeration value="D">
  2639.            <xsd:annotation>
  2640.              <xsd:documentation>
  2641.                <div class="summary">Double bond</div>
  2642.              </xsd:documentation>
  2643.            </xsd:annotation>
  2644.         </xsd:enumeration>
  2645.         <xsd:enumeration value="2">
  2646.            <xsd:annotation>
  2647.              <xsd:documentation>
  2648.                <div class="summary">Double bond</div>
  2649.              </xsd:documentation>
  2650.            </xsd:annotation>
  2651.         </xsd:enumeration>
  2652.         <xsd:enumeration value="T">
  2653.            <xsd:annotation>
  2654.              <xsd:documentation>
  2655.                <div class="summary">Triple bond</div>
  2656.              </xsd:documentation>
  2657.            </xsd:annotation>
  2658.         </xsd:enumeration>
  2659.         <xsd:enumeration value="3">
  2660.            <xsd:annotation>
  2661.              <xsd:documentation>
  2662.                <div class="summary">Triple bond</div>
  2663.              </xsd:documentation>
  2664.            </xsd:annotation>
  2665.         </xsd:enumeration>
  2666.         <xsd:enumeration value="A">
  2667.            <xsd:annotation>
  2668.              <xsd:documentation>
  2669.                <div class="summary">Aromatic bond</div>
  2670.              </xsd:documentation>
  2671.            </xsd:annotation>
  2672.         </xsd:enumeration>
  2673.       </xsd:restriction>
  2674.    </xsd:simpleType>
  2675.  
  2676.    
  2677.    <xsd:simpleType name="stateType" id="st.stateType">  
  2678.       <xsd:annotation>
  2679.          <xsd:documentation>
  2680.            <div class="summary">State of a substance or property</div>
  2681.            <div class="description">
  2682.             <p>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</p> 
  2683.            </div>
  2684.            <div class="example">
  2685.            </div>
  2686.          </xsd:documentation>
  2687.       </xsd:annotation>
  2688.       <xsd:restriction base="xsd:string">
  2689.         <xsd:enumeration value="aqueous">
  2690.           <xsd:annotation>
  2691.             <xsd:documentation>
  2692.             An aqueous solution
  2693.             </xsd:documentation>
  2694.           </xsd:annotation>
  2695.         </xsd:enumeration>
  2696.         <xsd:enumeration value="gas">
  2697.           <xsd:annotation>
  2698.             <xsd:documentation>
  2699.               Gas or vapor. The default state for computation on isolated molecules
  2700.             </xsd:documentation>
  2701.           </xsd:annotation>
  2702.         </xsd:enumeration>
  2703.         <xsd:enumeration value="glass">
  2704.           <xsd:annotation>
  2705.             <xsd:documentation>
  2706.             A glassy state
  2707.             </xsd:documentation>
  2708.           </xsd:annotation>
  2709.         </xsd:enumeration>
  2710.         <xsd:enumeration value="liquid">
  2711.           <xsd:annotation>
  2712.             <xsd:documentation>
  2713.             Normally pure liquid (use solution where appropriate)
  2714.             </xsd:documentation>
  2715.           </xsd:annotation>
  2716.         </xsd:enumeration>
  2717.         <xsd:enumeration value="nematic">
  2718.           <xsd:annotation>
  2719.             <xsd:documentation>
  2720.            The nematic phase
  2721.             </xsd:documentation>
  2722.           </xsd:annotation>
  2723.         </xsd:enumeration>
  2724.         <xsd:enumeration value="smectic">
  2725.           <xsd:annotation>
  2726.             <xsd:documentation>
  2727.            The smectic phase
  2728.             </xsd:documentation>
  2729.           </xsd:annotation>
  2730.         </xsd:enumeration>
  2731.         <xsd:enumeration value="solid">
  2732.           <xsd:annotation>
  2733.             <xsd:documentation>
  2734.             A solid
  2735.             </xsd:documentation>
  2736.           </xsd:annotation>
  2737.         </xsd:enumeration>
  2738.         <xsd:enumeration value="solidSolution">
  2739.           <xsd:annotation>
  2740.             <xsd:documentation>
  2741.             A solid solution
  2742.             </xsd:documentation>
  2743.           </xsd:annotation>
  2744.         </xsd:enumeration>
  2745.         <xsd:enumeration value="solution">
  2746.           <xsd:annotation>
  2747.             <xsd:documentation>
  2748.             A (liquid) solution
  2749.             </xsd:documentation>
  2750.           </xsd:annotation>
  2751.         </xsd:enumeration>
  2752.       </xsd:restriction>
  2753.    </xsd:simpleType>
  2754.  
  2755.    <xsd:simpleType name="stereoType" id="st.stereoType">  
  2756.    <xsd:annotation>
  2757.       <xsd:documentation>
  2758.          <div class="summary">(Bond) stereochemistry (as a string)</div>
  2759.          <div class="description">
  2760.          <p>. This is purely conventional;
  2761.                . There is no default value. 
  2762.       The emptyString attribute can be used to indicate a bond of 
  2763.       unknown or unspecified type. The interpretation of this is outside
  2764.       the scope of CML-based algorithms. It may be accompanied by a <tt>convention</tt>
  2765.       attribute  which links to a dictionary
  2766.          </p> </div>
  2767.          <div class="example">
  2768.          <pre><cml title="bondArray example">
  2769.   <bondArray>
  2770.     <bond id="b1" atomRefs2="a3 a8" order="D">
  2771.       <electron bondRef="b1"/>
  2772.       <bondStereo>C</bondStereo>
  2773.     </bond>
  2774.     <bond id="b2" atomRefs2="a3 a8" order="S">
  2775.       <bondStereo convention="MDL" conventionValue="6"/>
  2776.     </bond>
  2777.   </bondArray>
  2778. </cml>
  2779. </pre>
  2780.          </div>
  2781.       </xsd:documentation>
  2782.    </xsd:annotation>
  2783.    <xsd:restriction base="xsd:string">
  2784.                <xsd:enumeration value="C">
  2785.    <xsd:annotation>
  2786.       <xsd:documentation>
  2787.          <div class="summary">A cis bond</div>
  2788.       </xsd:documentation>
  2789.    </xsd:annotation>
  2790.                 </xsd:enumeration>
  2791.                <xsd:enumeration value="T">
  2792.    <xsd:annotation>
  2793.       <xsd:documentation>
  2794.         <div class="summary">A trans bond</div>
  2795.       </xsd:documentation>
  2796.    </xsd:annotation>
  2797.                 </xsd:enumeration>
  2798.                <xsd:enumeration value="W">
  2799.    <xsd:annotation>
  2800.       <xsd:documentation>
  2801.          <div class="summary">A wedge bond</div>
  2802.       </xsd:documentation>
  2803.    </xsd:annotation>
  2804.                 </xsd:enumeration>
  2805.                <xsd:enumeration value="H">
  2806.    <xsd:annotation>
  2807.       <xsd:documentation>
  2808.         <div class="summary">A hatch bond</div>
  2809.       </xsd:documentation>
  2810.    </xsd:annotation>
  2811.                 </xsd:enumeration>
  2812.                <xsd:enumeration value="">
  2813.    <xsd:annotation>
  2814.       <xsd:documentation>
  2815.         <div class="summary">empty or missing</div>
  2816.       </xsd:documentation>
  2817.    </xsd:annotation>
  2818.                 </xsd:enumeration>
  2819.    </xsd:restriction>
  2820. </xsd:simpleType>
  2821.  
  2822.    <xsd:simpleType name="torsionAngleType" id="st.torsionAngleType">  
  2823.    <xsd:annotation>
  2824.       <xsd:documentation>
  2825.         <div class="summary">The type of a torsion angle</div>
  2826.       </xsd:documentation>
  2827.    </xsd:annotation>
  2828.    <xsd:restriction base="xsd:float">
  2829.       <xsd:minInclusive value="-360.0"/>
  2830.       <xsd:maxInclusive value="360.0"/>
  2831.    </xsd:restriction>
  2832. </xsd:simpleType>
  2833.  
  2834.  
  2835.  
  2836.  
  2837.    <!-- cml attribute groups -->
  2838.    <!-- CML attribute Groups -->
  2839.    <xsd:attributeGroup id="attGp.atomRef" name="atomRef">
  2840.   <xsd:attribute id="att.atomRef" name="atomRef" type="atomRefType">
  2841.     <xsd:annotation>
  2842.       <xsd:documentation>
  2843.         <div class="summary">A reference to an atom.</div> 
  2844.         <div class="description">Typical use would be a bond with only one atom 
  2845.     (e.g. the other end is to a bond or electrons)</div> 
  2846.       </xsd:documentation>
  2847.     </xsd:annotation>
  2848.   </xsd:attribute>
  2849. </xsd:attributeGroup>
  2850.    
  2851.  
  2852.    <xsd:attributeGroup id="attGp.atomRefArray" name="atomRefArray">
  2853.   <xsd:attribute id="att.atomRefArray" name="atomRefArray" type="atomRefArrayType">
  2854.     <xsd:annotation>
  2855.       <xsd:documentation>
  2856.         <div class="summary">An array of references to atoms.</div> 
  2857.         <div class="description">Typical use would be to atoms defining a plane</div> 
  2858.       </xsd:documentation>
  2859.     </xsd:annotation>
  2860.   </xsd:attribute>
  2861. </xsd:attributeGroup>
  2862.    
  2863.  
  2864.    <xsd:attributeGroup id="attGp.atomRefs2" name="atomRefs2">
  2865.   <xsd:attribute id="att.atomRefs2" name="atomRefs2" type="atomRefs2Type">
  2866.     <xsd:annotation>
  2867.       <xsd:documentation>
  2868.         <div class="summary">A list of two references to atoms.</div> 
  2869.         <div class="description">Typically used for defining bonds</div> 
  2870.       </xsd:documentation>
  2871.     </xsd:annotation>
  2872.   </xsd:attribute>
  2873. </xsd:attributeGroup>
  2874.    
  2875.  
  2876.    <xsd:attributeGroup id="attGp.atomRefs3" name="atomRefs3">
  2877.   <xsd:attribute id="att.atomRefs3" name="atomRefs3" type="atomRefs3Type">
  2878.     <xsd:annotation>
  2879.       <xsd:documentation>
  2880.         <div class="summary">A list of three references to atoms.</div> 
  2881.         <div class="description">Typically used for defining angles, 
  2882.         but could also be used to define a three-centre bond.</div> 
  2883.       </xsd:documentation>
  2884.     </xsd:annotation>
  2885.   </xsd:attribute>
  2886. </xsd:attributeGroup>
  2887.    
  2888.  
  2889.    <xsd:attributeGroup id="attGroup.atomRefs4" name="atomRefs4">
  2890.   <xsd:attribute id="att.atomRefs4" name="atomRefs4" type="atomRefs4Type">
  2891.     <xsd:annotation>
  2892.       <xsd:documentation>
  2893.         <div class="summary">A list of 4 references to atoms.</div> 
  2894.         <div class="description">Typically used for defining torsions and atomParities, 
  2895.         but could also be used to define a four-centre bond.</div> 
  2896.       </xsd:documentation>
  2897.     </xsd:annotation>
  2898.   </xsd:attribute>
  2899. </xsd:attributeGroup>
  2900.    
  2901.  
  2902.    <xsd:attributeGroup id="attGp.angleUnits" name="angleUnits">
  2903.   <xsd:attribute id="att.angleUnits" name="units" type="angleUnitsType">
  2904.     <xsd:annotation>
  2905.       <xsd:documentation>
  2906.         <div class="summary">Restricts units to radians or degrees</div> 
  2907.         <div class="description"/> 
  2908.       </xsd:documentation>
  2909.     </xsd:annotation>
  2910.   </xsd:attribute>
  2911. </xsd:attributeGroup>
  2912.    
  2913.  
  2914.  
  2915.  
  2916.  
  2917.   <!-- cml elements -->
  2918.       <xsd:element name="amount" id="el.amount">  
  2919.   <xsd:annotation>
  2920.     <xsd:documentation>
  2921.       <div class="summary">The amount of a <a href="el.substance">substance</a></div>
  2922.       <div class="description">
  2923.         <p>
  2924.         The <tt>units</tt> attribute is mandatory and can be customised to support
  2925.         mass, volumes, moles, percentages, or rations (e.g. ppm). </p>
  2926.       </div>
  2927.       <div class="example">
  2928.         <pre><cml title="substanceList example">
  2929.   <substanceList id="s1">
  2930.     <amount units="units:ml">100</amount>
  2931.     <substance id="s1">
  2932.       <amount units="units:l">1</amount>
  2933.       <molecule id="h2o" ref="mols:water"/>
  2934.     </substance>
  2935.     <substance id="s2">
  2936.       <amount units="units:mole">0.1</amount>
  2937.       <molecule id="nacl" formula="Na 1 O 1 H 1"/>
  2938.     </substance>
  2939.   </substanceList>
  2940. </cml>
  2941.  
  2942. </pre>
  2943.       </div>
  2944.     </xsd:documentation>
  2945.   </xsd:annotation>
  2946.   <xsd:complexType>
  2947.     <xsd:simpleContent>
  2948.       <xsd:extension base="xsd:float">
  2949.         <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  2950.         <xsd:attributeGroup ref="units" id="att.amount.units"/>
  2951.       </xsd:extension>
  2952.     </xsd:simpleContent>
  2953.   </xsd:complexType>
  2954. </xsd:element>
  2955.  
  2956.    <xsd:element name="angle" id="el.angle">  
  2957.   <xsd:annotation>
  2958.     <xsd:documentation>
  2959.       <div class="summary">A "bond" angle between three atoms</div>
  2960.       <div class="description">
  2961.         <p>It can be used for:</p>
  2962.         <ul>
  2963.            <li>Recording experimentally determined bond angles (e.g. in
  2964.         a crystallographic paper).</li>
  2965.            <li>Providing the angle component for internal coordinates (e.g.
  2966.         z-matrix).</li>
  2967.         </ul>
  2968.       </div>
  2969.       <div class="example"><pre><molecule id="m1" title="angle example">
  2970.   <atomArray>
  2971.     <atom id="a1"/>
  2972.     <atom id="a2"/>
  2973.     <atom id="a3"/>
  2974.   </atomArray>
  2975.   <angle units="degrees" atomRefs3="a1 a2 a3">123.4</angle>
  2976. </molecule>
  2977. </pre></div>
  2978.     </xsd:documentation>
  2979.   </xsd:annotation>
  2980.   <xsd:complexType>
  2981.     <xsd:simpleContent>
  2982.       <xsd:extension base="nonNegativeAngleType">
  2983.         <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  2984.         <xsd:attributeGroup ref="atomRefs3"/>
  2985.         <xsd:attributeGroup ref="angleUnits"/>
  2986.         <xsd:attributeGroup ref="errorValue"/>
  2987.         <xsd:attributeGroup ref="errorBasis"/>
  2988.         <xsd:attributeGroup ref="min"/>
  2989.         <xsd:attributeGroup ref="max"/>
  2990.         <xsd:attributeGroup ref="ref"/>
  2991.       </xsd:extension>
  2992.     </xsd:simpleContent>
  2993.   </xsd:complexType>
  2994. </xsd:element>
  2995.  
  2996.       <xsd:element name="atom" id="el.atom">  
  2997.       <xsd:annotation>
  2998.          <xsd:documentation>
  2999.           <div class="summary">An atom</div>
  3000.            <div documentation="general">
  3001.             <p>
  3002.                Usually within a <tt>molecule</tt>.
  3003.         It is almost always contained within <tt>atomArray</tt>.
  3004.         </p>
  3005.          </div>
  3006.           <div class="example"><pre><cml title="single atom example">
  3007. <atom id="a1" title="O3'" elementType="O" 
  3008.   formalCharge="1" hydrogenCount="1"
  3009.   isotope="17" occupancy="0.7" 
  3010.   x2="1.2" y2="2.3" 
  3011.   x3="3.4" y3="4.5" z3="5.6"
  3012.   convention="ABC" dictRef="chem:atom"
  3013. >
  3014.   <scalar title="dipole" dictRef="d:dip" 
  3015.     units="units:debye">0.2</scalar>
  3016.   <atomParity atomRefs4="a3 a7 a2 a4">1</atomParity>
  3017.   <electron id="e1" atomRef="a1" count="2"/>
  3018. </atom>
  3019. </cml>
  3020. </pre></div>
  3021.          </xsd:documentation>
  3022.          <xsd:appinfo>
  3023.          </xsd:appinfo>
  3024.       </xsd:annotation>
  3025.       <xsd:complexType>
  3026.  
  3027.      <xsd:choice>
  3028.          <xsd:choice minOccurs="0" maxOccurs="unbounded">
  3029.             <xsd:element ref="name"/>
  3030.             <xsd:element ref="array"/>
  3031.             <xsd:element ref="matrix"/>
  3032.             <xsd:element ref="scalar"/>
  3033.             <xsd:element ref="atomParity"/>
  3034.             <xsd:element ref="electron">
  3035.                <xsd:annotation>
  3036.                   <xsd:documentation>
  3037.                      <div class="general"><p>
  3038.                      One or more electrons associated with the atom. The <a href="st.atomRefType">atomRef</a> on the <tt>electron</tt> should
  3039.                      point to the id on the atom. We may relax this later and allow
  3040.                      reference by context.</p>
  3041.                     </div>
  3042.                   </xsd:documentation>
  3043.                </xsd:annotation>
  3044.             </xsd:element>        
  3045.          </xsd:choice>
  3046. <!-- CML-1 (deprecated) -->
  3047.          <xsd:choice minOccurs="0" maxOccurs="unbounded">
  3048.        <xsd:element ref="float" minOccurs="0" maxOccurs="unbounded"/>
  3049.        <xsd:element ref="integer" minOccurs="0" maxOccurs="unbounded"/>
  3050.        <xsd:element ref="string" minOccurs="0" maxOccurs="unbounded"/>
  3051.      </xsd:choice>
  3052.      </xsd:choice>
  3053.     
  3054.          <xsd:attributeGroup ref="id"/>
  3055. <!-- do not understand this; error in Xerces -->
  3056.          <xsd:attribute id="el.atom.count" name="count" type="countType">
  3057. <!--         <xsd:attribute id="el.atom.count" name="count" type="xsd:float" default="1">-->
  3058.             <xsd:annotation>
  3059.                <xsd:documentation>
  3060.                   <div class="summary">The occurrence count of the atom. 
  3061.                </div>
  3062.                   <div class="description">Most useful in <tt>formula</tt>
  3063.                   but possibly useful in <tt>atomArray</tt> where coordinates and
  3064.                   connectivity is not defined. No formal default, but assumed to be 1. 
  3065.                </div>
  3066.               </xsd:documentation>
  3067.             </xsd:annotation>
  3068.          </xsd:attribute>
  3069.          <xsd:attribute id="el.atom.elementType" name="elementType" type="elementTypeType">
  3070.             <xsd:annotation>
  3071.                <xsd:documentation>
  3072.                <div class="general"><p>The elementType. Almost mandatory</p> 
  3073.                </div>
  3074.               </xsd:documentation>
  3075.             </xsd:annotation>
  3076.          </xsd:attribute>
  3077.          <xsd:attribute id="el.atom.formalCharge" name="formalCharge" type="formalChargeType">
  3078.             <xsd:annotation>
  3079.                <xsd:documentation>
  3080.                  <div class="summary">The formalCharge on the atom</div>
  3081.                <div class="description">NOT the calculated charge or oxidation state. No formal default, but its absence implies 0. It may be good practice to include it explicitly.
  3082.                </div>
  3083.               </xsd:documentation>
  3084.             </xsd:annotation>
  3085.          </xsd:attribute>
  3086.          <xsd:attribute id="el.atom.hydrogenCount" name="hydrogenCount" type="hydrogenCountType">
  3087.             <xsd:annotation>
  3088.                <xsd:documentation>
  3089.                <div class="general"><p>The explicit hydrogen count</p> 
  3090.                </div>
  3091.               </xsd:documentation>
  3092.             </xsd:annotation>
  3093.          </xsd:attribute>
  3094.          <xsd:attribute id="el.atom.nonHydrogenCount" name="nonHydrogenCount" type="nonHydrogenCountType">
  3095.             <xsd:annotation>
  3096.                <xsd:documentation>
  3097.                <div class="general"><p>The non-hydrogen count (obsolete - moved to CML Query)</p> 
  3098.                </div>
  3099.               </xsd:documentation>
  3100.             </xsd:annotation>
  3101.          </xsd:attribute>
  3102.          <xsd:attribute id="el.atom.isotope" name="isotope" type="isotopeType">
  3103.             <xsd:annotation>
  3104.                <xsd:documentation>
  3105.                 <div class="general"><p>The isotopic mass. Default implies "natural abundance"</p> 
  3106.                </div>
  3107.               </xsd:documentation>
  3108.             </xsd:annotation>
  3109.          </xsd:attribute>
  3110.          <xsd:attribute id="el.atom.occupancy" name="occupancy" type="occupancyType">
  3111.             <xsd:annotation>
  3112.                <xsd:documentation>
  3113.                 <div class="general"><p>The occupancy (mainly from crystallography)</p> 
  3114.                </div>
  3115.               </xsd:documentation>
  3116.             </xsd:annotation>
  3117.          </xsd:attribute>
  3118.          <xsd:attribute id="el.atom.x2" name="x2" type="xsd:float">
  3119.             <xsd:annotation>
  3120.                <xsd:documentation>
  3121.               <div class="general"><p>The x coordinate of a 2-D representation (unrelated to 3-D structure).
  3122.              Note that x- and y- 2D coordinates are required for graphical stereochemistry
  3123.              such as wedge/hatch. x- and y- coordinates must be both present or both absent.</p> 
  3124.                </div>
  3125.               </xsd:documentation>
  3126.             </xsd:annotation>
  3127.          </xsd:attribute>
  3128.          <xsd:attribute id="el.atom.x3" name="x3" type="xsd:float">
  3129.             <xsd:annotation>
  3130.                <xsd:documentation>
  3131.               <div class="general"><p>The x coordinate of a 3-D cartesian representation.
  3132.               x3 y3 and z3 coordinates must be both present or both absent.</p> 
  3133.                </div>
  3134.               </xsd:documentation>
  3135.             </xsd:annotation>
  3136.          </xsd:attribute>
  3137.          <xsd:attribute id="el.atom.xFract" name="xFract" type="xsd:float">
  3138.             <xsd:annotation>
  3139.                <xsd:documentation>
  3140.               <div class="general"><p>The fractional x coordinate in a crystal structure.
  3141.               xFract, yFract and zFract coordinates must be all present or all absent.
  3142.               A <tt>crystal</tt> element is required</p> 
  3143.                </div>
  3144.               </xsd:documentation>
  3145.             </xsd:annotation>
  3146.          </xsd:attribute>
  3147.          <xsd:attribute id="el.atom.xy2" name="xy2" type="coordinate2Type">
  3148.             <xsd:annotation>
  3149.                <xsd:documentation>
  3150.                <div class="general"><p>The combined x and y coordinates of a 2-D representation (unrelated to 3-D structure).
  3151.              Note that x- and y- 2D coordinates are required for graphical stereochemistry
  3152.              such as wedge/hatch.</p> 
  3153.                </div>
  3154.               </xsd:documentation>
  3155.             </xsd:annotation>
  3156.          </xsd:attribute>
  3157.          <xsd:attribute id="el.atom.xyz3" name="xyz3" type="coordinate3Type">
  3158.             <xsd:annotation>
  3159.                <xsd:documentation>
  3160.                <div class="general"><p>The combined x, y, z coordinates of a 3-D cartesian representation.</p> 
  3161.                </div>
  3162.               </xsd:documentation>
  3163.             </xsd:annotation>
  3164.          </xsd:attribute>
  3165.          <xsd:attribute id="el.atom.xyzFract" name="xyzFract" type="coordinate3Type">
  3166.             <xsd:annotation>
  3167.                <xsd:documentation>
  3168.               <div class="general"><p>The combined x, y, z fractional coordinates in a crystal structure.
  3169.               A <tt>crystal</tt> element is required</p> 
  3170.                </div>
  3171.               </xsd:documentation>
  3172.             </xsd:annotation>
  3173.          </xsd:attribute>
  3174.          <xsd:attribute id="el.atom.y2" name="y2" type="xsd:float">
  3175.             <xsd:annotation>
  3176.                <xsd:documentation>
  3177.               <div class="general"><p>The y coordinate of a 2-D representation (unrelated to 3-D structure).
  3178.              Note that x2 and y2 coordinates are required for graphical stereochemistry
  3179.              such as wedge/hatch. x2 and y2 coordinates must be both present or both absent.</p> 
  3180.                </div>
  3181.               </xsd:documentation>
  3182.             </xsd:annotation>
  3183.          </xsd:attribute>
  3184.          <xsd:attribute id="el.atom.y3" name="y3" type="xsd:float">
  3185.             <xsd:annotation>
  3186.                <xsd:documentation>
  3187.               <div class="general"><p>The y coordinate of a 3-D cartesian representation.
  3188.               x3 y3 and z3 coordinates must be both present or both absent.</p> 
  3189.                </div>
  3190.               </xsd:documentation>
  3191.             </xsd:annotation>
  3192.          </xsd:attribute>
  3193.          <xsd:attribute id="el.atom.yFract" name="yFract" type="xsd:float">
  3194.             <xsd:annotation>
  3195.                <xsd:documentation>
  3196.               <div class="general"><p>The fractional x coordinate in a crystal structure.
  3197.               xFract, yFract and zFract coordinates must be all present or all absent.
  3198.               A <tt>crystal</tt> element is required</p> 
  3199.                </div>
  3200.               </xsd:documentation>
  3201.             </xsd:annotation>
  3202.          </xsd:attribute>
  3203.          <xsd:attribute id="el.atom.z3" name="z3" type="xsd:float">
  3204.             <xsd:annotation>
  3205.                <xsd:documentation>
  3206.               <div class="general"><p>The z coordinate of a 3-D cartesian representation.
  3207.               x3 y3 and z3 coordinates must be both present or both absent.</p> 
  3208.                </div>
  3209.               </xsd:documentation>
  3210.             </xsd:annotation>
  3211.          </xsd:attribute>
  3212.          <xsd:attribute id="el.atom.zFract" name="zFract" type="xsd:float">
  3213.             <xsd:annotation>
  3214.                <xsd:documentation>
  3215.              <div class="general"><p>The fractional x coordinate in a crystal structure.
  3216.               xFract, yFract and zFract coordinates must be all present or all absent.
  3217.               A <tt>crystal</tt> element is required</p> 
  3218.                </div>
  3219.               </xsd:documentation>
  3220.             </xsd:annotation>
  3221.          </xsd:attribute>
  3222.          <xsd:attributeGroup ref="title"/> 
  3223.          <xsd:attributeGroup ref="convention"/>  
  3224.          <xsd:attributeGroup ref="dictRef"/> 
  3225.          <xsd:attributeGroup ref="ref"/> 
  3226.          <xsd:attribute name="role">
  3227.            <xsd:annotation>
  3228.               <xsd:documentation>
  3229.             <div class="general"><p>This can be used to describe the purpose of atoms whose <tt>elementType</tt>s are <tt>dummy</tt> or <tt>locant</tt>. </p> 
  3230.                </div>
  3231.               </xsd:documentation>
  3232.             </xsd:annotation>
  3233.          </xsd:attribute>
  3234.          
  3235. <!-- attribute extensions to core CML -->
  3236. <!-- atom.atts.extensions -->
  3237. <!-- this is reserved for extending core CML through attributes to atoms -->
  3238.          
  3239.  
  3240.       </xsd:complexType>
  3241.    </xsd:element>
  3242.  
  3243.       <xsd:element name="atomArray" id="el.atomArray">  
  3244.       <xsd:annotation>
  3245.          <xsd:documentation>
  3246.           <div class="summary">A container for a list of atoms</div>
  3247.           <div class="description">A child of <a href="el.molecule">molecule</a> and contains
  3248.         <tt>atom</tt> information. There are two strategies:
  3249.         <ul>
  3250.                   <li>Create individual <a href="el.atom">atom</a> elements under 
  3251.                   <a href="el.atomArray">atomArray</a>
  3252.         (in any order). This gives the greatest flexibility but is the most verbose.</li>
  3253.                   <li>Create <tt>*Array</tt> attributes (e.g. of 
  3254.                   <a href="st.elementTypeArrayType">elementTypeArrayType</a> under 
  3255.         <a href="el.atomArray">atomArray</a>. This requires all arrays to be of identical lengths
  3256.         with explicit values for all atoms in every array. 
  3257.         This is NOT suitable for complexType
  3258.         atom children such as <a href="el.atomParity">atomParity</a>
  3259.         or composite types such as <tt>xy2</tt>.
  3260.         It also cannot be checked as easily by schema- and schematron validation. The
  3261.         <tt>atomIDArray</tt> attribute is mandatory. It is allowed (though not yet recommended) to
  3262.         add <tt>*Array</tt> children such as <a href="el.floatArray">floatArray</a>
  3263.                   </li>
  3264.                </ul>
  3265.                <p>The attributes are directly related to the scalar attributes under
  3266.         <a href="el.atom">atom</a> which should be consulted for more info.</p>
  3267.     <p>NOTE: The CML-1 specifications are also supported but are deprecated</p>
  3268.     </div>
  3269.     <div class="example">
  3270.       <p>Example - these are exactly equivalent representations</p>
  3271.        <pre>
  3272. <cml title="atomArray CML1">
  3273. <list>
  3274.   <atomArray>
  3275.     <atom id="a1" elementType="O" hydrogenCount="1"/>
  3276.      <atom id="a2" elementType="N" hydrogenCount="1"/>
  3277.     <atom id="a3" elementType="C" hydrogenCount="3"/>
  3278.   </atomArray>
  3279. <!-- is equivalent to -->
  3280.   <atomArray
  3281.     atomID="a1 a2 a3"
  3282.     elementType="O N C"
  3283.     hydrogenCount="1 1 3"/>
  3284. </list>
  3285. </cml>
  3286.  
  3287.        </pre>
  3288.     </div>
  3289.     </xsd:documentation>
  3290.       </xsd:annotation>
  3291.       <xsd:complexType>
  3292.          <xsd:choice>
  3293.             <xsd:element ref="atom" maxOccurs="unbounded"/>
  3294.             <xsd:element ref="array" minOccurs="0" maxOccurs="unbounded"/>
  3295. <!-- CML-1 (deprecated) -->
  3296.         <xsd:choice minOccurs="0" maxOccurs="unbounded">
  3297.           <xsd:element ref="floatArray" minOccurs="0" maxOccurs="unbounded"/>
  3298.           <xsd:element ref="integerArray" minOccurs="0" maxOccurs="unbounded"/>
  3299.           <xsd:element ref="stringArray" minOccurs="0" maxOccurs="unbounded"/>
  3300.         </xsd:choice>
  3301.          </xsd:choice>
  3302.  
  3303.          <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3304.          <xsd:attribute name="elementType" type="elementTypeArrayType">
  3305.             <xsd:annotation>
  3306.                <xsd:documentation>
  3307.                    <div class="summary">Almost mandatory. see <a href="el.atom.elementType">elementType</a></div>
  3308.               </xsd:documentation>
  3309.             </xsd:annotation>
  3310.          </xsd:attribute>
  3311.          <xsd:attribute name="count" type="integerArrayType">
  3312.             <xsd:annotation>
  3313.                <xsd:documentation>
  3314.                    <div class="summary">See <a href="el.atom.count">count</a></div>
  3315.               </xsd:documentation>
  3316.             </xsd:annotation>
  3317.          </xsd:attribute>
  3318.          <xsd:attribute name="formalCharge" type="integerArrayType">
  3319.             <xsd:annotation>
  3320.                <xsd:documentation>
  3321.                    <div class="summary">See <a href="el.atom.formalCharge">formalCharge</a></div>
  3322.               </xsd:documentation>
  3323.             </xsd:annotation>
  3324.          </xsd:attribute>
  3325.          <xsd:attribute name="hydrogenCount" type="integerArrayType">
  3326.             <xsd:annotation>
  3327.                <xsd:documentation>
  3328.                   <div class="summary">See <a href="el.atom.hydrogenCount">hydrogenCount</a></div>
  3329.               </xsd:documentation>
  3330.             </xsd:annotation>
  3331.          </xsd:attribute>
  3332.          <xsd:attribute name="nonHydrogenCount" type="integerArrayType">
  3333.             <xsd:annotation>
  3334.                <xsd:documentation>
  3335.                  <div class="summary">See <a href="el.atom.nonHydrogenCount">nonHydrogenCount</a></div>
  3336.               </xsd:documentation>
  3337.             </xsd:annotation>
  3338.          </xsd:attribute>
  3339.          <xsd:attribute name="isotope" type="floatArrayType">
  3340.             <xsd:annotation>
  3341.                <xsd:documentation>
  3342.                    <div class="summary">See <a href="el.atom.isotope">isotope</a></div>
  3343.               </xsd:documentation>
  3344.             </xsd:annotation>
  3345.          </xsd:attribute>
  3346.          <xsd:attribute name="occupancy" type="floatArrayType">
  3347.             <xsd:annotation>
  3348.                <xsd:documentation>
  3349.                    <div class="summary">See <a href="el.atom.occupancy">occupancy</a></div>
  3350.               </xsd:documentation>
  3351.             </xsd:annotation>
  3352.          </xsd:attribute>
  3353.          <xsd:attribute name="x2" type="coordinateComponentArrayType">
  3354.             <xsd:annotation>
  3355.                <xsd:documentation>
  3356.                   <div class="summary">See <a href="el.atom.x2">x2</a></div>
  3357.               </xsd:documentation>
  3358.             </xsd:annotation>
  3359.          </xsd:attribute>
  3360.          <xsd:attribute name="x3" type="coordinateComponentArrayType">
  3361.             <xsd:annotation>
  3362.                <xsd:documentation>
  3363.                   <div class="summary">See <a href="el.atom.x3">x3</a></div>
  3364.               </xsd:documentation>
  3365.             </xsd:annotation>
  3366.          </xsd:attribute>
  3367.          <xsd:attribute name="xFract" type="coordinateComponentArrayType">
  3368.             <xsd:annotation>
  3369.                <xsd:documentation>
  3370.                   <div class="summary">See <a href="el.atom.xFract">xFract</a></div>
  3371.               </xsd:documentation>
  3372.             </xsd:annotation>
  3373.          </xsd:attribute>
  3374.          <xsd:attribute name="y2" type="coordinateComponentArrayType">
  3375.             <xsd:annotation>
  3376.                <xsd:documentation>
  3377.                   <div class="summary">See <a href="el.atom.y2">y2</a></div>
  3378.               </xsd:documentation>
  3379.             </xsd:annotation>
  3380.          </xsd:attribute>
  3381.          <xsd:attribute name="y3" type="coordinateComponentArrayType">
  3382.             <xsd:annotation>
  3383.                <xsd:documentation>
  3384.                       <div class="summary">See <a href="el.atom.y3">y3</a></div>
  3385.              </xsd:documentation>
  3386.             </xsd:annotation>
  3387.          </xsd:attribute>
  3388.          <xsd:attribute name="yFract" type="coordinateComponentArrayType">
  3389.             <xsd:annotation>
  3390.                <xsd:documentation>
  3391.                   <div class="summary">See <a href="el.atom.yFract">yFract</a></div>
  3392.               </xsd:documentation>
  3393.             </xsd:annotation>
  3394.          </xsd:attribute>
  3395.          <xsd:attribute name="z3" type="coordinateComponentArrayType">
  3396.             <xsd:annotation>
  3397.                <xsd:documentation>
  3398.                     <div class="summary">See <a href="el.atom.z3">z3</a></div>
  3399.              </xsd:documentation>
  3400.             </xsd:annotation>
  3401.          </xsd:attribute>
  3402.          <xsd:attribute name="zFract" type="coordinateComponentArrayType">
  3403.             <xsd:annotation>
  3404.                <xsd:documentation>
  3405.                     <div class="summary">See <a href="el.atom.zFract">zFract</a></div>
  3406.               </xsd:documentation>
  3407.             </xsd:annotation>
  3408.          </xsd:attribute>
  3409.          <xsd:attribute name="atomID" type="atomRefArrayType">
  3410.             <xsd:annotation>
  3411.                <xsd:documentation>
  3412.                   <div class="summary">See <a href="el.atom.id">atomID</a></div>
  3413.               </xsd:documentation>
  3414.             </xsd:annotation>
  3415.          </xsd:attribute>
  3416.         <xsd:attributeGroup ref="ref">
  3417.             <xsd:annotation>
  3418.                <xsd:documentation>
  3419.                   <div class="summary">Available for subclassing to provide alternative collections for atoms.</div>
  3420.               </xsd:documentation>
  3421.             </xsd:annotation>
  3422.         </xsd:attributeGroup>
  3423.       </xsd:complexType>
  3424.    </xsd:element>
  3425.  
  3426.  
  3427.    <xsd:element name="atomParity" id="el.atomParity">  
  3428.   <xsd:annotation>
  3429.     <xsd:documentation>
  3430.       <div class="summary">The stereochemistry round an atom centre. </div>
  3431.       <div class="description">
  3432.             <p>It follows the
  3433.         convention of the MIF format, and uses 4 distinct atoms to define the
  3434.         chirality. These can be any atoms (though they are normally bonded to
  3435.         the current atom). There is no default order and the order is defined
  3436.         by the atoms in the atomRefs4 attribute. If there are only 3 ligands, the
  3437.         current atom should be included in the 4 atomRefs.
  3438.         </p>
  3439.             <p>The value of the parity is a signed number. (It can only be zero if
  3440.         two or more atoms are coincident or the configuration is planar). The
  3441.         sign is the sign of the chiral volume created by the four atoms (a1, a2,
  3442.         a3, a4):</p>
  3443.             <pre>
  3444.        |  1  1  1  1 |
  3445.        | x1 x2 x3 x4 |
  3446.        | y1 y2 y3 y4 |
  3447.        | z1 z2 z3 z4 |
  3448.         </pre>
  3449.             <p>Note that <tt>atomParity</tt> cannot be used with the *Array syntax for
  3450.         atoms.</p>
  3451.       </div>
  3452.       <div class="example">
  3453.        <pre>
  3454. <cml title="atom parity example">
  3455.   <atom id="a1">
  3456.     <atomParity atomRefs4="a3 a5 a2 a9">1</atomParity>
  3457.   </atom>
  3458. </cml>
  3459.  
  3460.        </pre>
  3461.       </div>
  3462.     </xsd:documentation>
  3463.   </xsd:annotation>
  3464.   <xsd:complexType>
  3465.     <xsd:simpleContent>
  3466.       <xsd:extension base="xsd:float">
  3467.         <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3468.         <xsd:attributeGroup ref="atomRefs4"/>
  3469.       </xsd:extension>
  3470.     </xsd:simpleContent>
  3471.   </xsd:complexType>
  3472. </xsd:element>
  3473.  
  3474.      <xsd:element name="bond" id="el.bond">  
  3475.       <xsd:annotation>
  3476.          <xsd:documentation>
  3477.          <div class="summary">A bond between <a href="el.atom">atom</a>s, or between atoms and bonds</div>
  3478.            <div class="general"><p>
  3479.                <tt>bond</tt> is a child of <tt>bondArray</tt> and contains
  3480.           bond information. Bond must refer to at least two atoms (using 
  3481.           <a href="st.atomRefs2Type">atomRefs2</a>) 
  3482.           but may also refer to more for multicentre bonds. Bond is often EMPTY but
  3483.           may contain <a href="el.electron">electron</a>, <a href="el.length">length</a> 
  3484.           or <a href="el.bondStereo">bondStereo</a> elements.</p></div>
  3485.       <div class="example">
  3486.        <pre>
  3487. <cml title="bondArray example">
  3488.   <bondArray>
  3489.     <bond id="b1" atomRefs2="a3 a8" order="D">
  3490.       <electron bondRef="b1"/>
  3491.       <bondStereo>C</bondStereo>
  3492.     </bond>
  3493.     <bond id="b2" atomRefs2="a3 a8" order="S">
  3494.       <bondStereo convention="MDL" conventionValue="6"/>
  3495.     </bond>
  3496.   </bondArray>
  3497. </cml>
  3498.  
  3499.        </pre>
  3500.       </div>
  3501.       <div class="example">
  3502.        <pre>
  3503. <cml title="metal-bond example">
  3504. <!-- Zeise's salt: [Cl3Pt(CH2=CH2)]- -->
  3505.   <atomArray>
  3506.     <atom id="pt1" elementType="Pt"/>
  3507.     <atom id="cl1" elementType="Cl"/>
  3508.     <atom id="cl2" elementType="Cl"/>
  3509.     <atom id="cl3" elementType="Cl"/>
  3510.     <atom id="c1" elementType="C" hydrogenCount="2"/>
  3511.     <atom id="c2" elementType="C" hydrogenCount="2"/>
  3512.   </atomArray>
  3513.   <bondArray>
  3514.     <bond id="b1" atomRefs2="c1 c2" order="D"/>
  3515.     <bond id="b2" atomRefs2="pt1 cl1" order="S"/>
  3516.     <bond id="b3" atomRefs2="pt1 cl2" order="S"/>
  3517.     <bond id="b4" atomRefs2="pt1 cl3" order="S"/>
  3518.     <bond id="b5" atomRefs="pt1" bondRefs="b1"/>
  3519.   </bondArray>
  3520. </cml>
  3521.  
  3522.        </pre>
  3523.       </div>
  3524.        </xsd:documentation>
  3525.        <xsd:documentation>
  3526.       <div class="validation">
  3527.        <pre>
  3528.  
  3529.        </pre>
  3530.       </div>
  3531.        </xsd:documentation>
  3532.         <xsd:appinfo>
  3533.           <val:comment>Validate Bonds</val:comment>
  3534.           <val:template match="bond" id="val-bond">
  3535.           <val:comment>Atom Refs for 2-atom bond</val:comment>
  3536.             <val:variable name="at1" select="substring-before(normalize-space(@atomRefs2),' ')"/>
  3537.             <val:variable name="at2" select="substring-after(normalize-space(@atomRefs2),' ')"/>
  3538.             <val:comment>Do both atoms exist in current molecule context?</val:comment>
  3539.             <val:if test="not(key('atoms', $at1))">
  3540.               <val:call-template name="error">
  3541.                 <val:with-param name="error">BOND (<val:value-of select="@id"/>): ATOMREF not found: <val:value-of select="$at1"/></val:with-param>
  3542.               </val:call-template>
  3543.             </val:if>
  3544.           </val:template>
  3545.         </xsd:appinfo>
  3546.       </xsd:annotation>
  3547.       <xsd:complexType>
  3548.         <xsd:choice>
  3549.          <xsd:choice minOccurs="0" maxOccurs="unbounded">
  3550.             <xsd:element ref="electron">
  3551.                <xsd:annotation>
  3552.                   <xsd:documentation>
  3553.                     <div class="summary">One or more electrons associated with the bond</div>
  3554.                      <div class="general"><p>. The <a href="st.bondRefType">bondRef</a> on the <tt>electron</tt> should
  3555.                      point to the id on the bond. We may relax this later and allow
  3556.                      reference by context.(We </p>
  3557.                   </div>
  3558.                  </xsd:documentation>
  3559.                </xsd:annotation>
  3560.             </xsd:element>        
  3561.             <xsd:element ref="bondStereo">
  3562.                <xsd:annotation>
  3563.                   <xsd:documentation>
  3564.                     <div class="summary">The stereo convention for the bond</div>
  3565.                      <div class="general"><p>only one convention allowed</p>
  3566.                    </div>
  3567.                  </xsd:documentation>
  3568.                </xsd:annotation>
  3569.             </xsd:element>        
  3570.             <xsd:element ref="length">
  3571.                <xsd:annotation>
  3572.                   <xsd:documentation>
  3573.                     <div class="summary">the length between the atoms</div>
  3574.                     <div class="general"><p>This is either an experimental measurement
  3575.               or used to build up internal coordinates (as in a z-matrix)  (only one allowed)</p>
  3576.               <p>We expect to move length as a child of <a href="el.molecule">molecule</a> and
  3577.               remove it from here</p>
  3578.                   </div>
  3579.                  </xsd:documentation>
  3580.                </xsd:annotation>
  3581.             </xsd:element>        
  3582.          </xsd:choice>
  3583. <!-- CML-1 (deprecated) -->
  3584.          <xsd:choice minOccurs="0" maxOccurs="unbounded">
  3585.        <xsd:element ref="float" minOccurs="0" maxOccurs="unbounded"/>
  3586.        <xsd:element ref="integer" minOccurs="0" maxOccurs="unbounded"/>
  3587.        <xsd:element ref="string" minOccurs="0" maxOccurs="unbounded"/>
  3588.      </xsd:choice>
  3589.        </xsd:choice>
  3590.      
  3591.          <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3592.          <xsd:attributeGroup ref="ref"/> 
  3593.          <xsd:attribute name="atomRefs2" type="atomRefs2Type">
  3594.             <xsd:annotation>
  3595.                <xsd:documentation>
  3596.                  <div class="summary">The two atoms in the bond</div>
  3597.                  <div class="general"><p>. This will be the normal reference attribute on the bond element. The order of atoms is preserved and may
  3598.                   matter for some conventions (e.g. wedge/hatch or donor bonds)</p>
  3599.                </div>
  3600.               </xsd:documentation>
  3601.             </xsd:annotation>
  3602.          </xsd:attribute>
  3603.          <xsd:attribute name="atomRefs" type="atomRefArrayType">
  3604.             <xsd:annotation>
  3605.                <xsd:documentation>
  3606.                  <div class="summary">The atoms in the bond</div>
  3607.                  <div class="general"><p>. This is designed for multicentre bonds (as in delocalised systems or electron-deficient centres. The semantics are experimental at this stage. As an example, a B-H-B bond might be described as
  3608.                  <tt><bond atomRefs="b1 h2 b2"/></tt></p>
  3609.                </div>
  3610.               </xsd:documentation>
  3611.             </xsd:annotation>
  3612.          </xsd:attribute>
  3613.          <xsd:attribute name="bondRefs" type="bondRefArrayType">
  3614.             <xsd:annotation>
  3615.                <xsd:documentation>
  3616.                  <div class="summary">Bonds involved in the bond</div>
  3617.                  <div class="general"><p>. This is designed for pi-bonds and other systems where formal valence bonds are not drawn to atoms. The semantics are experimental at this stage. As an example, a Pt-|| bond (as the Pt-ethene bond in Zeise's salt) might be described as
  3618.                  <tt><bond atomRefs="pt1" bondRefs="b32"/></tt></p>
  3619.                </div>
  3620.               </xsd:documentation>
  3621.             </xsd:annotation>
  3622.          </xsd:attribute>
  3623.          <xsd:attribute name="order" type="orderType">
  3624.             <xsd:annotation>
  3625.                <xsd:documentation>
  3626.                     <div class="summary">The order of the bond</div>
  3627.                  <div class="general"><p>There is NO default. This order is for
  3628.                bookkeeping only and is not related to length, QM calculations
  3629.                or other experimental or theoretical calculations.
  3630.                see <a href="st.orderType">
  3631.                         <tt>orderType</tt>
  3632.                      </a>
  3633.                   </p>
  3634.                </div>
  3635.               </xsd:documentation>
  3636.             </xsd:annotation>
  3637.          </xsd:attribute>
  3638.          
  3639. <!-- attribute extensions to core CML -->
  3640. <!-- atom.atts.extensions -->
  3641. <!-- this is reserved for extending core CML through attributes to bonds -->
  3642.          
  3643.  
  3644.          </xsd:complexType>
  3645.    </xsd:element>
  3646.  
  3647.    
  3648.    <xsd:element name="bondArray" id="el.bondArray">  
  3649.       <xsd:annotation>
  3650.          <xsd:documentation>
  3651.            <div class="summary">A container for a number of <a href="el.bond">bond</a></div>
  3652.            <div class="description">
  3653.             <p>
  3654.                <tt>bondArray</tt> is a child of <tt>molecule</tt> and contains
  3655.           <tt>bond</tt> information. There are two strategies:</p>
  3656.             <ul>
  3657.                <li>Create individual <tt>bond</tt> elements under <tt>bondArray</tt>
  3658.         (in any order). This gives the greatest flexibility but is the most verbose.</li>
  3659.                <li>Create <tt>*Array</tt> attributes (e.g. of <tt>orderArrayType</tt> under 
  3660.         <tt>bondArray</tt>. This requires all arrays to be of identical lengths
  3661.         with explicit values for all bonds in every array. 
  3662.         This is NOT suitable for complexType
  3663.         bond children such as <a href="el.bondStereo">
  3664.                      <tt>bondStereo</tt>
  3665.                   </a>,
  3666.         nor can IDs be added to bonds..
  3667.         It also cannot be checked as easily by schema- and schematron validation. The
  3668.         <tt>atomRef1Array</tt> and <tt>atomRef2Array</tt> attributes are then
  3669.         mandatory. It is allowed (though not yet recommended) to
  3670.         add <tt>*Array</tt> children such as <tt>floatArray</tt>
  3671.                </li>
  3672.             </ul>
  3673.             <p>The attributes are directly related to the scalar attributes under
  3674.         <a href="el.atom">
  3675.                   <tt>atom</tt>
  3676.                </a> which should be consulted for more info.</p>
  3677.                </div>
  3678.            <div class="example">
  3679.             <p>Example - these are exactly equivalent representations</p>
  3680.             <pre>
  3681. <cml title="bondArray example 1">
  3682.   <list>
  3683.     <bondArray>
  3684.       <bond id="b1" atomRefs2="a1 a2" 
  3685.         order="1"/>
  3686.       <bond id="b2" atomRefs2="a1 a3" order="2"/>
  3687.       <bond id="b3" atomRefs2="a3 a5" order="1"/>
  3688.     </bondArray>
  3689.     <bondArray
  3690.       atomRef1="a1 a1 a3"
  3691.       atomRef2="a2 a3 a5"
  3692.       order="1 2 1"/>
  3693.   </list>
  3694. </cml>
  3695.  
  3696.             </pre>
  3697.         </div>
  3698.          </xsd:documentation>
  3699.       </xsd:annotation>
  3700.       <xsd:complexType>
  3701.          <xsd:choice>
  3702.             <xsd:element ref="bond" maxOccurs="unbounded"/>
  3703.             <xsd:element ref="array" minOccurs="0" maxOccurs="unbounded"/>
  3704. <!-- CML-1 (deprecated) -->
  3705.         <xsd:choice minOccurs="0" maxOccurs="unbounded">
  3706.           <xsd:element ref="floatArray" minOccurs="0" maxOccurs="unbounded"/>
  3707.           <xsd:element ref="integerArray" minOccurs="0" maxOccurs="unbounded"/>
  3708.           <xsd:element ref="stringArray" minOccurs="0" maxOccurs="unbounded"/>
  3709.         </xsd:choice>
  3710.          </xsd:choice>
  3711.  
  3712.          <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3713.          <xsd:attribute name="bondID" type="bondRefArrayType">
  3714.             <xsd:annotation>
  3715.                <xsd:documentation>
  3716.                   <p>The IDs for the bonds. Required in array mode</p>
  3717.                </xsd:documentation>
  3718.             </xsd:annotation>
  3719.          </xsd:attribute>
  3720.          <xsd:attribute name="atomRef1" type="atomRefArrayType">
  3721.             <xsd:annotation>
  3722.                <xsd:documentation>
  3723.                   <p>The first atoms in each bond. Required in array mode</p>
  3724.                </xsd:documentation>
  3725.             </xsd:annotation>
  3726.          </xsd:attribute>
  3727.          <xsd:attribute name="atomRef2" type="atomRefArrayType">
  3728.             <xsd:annotation>
  3729.                <xsd:documentation>
  3730.                   <p>The second atoms in each bond. Required in array mode</p>
  3731.                </xsd:documentation>
  3732.             </xsd:annotation>
  3733.          </xsd:attribute>
  3734.          <xsd:attribute name="order" type="orderArrayType">
  3735.             <xsd:annotation>
  3736.                <xsd:documentation>
  3737.                   <p>The bond orders in each bond. Used in array mode</p>
  3738.                </xsd:documentation>
  3739.             </xsd:annotation>
  3740.          </xsd:attribute>
  3741.       </xsd:complexType>
  3742.    </xsd:element>
  3743.  
  3744.    <xsd:element name="cml" id="el.cml">  
  3745.    <xsd:annotation>
  3746.       <xsd:documentation>
  3747.    <div class="summary">A general container for CML elements</div>
  3748.    <div class="description">
  3749.          <p>Often the root of the
  3750.              CML (sub)document. Has no explicit function but serves to hold
  3751.              the dictionaries, namespace, and can alert CML processors and search/XMLQuery tools
  3752.              that there is chemistry in the document. Can contain
  3753.              any content, but usually a list of molecules and other CML
  3754.              components. Can be nested</p>
  3755.              </div>
  3756.       <div class="example">
  3757.        <pre>
  3758.  
  3759.        </pre>
  3760.       </div>
  3761.       </xsd:documentation>
  3762.    </xsd:annotation>
  3763.    <xsd:complexType>
  3764.      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
  3765.        <xsd:annotation>
  3766.          <xsd:documentation>
  3767.            <div class="description">No specific restrictions</div>
  3768.          </xsd:documentation>
  3769.        </xsd:annotation>
  3770.        <xsd:any processContents="lax"/>
  3771.      </xsd:sequence>
  3772.      <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3773.    </xsd:complexType>
  3774. </xsd:element>
  3775.  
  3776.    <xsd:element name="crystal" id="el.crystal">  
  3777.    <xsd:annotation>
  3778.       <xsd:documentation>
  3779.        <div class="summary">A container for crystallographic 
  3780.        cell parameters and spacegroup</div>
  3781.    <div class="description">
  3782.          <p>. Required if
  3783.      fractional coordinates are provided for a molecule.</p>
  3784.      <p>There are precisely SIX child <tt>scalar</tt>s to represent the cell lengths
  3785.      and angles in that order. There are no default values; </p></div>
  3786.    <div class="example">
  3787.     <pre>
  3788. <cml title="crystal example">
  3789.   <molecule id="m1">
  3790.     <crystal z="4">
  3791.       <scalar title="a" errorValue="0.001" units="units:angstrom">4.500</scalar>
  3792.       <scalar title="b" errorValue="0.001" units="units:angstrom">4.500</scalar>
  3793.       <scalar title="c" errorValue="0.001" units="units:angstrom">4.500</scalar>
  3794.       <scalar title="alpha" units="units:degree">90</scalar>
  3795.       <scalar title="beta" units="units:degree">90</scalar>
  3796.       <scalar title="gamma" units="units:degree">90</scalar>
  3797.       <symmetry id="s1" spaceGroup="Fm3m"/>
  3798.     </crystal>
  3799.     <atomArray>
  3800.       <atom id="a1" elementType="Na" formalCharge="1" xyzFract="0.0 0.0 0.0" xy2="+23.2 -21.0"/> 
  3801.       <atom id="a2" elementType="Cl" formalCharge="-1" xyzFract="0.5 0.0 0.0"/> 
  3802.     </atomArray>
  3803.   </molecule>
  3804. </cml>
  3805.  
  3806.     </pre>
  3807.    </div>
  3808.      </xsd:documentation>
  3809.    </xsd:annotation>
  3810.    <xsd:complexType>
  3811.      <xsd:sequence>
  3812.        <xsd:element ref="scalar" minOccurs="6" maxOccurs="6">
  3813.          <xsd:annotation>
  3814.             <xsd:documentation>
  3815.       <div class="summary">All 6 cell parameters must be given, even where angles are
  3816.       fixed by symmetry. The order is fixed as a,b,c,alpha,gamma,beta and software can
  3817.       neglect any title or dictRef attributes. Error estimates can be given if required.
  3818.       Any units can be used, but the defaults are Angstrom (10^-10 m) and degrees.
  3819.     </div>
  3820.             </xsd:documentation>
  3821.          </xsd:annotation>
  3822.        </xsd:element>
  3823.        <xsd:element ref="symmetry" minOccurs="0"/>
  3824.      </xsd:sequence>
  3825.       <xsd:attribute name="z" type="xsd:nonNegativeInteger">
  3826.          <xsd:annotation>
  3827.             <xsd:documentation>
  3828.                <p>The number of molecules per cell. Molecules
  3829.          are defined as the <tt>molecule</tt> which directly contains
  3830.          the <tt>crystal</tt> element.</p>
  3831.             </xsd:documentation>
  3832.          </xsd:annotation>
  3833.       </xsd:attribute>
  3834.       <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3835.    </xsd:complexType>
  3836. </xsd:element>
  3837.  
  3838.    
  3839.    <xsd:element name="electron" id="el.electron">  
  3840.       <xsd:annotation>
  3841.          <xsd:documentation>
  3842.       <div class="summary">One or more electrons</div>
  3843.       <div class="description">
  3844.             <p>Since there is very little use of electrons in current 
  3845.             chemical information this is a fluid concept. I expect it to be used for electron
  3846.             counting, input and output of theochem operations, descriptions of orbitals,
  3847.             spin states, oxidation states, etc. Electrons can be associated with atoms, bonds
  3848.             and combinations of these. At present there is no hardcoded semantics. However,
  3849.             <tt>atomRef</tt> and similar attributes can be used to associate electrons with
  3850.             atoms or bonds
  3851.         </p></div>
  3852.        <div class="example">
  3853.        <pre>
  3854. <cml title="electron example">
  3855.   <molecule id="m1">
  3856.     <atomArray atomID="a1 a2 a3 a4 a5 a6"/>
  3857.     <bondArray 
  3858.       order="A A A A A A"
  3859.       bondID="b1 b2 b3 b4 b5 b6"
  3860.       atomRef1="a1 a2 a3 a4 a5 a6"
  3861.       atomRef2="a6 a1 a2 a3 a4 a5"/>
  3862.     <electron count="6" 
  3863.       bondRefs="b1 b2 b3 b4 b5 b6"
  3864.       atomRefs="a1 a2 a3 a4 a5 a6"/>
  3865.   </molecule>
  3866. </cml>
  3867.  
  3868.  
  3869.        </pre>
  3870.       </div>
  3871.         </xsd:documentation>
  3872.       </xsd:annotation>
  3873.       <xsd:complexType>
  3874.          <xsd:sequence/>
  3875.          <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3876.          <xsd:attribute name="atomRef" type="atomRefType"/>
  3877.          <xsd:attribute name="atomRefs" type="atomRefArrayType"/>
  3878.          <xsd:attribute name="bondRef" type="bondRefType"/>
  3879.          <xsd:attribute name="bondRefs" type="bondRefArrayType"/>
  3880.          <xsd:attribute name="count" type="xsd:positiveInteger">
  3881.            <xsd:annotation>
  3882.              <xsd:documentation>
  3883.                <div class="summary">The number of electrons</div>
  3884.                <div class="description">No formal default, but assumed to be 1. At present restricted to integers.
  3885.                </div>
  3886.              </xsd:documentation>
  3887.            </xsd:annotation>
  3888.          </xsd:attribute>
  3889.         <xsd:attributeGroup ref="ref">
  3890.             <xsd:annotation>
  3891.                <xsd:documentation>
  3892.                   <div class="summary">Available for subclassing to provide alternative properties for atoms.</div>
  3893.               </xsd:documentation>
  3894.             </xsd:annotation>
  3895.         </xsd:attributeGroup>
  3896.       </xsd:complexType>
  3897.    </xsd:element>
  3898.  
  3899.       <xsd:element name="formula" id="el.formula">  
  3900.       <xsd:annotation>
  3901.          <xsd:documentation>
  3902.       <div class="summary">The stochiometry of the molecule</div>
  3903.       <div class="description">
  3904.             <p>It is 
  3905.         defined by <tt>atomArray</tt>s each with a list of elementTypes and their
  3906.         counts (or default=1). All other information in the <tt>atomArray</tt>
  3907.         is ignored. <tt>formula</tt> are nestable so that aggregates (e.g. hydrates,
  3908.         salts, etc.) can be described. CML does not require that formula information
  3909.         is consistent with (say) crystallographic information; this allows for
  3910.         experimental variance.</p>
  3911.         <p>An alternative briefer representation is also available through the 
  3912.         <tt>conciseForm</tt>. This must include whitespace round all elements and 
  3913.         their counts, which must be explicit. </p>
  3914.       </div>
  3915.       <div class="example">
  3916.        <pre>
  3917. <cml title="formula example">
  3918.   <molecule id="sulfuricAcid">
  3919.     <formula concise="H 2 S 1 O 4"/>
  3920.   </molecule>
  3921.   <molecule id="CuprammoniumSulfate">
  3922.     <formula title="[Cu(NH3)4]2+ SO42-]">
  3923.       <formula formalCharge="+2">
  3924.         <atomArray elementType="Cu"/>
  3925.         <formula count="4">
  3926.           <atomArray elementType="N H" count="1 3"/>
  3927.         </formula>
  3928.       </formula>
  3929.       <formula formalCharge="-2">
  3930.         <atomArray elementType="S O" count="1 4"/>
  3931.       </formula>
  3932.     </formula>    
  3933.   </molecule>
  3934. </cml>
  3935.  
  3936.        </pre>
  3937.       </div>
  3938.          </xsd:documentation>
  3939.       </xsd:annotation>
  3940.       <xsd:complexType>
  3941.          <xsd:choice>
  3942.             <xsd:choice minOccurs="0" maxOccurs="unbounded">
  3943.               <xsd:element ref="formula"/>
  3944.               <xsd:element ref="atomArray"/>
  3945.             </xsd:choice>
  3946.          </xsd:choice>
  3947.          <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  3948.          <xsd:attribute name="count" type="positiveNumberType">
  3949.            <xsd:annotation>
  3950.              <xsd:documentation>
  3951.                <div class="summary">A multiplier for the formula</div>
  3952.                <div class="description">No formal default but assumed to be 1. Allows for fractional components.</div>
  3953.              </xsd:documentation>
  3954.            </xsd:annotation>
  3955.          </xsd:attribute>
  3956.          <xsd:attribute name="formalCharge" type="xsd:integer">
  3957.            <xsd:annotation>
  3958.              <xsd:documentation>
  3959.             <p>The formal charge is normally calculated from the formal charges of the
  3960.             atoms. If the <tt>formalCharge</tt> attribute is given it overrides this 
  3961.             information completely. This allows (say) metal complexes to be represented
  3962.             when it is difficult to apportion the charges to atoms.</p>
  3963.              </xsd:documentation>
  3964.            </xsd:annotation>
  3965.          </xsd:attribute>
  3966.          <xsd:attribute name="concise" type="formulaType">
  3967.            <xsd:annotation>
  3968.              <xsd:documentation>
  3969.                <div class="summary">A concise string representing an (unstructured) formula</div>
  3970.              </xsd:documentation>
  3971.            </xsd:annotation>
  3972.          </xsd:attribute>
  3973.          
  3974.       </xsd:complexType>
  3975.    </xsd:element>
  3976.  
  3977.    <xsd:element name="identifier" id="el.identifier">  
  3978.   <xsd:annotation>
  3979.     <xsd:documentation>
  3980.       <div class="summary">IChI identifier</div>
  3981.       <div class="description">
  3982.       <p>Supports compund identifiers such as IChI. At present uses the V0.9 IChI XML representation verbatim but will almost certainly change with future IChIs. </p>
  3983.       <p>The inclusion of elements from other namespaces causes problems with validation. The content model is deliberately LAX but the actual elements in IChI will fail the validation as they are not declared in CML.</p>
  3984.       </div>
  3985.       <div class="example"><pre/></div>
  3986.     </xsd:documentation>
  3987.   </xsd:annotation>
  3988.   <xsd:complexType>
  3989.   <!-- to avoid problems as IChI structure is updated -->
  3990.     <xsd:sequence>
  3991.       <xsd:element ref="basic"/>
  3992.       <xsd:element ref="charge" minOccurs="0"/>
  3993.       <xsd:element ref="stereo" minOccurs="0"/>
  3994.     </xsd:sequence>
  3995.     <xsd:attribute name="version" type="xsd:string"/>
  3996.     <xsd:attribute name="tautomeric" type="xsd:string"/>
  3997.   </xsd:complexType>
  3998. </xsd:element>
  3999.  
  4000.       <xsd:element name="basic" id="el.basic">
  4001.   <xsd:annotation>
  4002.     <xsd:documentation>
  4003.       <div class="summary">IChI basic string</div>
  4004.       <div class="description">
  4005.       <p>NOT PART OF CML. this is the IChI element supporting the unique string for the connection
  4006.       table. It is included in this distribution because validation requires all elements
  4007.       to have been declared.</p>
  4008.       </div>
  4009.     </xsd:documentation>
  4010.   </xsd:annotation>
  4011.         <xsd:complexType>
  4012.           <xsd:simpleContent>
  4013.             <xsd:extension base="xsd:string"/>
  4014.           </xsd:simpleContent>
  4015.         </xsd:complexType>
  4016.       </xsd:element>
  4017.       
  4018.       <xsd:element name="charge" id="el.charge">
  4019.   <xsd:annotation>
  4020.     <xsd:documentation>
  4021.       <div class="summary">IChI formal charge</div>
  4022.       <div class="description">
  4023.       <p>NOT PART OF CML. this is the IChI element supporting the charge on a molecular fragment. It is included in this distribution because validation requires all elements
  4024.       to have been declared.</p>
  4025.       </div>
  4026.     </xsd:documentation>
  4027.   </xsd:annotation>
  4028.         <xsd:complexType>
  4029.           <xsd:simpleContent>
  4030.             <xsd:extension base="xsd:string"/>
  4031.           </xsd:simpleContent>
  4032.         </xsd:complexType>
  4033.       </xsd:element>
  4034.  
  4035.       <xsd:element name="stereo" id="el.stereo">
  4036.   <xsd:annotation>
  4037.     <xsd:documentation>
  4038.       <div class="summary">IChI stereo</div>
  4039.       <div class="description">
  4040.       <p>NOT PART OF CML. this is the IChI element supporting the stereochemistry of a molecular fragment. It is included in this distribution because validation requires all elements
  4041.       to have been declared.</p>
  4042.       </div>
  4043.     </xsd:documentation>
  4044.   </xsd:annotation>
  4045.         <xsd:complexType>
  4046.           <xsd:sequence>
  4047.             <xsd:element ref="dbond" minOccurs="0"/>
  4048.             <xsd:element ref="sp3" minOccurs="0"/>
  4049.           </xsd:sequence>
  4050.         </xsd:complexType>
  4051.       </xsd:element>
  4052.  
  4053.              <xsd:element name="dbond" id="el.dbond">
  4054.   <xsd:annotation>
  4055.     <xsd:documentation>
  4056.       <div class="summary">IChI double bobd stereochemistry</div>
  4057.       <div class="description">
  4058.       <p>NOT PART OF CML. this is the IChI element supporting the stereochemistry of "double bonds". It is included in this distribution because validation requires all elements
  4059.       to have been declared.</p>
  4060.       </div>
  4061.     </xsd:documentation>
  4062.   </xsd:annotation>
  4063.               <xsd:complexType>
  4064.                 <xsd:simpleContent>
  4065.                   <xsd:extension base="xsd:string"/>
  4066.                 </xsd:simpleContent>
  4067.               </xsd:complexType>
  4068.             </xsd:element>
  4069.  
  4070.              <xsd:element name="sp3" id="el.sp3">
  4071.   <xsd:annotation>
  4072.     <xsd:documentation>
  4073.       <div class="summary">IChI atom-based stereochemistry</div>
  4074.       <div class="description">
  4075.       <p>NOT PART OF CML. this is the IChI element supporting the stereochemistry of an
  4076.       atom. It is included in this distribution because validation requires all elements
  4077.       to have been declared.</p>
  4078.       </div>
  4079.     </xsd:documentation>
  4080.   </xsd:annotation>
  4081.               <xsd:complexType>
  4082.                 <xsd:simpleContent>
  4083.                   <xsd:extension base="xsd:string"/>
  4084.                 </xsd:simpleContent>
  4085.               </xsd:complexType>
  4086.             </xsd:element>
  4087.  
  4088.  
  4089.       <xsd:element name="length" id="el.length">  
  4090.       <xsd:annotation>
  4091.          <xsd:documentation>
  4092.       <div class="summary">A length between two atoms</div>
  4093.       <div class="description">
  4094.             <p/>
  4095.       </div>
  4096.       <div class="example">
  4097.        <pre><cml title="length example">
  4098.   <molecule id="m1">
  4099.     <atomArray atomID="a1 a2 a3"/>
  4100.     <length atomRefs2="a3 a1">1.534</length>
  4101.   </molecule>
  4102. </cml>
  4103. </pre>
  4104.       </div>
  4105.          </xsd:documentation>
  4106.       </xsd:annotation>
  4107.       <xsd:complexType>
  4108.          <xsd:simpleContent>
  4109.             <xsd:extension base="xsd:float">
  4110.                <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  4111.                <xsd:attributeGroup ref="atomRefs2"/>
  4112.                <xsd:attributeGroup ref="units"/>
  4113.                <xsd:attributeGroup ref="errorValue"/>
  4114.                <xsd:attributeGroup ref="errorBasis"/>
  4115.                <xsd:attributeGroup ref="min"/>
  4116.                <xsd:attributeGroup ref="max"/>
  4117.                <xsd:attributeGroup ref="ref">
  4118.                  <xsd:annotation>
  4119.                    <xsd:documentation>
  4120.                      <div class="summary">Available for subclassing to provide alternative lengths (e.g. in conformations).</div>
  4121.                    </xsd:documentation>
  4122.                  </xsd:annotation>
  4123.                </xsd:attributeGroup>
  4124.             </xsd:extension>
  4125.          </xsd:simpleContent>
  4126.       </xsd:complexType>
  4127.    </xsd:element>
  4128.  
  4129.    
  4130.    <xsd:element name="molecule" id="el.molecule">  
  4131.       <xsd:annotation>
  4132.          <xsd:documentation>
  4133.       <div class="summary">A container for atoms, bonds and submolecules</div>
  4134.       <div class="description">
  4135.             <p>
  4136.          <tt>molecule</tt> is a container for atoms, bonds and submolecules along
  4137.         with properties such as crystal and non-builtin properties. It should either
  4138.         contain <tt>molecule</tt> or *Array for atoms and bonds. A molecule
  4139.         can be empty (e.g. we just know its name, id, etc.)</p>
  4140.         <p>"Molecule" need not represent a chemically meaningful molecule. It
  4141.         can contain atoms with bonds (as in the solid-sate) and it could 
  4142.         simply carry a name (e.g. "taxol") without formal representation
  4143.         of the structure. It can contain "sub molecules", which are often
  4144.         discrete subcomponents (e.g. guest-host).</p>
  4145.         <p>Molecule can contain a <list> element to contain data
  4146.         related to the molecule.
  4147.         Within this can be string/float/integer and other nested lists</p>
  4148.         </div>
  4149.         <div class="example">
  4150.         <pre><cml title="schematic molecule example">
  4151.   <molecule id="dummyId">
  4152.     <atomArray>
  4153.       <atom id="a1" elementType="C" 
  4154.         hydrogenCount="0" x2="6.1964" y2="8.988"/>
  4155.       <atom id="a2" elementType="C" 
  4156.         hydrogenCount="0" x2="6.1964" y2="7.587"/>
  4157.       <atom id="a3" elementType="C" 
  4158.         hydrogenCount="2" x2="4.983" y2="6.887"/>
  4159. <!-- omitted -->
  4160.       <atom id="a28" elementType="C" 
  4161.         hydrogenCount="3" x2="15.777" y2="6.554"/>
  4162.       <atom id="a29" elementType="O" 
  4163.         hydrogenCount="0" x2="13.388" y2="6.188"/>
  4164.     </atomArray>
  4165.     <bondArray>
  4166.       <bond atomRefs2="a1 a2" order="1"/>
  4167.       <bond atomRefs2="a2 a3" order="1"/>
  4168.       <bond atomRefs2="a3 a4" order="1"/>
  4169. <!-- omitted -->
  4170.       <bond atomRefs2="a11 a15" order="1"/>
  4171.       <bond atomRefs2="a12 a18" order="1">
  4172.         <bondStereo>W</bondStereo>
  4173.       </bond>
  4174.       <bond atomRefs2="a2 a19" order="1">
  4175.         <bondStereo>W</bondStereo>
  4176.       </bond>
  4177.       <bond atomRefs2="a5 a20" order="2"/>
  4178.       <bond atomRefs2="a17 a21" order="1"/>
  4179.       <bond atomRefs2="a21 a22" order="1"/>
  4180. <!-- omitted -->
  4181.       <bond atomRefs2="a10 a9" order="1"/>
  4182.       <bond atomRefs2="a16 a29" order="2"/>
  4183.     </bondArray>
  4184.   </molecule>
  4185. </cml>
  4186.  
  4187. </pre>
  4188.         </div>
  4189.          </xsd:documentation>
  4190.          <xsd:documentation>
  4191.            <div class="curation">Revised content model to allow any order of lengths, angles, torsions 2003-01-01</div>
  4192.          </xsd:documentation>
  4193.       </xsd:annotation>
  4194.  
  4195.  
  4196.       <xsd:complexType>
  4197.         <xsd:annotation>
  4198.           <xsd:documentation>
  4199.            <div>
  4200.              <p>The float|integer|string children are for compatibility with CML-1 and are deprecated. scalar|array|matrix should be used instead.</p>
  4201.            </div>
  4202.           </xsd:documentation>
  4203.         </xsd:annotation>
  4204.  
  4205. <!-- content model: entity mechanism allows extension to core CML -->
  4206. <!-- content extension to core CML -->
  4207. <!-- overloaded in derived CML supersets -->
  4208.  
  4209.          <xsd:sequence>
  4210.            <xsd:element ref="metadataList" minOccurs="0" maxOccurs="unbounded"/>
  4211.            <xsd:element ref="formula" minOccurs="0"/>
  4212.            <xsd:element ref="identifier" minOccurs="0"/>
  4213.            <xsd:element ref="name" minOccurs="0" maxOccurs="unbounded"/>
  4214.            <xsd:element ref="symmetry" minOccurs="0"/>
  4215.            <xsd:element ref="crystal" minOccurs="0"/>
  4216.            <xsd:choice>
  4217.              <xsd:element ref="molecule" minOccurs="0" maxOccurs="unbounded"/>
  4218.              <xsd:sequence>
  4219.                <xsd:element ref="atomArray"/>
  4220.                <xsd:element ref="bondArray" minOccurs="0"/>
  4221.                <xsd:element ref="electron" minOccurs="0" maxOccurs="unbounded"/>
  4222.                <xsd:choice minOccurs="0" maxOccurs="unbounded">
  4223.                  <xsd:element ref="length"/>
  4224.                  <xsd:element ref="angle"/>
  4225.                  <xsd:element ref="torsion"/>
  4226.                  </xsd:choice>
  4227.              </xsd:sequence>
  4228.            </xsd:choice>
  4229.            <xsd:sequence minOccurs="0" maxOccurs="unbounded">
  4230.              <xsd:element ref="scalar" minOccurs="0" maxOccurs="unbounded"/>
  4231.              <xsd:element ref="array" minOccurs="0" maxOccurs="unbounded"/>
  4232.              <xsd:element ref="matrix" minOccurs="0" maxOccurs="unbounded"/>
  4233.              <xsd:element ref="list" minOccurs="0" maxOccurs="unbounded"/>
  4234.            </xsd:sequence>
  4235.            <xsd:choice minOccurs="0" maxOccurs="unbounded">
  4236.              <xsd:element ref="float" minOccurs="0" maxOccurs="unbounded"/>
  4237.              <xsd:element ref="integer" minOccurs="0" maxOccurs="unbounded"/>
  4238.              <xsd:element ref="string" minOccurs="0" maxOccurs="unbounded"/>
  4239.            </xsd:choice>
  4240.      </xsd:sequence>
  4241.  
  4242.          
  4243.         
  4244.          <xsd:attributeGroup ref="dictRef"/> 
  4245.          <xsd:attributeGroup ref="convention"/>  
  4246.          <xsd:attributeGroup ref="title"/> 
  4247.          <xsd:attributeGroup ref="id"/>
  4248.          <xsd:attributeGroup ref="ref"/> 
  4249.          <xsd:attribute name="formula" type="formulaType">
  4250.            <xsd:annotation>
  4251.              <xsd:documentation>
  4252.             <p>
  4253.         The <tt>formula</tt> attribute should only be used for simple formulae (i.e.
  4254.         without brackets or other nesting for which the <a href="el.formula">formula</a>
  4255.         child should be used. The attribute might be used as a check on the child
  4256.         elements or for ease of representation.</p>
  4257.              </xsd:documentation>
  4258.            </xsd:annotation>
  4259.          </xsd:attribute>
  4260.          <xsd:attribute name="count" type="positiveNumberType">
  4261.            <xsd:annotation>
  4262.              <xsd:documentation>
  4263.                <div class="summary">The count for the molecule</div>
  4264.                <div class="description">No formal default but assumed to be 1. Fractional values are allowed to describe variable stoichiometry.</div>
  4265.              </xsd:documentation>
  4266.            </xsd:annotation>
  4267.          </xsd:attribute>
  4268.          <xsd:attribute name="chirality">
  4269.            <xsd:annotation>
  4270.              <xsd:documentation>
  4271.                <div class="summary">The chirality of the complete system</div>
  4272.                <div class="description">This is being actively investigated by a IUPAC committee (2002) so the convention is likely to change. No formaldefault</div>
  4273.              </xsd:documentation>
  4274.            </xsd:annotation>
  4275.            <xsd:simpleType>
  4276.              <xsd:restriction base="xsd:string">
  4277.                <xsd:enumeration value="enantiomer"/>
  4278.                <xsd:enumeration value="racemate"/>
  4279.                <xsd:enumeration value="unknown"/>
  4280.                <xsd:enumeration value="other"/>
  4281.              </xsd:restriction>
  4282.            </xsd:simpleType>
  4283.          </xsd:attribute>
  4284.          <xsd:attribute id="el.molecule.formalCharge" name="formalCharge" type="formalChargeType">
  4285.             <xsd:annotation>
  4286.                <xsd:documentation>
  4287.                  <div class="summary">The formalCharge on the molecule</div>
  4288.                  <div class="description">NOT the calculated charge or oxidation state.
  4289.                This attribute should be used when it is impossible or artificial to assign charges
  4290.                to each atom, as in coordination complexes. It is then required that <b>all</b>
  4291.                atom formalCharge attributes are omitted. No formal default, but assumed to be zero if omitted. It may become good practice to include it.
  4292.                  </div>
  4293.                </xsd:documentation>
  4294.             </xsd:annotation>
  4295.          </xsd:attribute>
  4296.          <xsd:attribute id="el.atom.spinMultiplicity" name="spinMultiplicity" type="xsd:positiveInteger">
  4297.             <xsd:annotation>
  4298.                <xsd:documentation>
  4299.                <div class="summary">The spin multiplicity for the molecule</div>
  4300.                <div class="description"><p>This attribute gives the spin multiplicity of the molecule
  4301.                and is independent of any atomic information. No default, and it may take any positive integer
  4302.                value (though values are normally between 1 and 5)</p> 
  4303.                </div>
  4304.               </xsd:documentation>
  4305.             </xsd:annotation>
  4306.          </xsd:attribute>
  4307.          <xsd:attribute id="el.atom.symmetryOriented" name="symmetryOriented" type="xsd:boolean">
  4308.            <xsd:annotation>
  4309.              <xsd:documentation>
  4310.                <div class="summary">Is the molecule oriented to the symmetry</div>
  4311.                <div class="description"><p>No formal default, but a molecule is assumed to be oriented according to any
  4312.              <symmetry> children. This is required for crystallographic data,
  4313.              but some systems for isolated molecules allow specification of arbitrary
  4314.              Cartesian or internal coordinates, which must be fitted or refined to
  4315.              a prescribed symmetry. In this case the attribute value is <tt>false</tt>.
  4316.              </p>
  4317.              </div>
  4318.              </xsd:documentation>
  4319.            </xsd:annotation>
  4320.          </xsd:attribute>
  4321.          
  4322. <!-- attribute extensions to core CML -->
  4323. <!-- atom.atts.extensions -->
  4324. <!-- this is reserved for extending core CML through attributes to molecules -->
  4325.          
  4326.          
  4327.       </xsd:complexType>
  4328.    </xsd:element>
  4329.  
  4330.    <xsd:element name="name" id="el.name">  
  4331.   <xsd:annotation>
  4332.     <xsd:documentation>
  4333.       <div class="summary">A string identifying a <a href="el.molecule">molecule</a>,
  4334. <a href="el.atom">atom</a> or (possibly) other elements. 
  4335.       </div>
  4336.       <div class="description">
  4337.             <p><tt>name</tt> is used for chemical names (formal and trivial)
  4338.             for molecules and also for identifiers such as CAS registry and RTECS. 
  4339.             It can also be used for labelling atoms. It should be used
  4340.             in preference to the <tt>title</tt>
  4341.             attribute because it is repeatable and can be linked to a
  4342.             dictionary.
  4343. </p>
  4344. <p>Constraining patterns can be described in the dictionary and used to 
  4345. validate <tt>name</tt>s.</p>
  4346.       </div>
  4347.       <div class="example">
  4348.         <pre>
  4349. <cml title="name example">
  4350.   <molecule id="aspirin">
  4351.     <name convention="INN"> name="builtin" type="xsd:string"in</name>
  4352.     <name convention="IUPAC">2-acetoxybenzoic acid</name>
  4353.     <name convention="trivial">acetylsalicylic acid</name>
  4354.   </molecule>
  4355. </cml>
  4356.  
  4357.         </pre>
  4358.       </div>
  4359.     </xsd:documentation>
  4360.   </xsd:annotation>
  4361.   <xsd:complexType>
  4362.     <xsd:simpleContent>
  4363.       <xsd:extension base="xsd:string">
  4364.         <xsd:attributeGroup ref="id"/>
  4365.         <xsd:attributeGroup ref="convention"/>
  4366.         <xsd:attributeGroup ref="dictRef"/> 
  4367.       </xsd:extension>
  4368.     </xsd:simpleContent>
  4369.   </xsd:complexType>
  4370. </xsd:element>
  4371.  
  4372.    <xsd:element name="property" id="el.property">  
  4373.   <xsd:annotation>
  4374.     <xsd:documentation>
  4375.       <div class="summary">A container for a property</div>
  4376.       <div class="description">
  4377.         <p><tt>property</tt> can contain one or more children, usually <tt>scalar</tt>, <tt>array</tt> or <tt>matrix</tt>. The <tt>dictRef</tt> attribute is required, even if there is a single scalar child with the same dictRef. The property may have a different dictRef from the child, thus providing an extension mechanism.
  4378.         </p>
  4379.         <p>Properties may have a <tt>state</tt> attribute to distinguish the state of matter</p>
  4380.       </div>
  4381.       <div class="example">
  4382.         <pre/>
  4383.       </div>
  4384.     </xsd:documentation>
  4385.   </xsd:annotation>
  4386.  
  4387.   <xsd:complexType>
  4388.     <xsd:sequence>
  4389.       <xsd:element ref="metadataList" minOccurs="0" maxOccurs="unbounded"/>
  4390.       <xsd:element ref="name" minOccurs="0" maxOccurs="unbounded"/>
  4391.       <xsd:choice minOccurs="0" maxOccurs="unbounded">
  4392.         <xsd:element ref="scalar"/>
  4393.         <xsd:element ref="array"/>
  4394.         <xsd:element ref="matrix"/>
  4395.         <!-- content extension to core CML -->
  4396. <!-- overloaded in derived CML supersets -->
  4397.  
  4398.  
  4399.  
  4400.       </xsd:choice>
  4401.     </xsd:sequence>
  4402.     <xsd:attributeGroup ref="dictRef"/> 
  4403.     <xsd:attributeGroup ref="convention"/>  
  4404.     <xsd:attributeGroup ref="title"/> 
  4405.     <xsd:attributeGroup ref="id"/>
  4406.     <xsd:attributeGroup ref="ref"/> 
  4407.     <xsd:attribute name="role" id="property.att.role">
  4408.       <xsd:annotation>
  4409.         <xsd:documentation>
  4410.           <div>
  4411.             <p>The role of the property. Semantics are not yet controlled but could include thermochemistry, kinetics or other common properties.</p>
  4412.           </div>
  4413.         </xsd:documentation>
  4414.       </xsd:annotation>
  4415.     </xsd:attribute>
  4416.     <xsd:attribute name="state" type="stateType" id="property.att.state">
  4417.       <xsd:annotation>
  4418.         <xsd:documentation>
  4419.           <div>
  4420.             <p>The role of the property. Semantics are not yet controlled but could include thermochemistry, kinetics or other common properties.</p>
  4421.           </div>
  4422.         </xsd:documentation>
  4423.       </xsd:annotation>
  4424.     </xsd:attribute>
  4425.   </xsd:complexType>
  4426. </xsd:element>
  4427.  
  4428.    <xsd:element name="propertyList" id="el.propertyList">  
  4429.   <xsd:annotation>
  4430.     <xsd:documentation>
  4431.       <div class="summary">A container for one or more properties</div>
  4432.       <div class="description">
  4433.         <p><tt>propertyList</tt> can contain several properties. These include (but are not limited to observations, or numeric quantities.
  4434.         </p>
  4435.       </div>
  4436.       <div class="example">
  4437.         <pre/>
  4438.       </div>
  4439.     </xsd:documentation>
  4440.   </xsd:annotation>
  4441.  
  4442.   <xsd:complexType>
  4443.     <xsd:sequence>
  4444.       <xsd:element ref="metadataList" minOccurs="0" maxOccurs="unbounded"/>
  4445.       <xsd:element ref="name" minOccurs="0" maxOccurs="unbounded"/>
  4446.       <xsd:choice minOccurs="0" maxOccurs="unbounded">
  4447.         <xsd:element ref="property"/>
  4448.         <xsd:element ref="observation"/>
  4449.       </xsd:choice>
  4450. <!--      <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>-->
  4451.     </xsd:sequence>
  4452.     <xsd:attributeGroup ref="dictRef"/> 
  4453.     <xsd:attributeGroup ref="convention"/>  
  4454.     <xsd:attributeGroup ref="title"/> 
  4455.     <xsd:attributeGroup ref="id"/>
  4456.     <xsd:attributeGroup ref="ref"/> 
  4457.     <xsd:attribute name="role">
  4458.       <xsd:annotation>
  4459.         <xsd:documentation>
  4460.           <div>
  4461.             <p>The role of the propertyList. Semantics are not yet controlled but could include thermochemistry, kinetics or other common properties.</p>
  4462.           </div>
  4463.         </xsd:documentation>
  4464.       </xsd:annotation>
  4465.     </xsd:attribute>
  4466.   </xsd:complexType>
  4467. </xsd:element>
  4468.  
  4469.       <xsd:element name="bondStereo" id="el.bondStereo">  
  4470.       <xsd:annotation>
  4471.          <xsd:documentation>
  4472.            <div class="summary">A container supporting "cis/trans", "wedge hatch" 
  4473.            and other stereochemistry. </div>
  4474.             <div class="description"><p>An explict
  4475.         list of atomRefs must be given, or it must be a child of <tt>bond</tt>. 
  4476.         There are no implicit conventions
  4477.         such as E/Z. This will be extended to other types
  4478.         of stereochemistry.</p>
  4479.         <p>At present the following are supported:</p>
  4480.         <ul>
  4481.           <li>No atomRefs attribute. <b>Deprecated, but probably unavoidable</b>. 
  4482.           This must be a child of <tt>bond</tt> where it picks up the two atomRefs
  4483.           in the <tt>atomRefs2</tt> attribute. Possible values are C/T (which only makes sense
  4484.           if there is exactly one ligand at each end of the bond) and W/H. The latter
  4485.           should be raplaced by <tt>atomParity</tt> wherever possible. Note that W/H makes
  4486.           no sense without 2D atom coordinates.</li>
  4487.           <li><b>atomRefs4 attribute</b>. The 4 atoms represent a cis or trans configuration. 
  4488.           This may or may not be a child of <tt>bond</tt>; if so the second and third atomRefs
  4489.           should be identical with the two atomRefs in the bond. This structure can be used
  4490.           to guide processors in processing stereochemistry and is recommended, since there is
  4491.           general agreement on the semantics. The semantics of <tt>bondStereo</tt> not related to
  4492.           bonds is less clear (e.g. cumulenes, substituted ring nuclei) etc.It is 
  4493.           currently an error to have more than one <tt>bondStereo</tt> referring to the same ordered
  4494.           4-atom list</li>
  4495.           <li><b>atomRefs attribute</b>. There are other stereochemical conventions such as cis/trans
  4496.           for metal complexes which require a variable number of reference atoms. This allows 
  4497.           users to create their own - at present we do not see CML creating exhaustive tables.
  4498.           For example cis/trans square-planar complexes might require 4 (or 5) atoms for their
  4499.           definition, octahedral 6 or 7, etc. In principle this is very powerful and could
  4500.           supplement or replace the use of <i>cis-</i>, <i>mer-</i>, etc.</li>
  4501.         </ul>
  4502.         <p>the <tt>atomRefs</tt> and <tt>atomRefs4</tt> attributes cannot be used
  4503.         simultaneously.</p></div>
  4504.         <div class="example">
  4505.         <pre>
  4506. <cml title="bondArray example">
  4507.   <bondArray>
  4508.     <bond id="b1" atomRefs2="a3 a8" order="D">
  4509.       <electron bondRef="b1"/>
  4510.       <bondStereo>C</bondStereo>
  4511.     </bond>
  4512.     <bond id="b2" atomRefs2="a3 a8" order="S">
  4513.       <bondStereo convention="MDL" conventionValue="6"/>
  4514.     </bond>
  4515.   </bondArray>
  4516. </cml>
  4517.  
  4518.         </pre>
  4519.         </div>
  4520.          </xsd:documentation>
  4521.       </xsd:annotation>
  4522.       <xsd:complexType>
  4523.          <xsd:simpleContent>
  4524.             <xsd:extension base="stereoType">
  4525.                <xsd:attributeGroup ref="atomRefs4"/>
  4526.                <xsd:attributeGroup ref="atomRefArray"/>
  4527.                <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  4528.                <xsd:attribute name="conventionValue" type="xsd:string">
  4529.                  <xsd:annotation>
  4530.                    <xsd:documentation>
  4531.                      <div class="summary">The stereo value when the <tt>convention</tt>
  4532.                      attribute is used</div>
  4533.                      <div class="description">When convention is used this attribute must be present
  4534.                      and element content must be empty.</div>
  4535.                    </xsd:documentation>
  4536.                  </xsd:annotation>
  4537.                </xsd:attribute>
  4538.             </xsd:extension>
  4539.          </xsd:simpleContent>
  4540.       </xsd:complexType>
  4541.    </xsd:element>
  4542.  
  4543.    <xsd:element name="substance" id="el.substance">  
  4544.   <xsd:annotation>
  4545.     <xsd:documentation>
  4546.       <div class="summary">A "chemical substance" </div>
  4547.       <div class="description">
  4548.           <p>
  4549.       <tt>substance</tt> represents a "chemical substance" which is deliberately very
  4550.         general. It can represent things that may or may not be molecules, can and cannot be stored
  4551.         in bottles and may or may not be microscopic. Solutions and mixtures 
  4552.         can be described by <a href="el.substanceList">
  4553.         substanceList</a>s of substances. The <tt>type</tt> attribute can be used to give qualitative information characterising the substance ("granular", "90%", etc.)
  4554.         and <tt>role</tt> to describe the role in process ("desiccant", "support", etc.). There is currently no controlled vocabulary.
  4555.         Note that <tt>reaction</tt> is likely to have more precise semantics.</p>
  4556.       <p>The amount of a substance is controlled by the optional <tt>amount</tt> child</p>
  4557.       </div>
  4558.       <div class="example">
  4559.         <pre><cml title="substance example">
  4560.   <substance title="ethanol" id="ethanol">
  4561.     <amount units="units:l">1.2</amount>
  4562.   </substance>
  4563. </cml>
  4564.  
  4565. </pre>
  4566.       </div>
  4567.     </xsd:documentation>
  4568.     <xsd:documentation>
  4569.       <div class="curation">
  4570.         <p>Added property as a child 2002-12-29</p>
  4571.       </div>
  4572.     </xsd:documentation>
  4573.   </xsd:annotation>
  4574.   <xsd:complexType>
  4575.     <xsd:sequence>
  4576.       <xsd:element ref="metadataList" minOccurs="0" maxOccurs="unbounded"/>
  4577.       <xsd:element ref="amount" minOccurs="0"/>
  4578.       <xsd:choice>
  4579.         <xsd:element ref="molecule" minOccurs="0" maxOccurs="unbounded"/>
  4580.         <xsd:element ref="name" minOccurs="0" maxOccurs="unbounded"/>
  4581.         <xsd:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
  4582.       </xsd:choice>
  4583.     </xsd:sequence>
  4584.     <xsd:attributeGroup ref="dictRef"/> 
  4585.     <xsd:attributeGroup ref="convention"/>
  4586.     <xsd:attributeGroup ref="title"/> 
  4587.     <xsd:attributeGroup ref="id"/>
  4588.     <xsd:attribute name="type" type="xsd:string">
  4589.       <xsd:annotation>
  4590.         <xsd:documentation>
  4591.          <p>
  4592.       <tt>type</tt> can represent concepts such as physical form, but is not limited
  4593.         to any vocabulary.</p>
  4594.         </xsd:documentation>
  4595.       </xsd:annotation>
  4596.     </xsd:attribute>
  4597.     <xsd:attribute name="role" type="xsd:string">
  4598.       <xsd:annotation>
  4599.         <xsd:documentation>
  4600.           <p>
  4601.       <tt>role</tt> depends on context, and indicates some purpose associated with
  4602.         the substance. It might indicate 'catalyst', 'solvent', 'antoxidant', etc. but is not limited
  4603.         to any vocabulary.</p>
  4604.         </xsd:documentation>
  4605.       </xsd:annotation>
  4606.     </xsd:attribute>
  4607.     <xsd:attributeGroup ref="ref"/> 
  4608.     <xsd:attribute name="count" type="positiveNumberType">
  4609.       <xsd:annotation>
  4610.         <xsd:documentation>
  4611.           <div class="summary">The count of the substance</div>
  4612.           <div class="description">No fixed semantics or default.
  4613.           </div>
  4614.         </xsd:documentation>
  4615.       </xsd:annotation>
  4616.     </xsd:attribute>
  4617.     <xsd:attribute name="state" type="stateType" id="substance.att.state">
  4618.       <xsd:annotation>
  4619.         <xsd:documentation>
  4620.           <div>
  4621.             <p>The state of the substance</p>
  4622.           </div>
  4623.         </xsd:documentation>
  4624.       </xsd:annotation>
  4625.     </xsd:attribute>
  4626.   </xsd:complexType>
  4627. </xsd:element>
  4628.  
  4629.    
  4630.    <xsd:element name="substanceList" id="el.substanceList">  
  4631. <xsd:annotation>
  4632.   <xsd:documentation>
  4633.     <div class="summary">A list of "chemical substances"</div>
  4634.     <div class="description">
  4635.             <p>
  4636.         Deliberately very
  4637.         general - see <a href="el.substance">substance</a>. <tt>substanceList</tt> is designed to
  4638.         manage solutions, mixtures, etc. and there is a small enumerated controlled vocabulary,
  4639.         but this can be extended through dictionaries.</p>
  4640.         <p><tt>substanceList</tt> can have an <a href="el.amount">amount</a> child. This can indicate 
  4641.         the amount of a solution or mixture; this example describes 100 ml of 0.1M NaOH(aq).
  4642.         Although apparently longwinded it is precise and fully machine-interpretable</p>
  4643.     </div>
  4644.     <div class="example">
  4645.        <pre>
  4646. <cml title="substanceList example">
  4647.   <substanceList id="s1">
  4648.     <amount units="units:ml">100</amount>
  4649.     <substance id="s1">
  4650.       <amount units="units:l">1</amount>
  4651.       <molecule id="h2o" ref="mols:water"/>
  4652.     </substance>
  4653.     <substance id="s2">
  4654.       <amount units="units:mole">0.1</amount>
  4655.       <molecule id="nacl" formula="Na 1 O 1 H 1"/>
  4656.     </substance>
  4657.   </substanceList>
  4658. </cml>
  4659.  
  4660.  
  4661.        </pre>
  4662.     </div>
  4663.   </xsd:documentation>
  4664.       </xsd:annotation>
  4665.       <xsd:complexType>
  4666.          <xsd:sequence>
  4667.            <xsd:element ref="metadataList" minOccurs="0" maxOccurs="unbounded"/>
  4668.            <xsd:element ref="amount" minOccurs="0"/>
  4669. <!--           <xsd:choice>-->
  4670.            <xsd:element ref="substance" minOccurs="0" maxOccurs="unbounded"/>
  4671. <!-- PMR 2003-01-26
  4672.               <xsd:sequence>
  4673.                 <xsd:element ref="scalar" minOccurs="0" maxOccurs="unbounded"/>
  4674.                 <xsd:element ref="array" minOccurs="0" maxOccurs="unbounded"/>
  4675.                 <xsd:element ref="matrix" minOccurs="0" maxOccurs="unbounded"/>
  4676.                 <xsd:element ref="list" minOccurs="0" maxOccurs="unbounded"/>
  4677.               </xsd:sequence>
  4678. -->              
  4679.            <xsd:element ref="propertyList" minOccurs="0"/>
  4680. <!--            </xsd:choice>-->
  4681.          </xsd:sequence>
  4682.          <xsd:attributeGroup ref="dictRef"/> 
  4683.          <xsd:attributeGroup ref="convention"/>
  4684.          <xsd:attributeGroup ref="title"/> 
  4685.          <xsd:attributeGroup ref="id"/>
  4686.          <xsd:attribute name="type">
  4687.            <xsd:annotation>
  4688.              <xsd:documentation>
  4689.                <div class="summary">Type of the substanceList: </div>
  4690.                <div class="description">Extension is allowed through the "other" value</div>
  4691.              </xsd:documentation>
  4692.            </xsd:annotation>
  4693.            <xsd:simpleType>
  4694.              <xsd:restriction base="xsd:string">
  4695.                <xsd:enumeration value="solution"/>
  4696.                <xsd:enumeration value="mixture"/>
  4697.                <xsd:enumeration value="other"/>
  4698.             </xsd:restriction>
  4699.            </xsd:simpleType>
  4700.          </xsd:attribute>
  4701.          <xsd:attributeGroup ref="ref"/> 
  4702.       </xsd:complexType>
  4703.    </xsd:element>
  4704.  
  4705.  
  4706.    
  4707.    <xsd:element name="symmetry" id="el.symmetry">  
  4708.       <xsd:annotation>
  4709.          <xsd:documentation>
  4710.       <div class="summary">Molecular, crystallographic or other symmetry</div>
  4711.       <div class="description">
  4712.             <p>
  4713.          <tt>symmetry</tt> provides a label and/or symmetry operations for molecules
  4714.          or crystals. Point and spacegroups can be specified by strings, though these are not 
  4715.          enumerated, because of variability in syntax (spaces, case-sensitivity, etc.),
  4716.          potential high symmetries (e.g. TMV disk is D17) and
  4717.          non-standard spacegroup settings. Provision is made for explicit symmetry operations
  4718.          through <matrix> child elements.</p>
  4719.          <p>By default the axes of symmetry are defined by the symbol - thus C2v requires
  4720.          z to be the unique axis, while P21/c requires b/y. Spacegroups imply the semantics
  4721.          defined in International Tables for Crystallography, (Int Union for Cryst., Munksgaard).
  4722.          Point groups are also defined therein. </p>
  4723.          <p>The element may also be used to give a label for the symmetry species (irreducible
  4724.          representation) such as "A1u" for a vibration or orbital.
  4725.          </p>
  4726.          <p>The matrices should be 3x3 for point group operators and 3x4 for spacegroup operators.
  4727.          The use of crystallographic notation ("x,1/2+y,-z") is not supported - this would
  4728.          be <matrix>1 0 0 0.0   0 1 0 0.5  0 0 1 0.0<matrix>.</p>
  4729.          <p>The default convention for point group symmetry is <tt>Schoenflies</tt> and for
  4730.          spacegroups is "H-M". Other conventions (e.g. "Hall") must be specfied through
  4731.          the <tt>convention</tt> attribute.</p>
  4732.          <p>This element implies that the Cartesians or fractional coordinates in a molecule
  4733.          are oriented appropriately. In some cases it may be useful to specify the symmetry of
  4734.          an arbitarily oriented molecule and the <molecule> element has the attribute
  4735.          <tt>symmetryOriented</tt> for this purpose.</p>
  4736.         </div>
  4737.         <div class="example">
  4738.         <pre><cml title="symmetry example 1">
  4739. <symmetry pointGroup="C2v" id="s1">
  4740.   <matrix id="e" rows="3" columns="3" dataType="xsd:float" matrixType="rotation33">
  4741.     1 0 0
  4742.     0 1 0
  4743.     0 0 1
  4744.   </matrix>
  4745.   <matrix id="c2" rows="3" columns="3" dataType="xsd:float" matrixType="rotation33">
  4746.     -1 0 0
  4747.     0 -1 0
  4748.     0 0 1
  4749.   </matrix>
  4750.   <matrix id="sx" rows="3" columns="3" dataType="xsd:float" matrixType="rotation33">
  4751.     -1 0 0
  4752.     0 1 0
  4753.     0 0 1
  4754.   </matrix>
  4755.   <matrix id="sy" rows="3" columns="3" dataType="xsd:float" matrixType="rotation33">
  4756.     1 0 0
  4757.     0 -1 0
  4758.     0 0 1
  4759.   </matrix>
  4760. </symmetry>
  4761. </cml>
  4762. </pre>
  4763.         </div>
  4764.          </xsd:documentation>
  4765.       </xsd:annotation>
  4766.       <xsd:complexType>
  4767.          <xsd:sequence>
  4768.            <xsd:element ref="matrix" minOccurs="0" maxOccurs="unbounded"/>
  4769.          </xsd:sequence>
  4770.          <xsd:attributeGroup ref="dictRef"/> 
  4771.          <xsd:attributeGroup ref="convention"/>
  4772.          <xsd:attributeGroup ref="title"/> 
  4773.          <xsd:attributeGroup ref="id"/>
  4774.          <xsd:attribute name="pointGroup" type="xsd:string">
  4775.            <xsd:annotation>
  4776.              <xsd:documentation>
  4777.                <div class="summary">A point group</div>
  4778.                <div class="description">No fixed semantics, though Schoenflies is recommended over Hermann-Mauguin. We may provide a controlled-extensible list in the future.
  4779.                </div>
  4780.              </xsd:documentation>
  4781.            </xsd:annotation>
  4782.          </xsd:attribute>
  4783.          <xsd:attribute name="spaceGroup" type="xsd:string">
  4784.            <xsd:annotation>
  4785.              <xsd:documentation>
  4786.                <div class="summary">A point group</div>
  4787.                <div class="description">No fixed semantics, though Hermann-Mauguin or Hall is recommended over Schoenflies. We may provide a controlled-extensible list in the future.
  4788.                </div>
  4789.              </xsd:documentation>
  4790.            </xsd:annotation>
  4791.          </xsd:attribute>
  4792.          <xsd:attribute name="irreducibleRepresentation" type="xsd:string">
  4793.            <xsd:annotation>
  4794.              <xsd:documentation>
  4795.                <div class="summary">A symmetry species</div>
  4796.                <div class="description">No fixed semantics, though we may provide a controlled-extensible list in the future.
  4797.                </div>
  4798.              </xsd:documentation>
  4799.            </xsd:annotation>
  4800.          </xsd:attribute>
  4801.       </xsd:complexType>
  4802.    </xsd:element>
  4803.  
  4804.    <xsd:element name="torsion" id="el.torsion">  
  4805.    <xsd:annotation>
  4806.       <xsd:documentation>
  4807.    <div class="summary">A torsion angle ("dihedral") between 4 distinct atoms</div>
  4808.    <div class="description">
  4809.          <p>The atoms need not
  4810.      be formally bonded. It can be used for:</p>
  4811.          <ul>
  4812.             <li>Recording experimentally determined torsion angles (e.g. in
  4813.      a crystallographic paper).</li>
  4814.             <li>Providing the torsion component for internal coordinates (e.g.
  4815.      z-matrix).</li>
  4816.          </ul>
  4817.          <p>Note that the order of atoms is important.</p>
  4818.    </div>
  4819.    <div class="example">
  4820.     <pre>
  4821. <molecule id="m1">
  4822.   <atomArray atomID="a1 a2 a3 a4"/>
  4823.   <torsion atomRefs4="a4 a2 a3 a1" units="degrees">123</torsion>
  4824. </molecule>
  4825.  
  4826.     </pre>
  4827.    </div>
  4828.       </xsd:documentation>
  4829.    </xsd:annotation>
  4830.    <xsd:complexType>
  4831.      <xsd:simpleContent>
  4832.        <xsd:extension base="torsionAngleType">
  4833.          <xsd:attributeGroup ref="tit_id_conv_dictGroup"/>
  4834.          <xsd:attributeGroup ref="atomRefs4"/>
  4835.          <xsd:attributeGroup ref="units"/>
  4836.          <xsd:attributeGroup ref="errorValue"/>
  4837.          <xsd:attributeGroup ref="errorBasis"/>
  4838.          <xsd:attributeGroup ref="min"/>
  4839.          <xsd:attributeGroup ref="max"/>
  4840.          <xsd:attributeGroup ref="ref">
  4841.             <xsd:annotation>
  4842.                <xsd:documentation>
  4843.                   <div class="summary">A reference to an exitsing torsion.</div>
  4844.                   <div class="description">Available for subclassing to provide alternative torsions for conformations.</div>
  4845.               </xsd:documentation>
  4846.             </xsd:annotation>
  4847.         </xsd:attributeGroup>
  4848.        </xsd:extension>
  4849.      </xsd:simpleContent>
  4850.    </xsd:complexType>
  4851. </xsd:element>
  4852.  
  4853.  
  4854.  
  4855.    
  4856.  <!-- CML-1 (deprecated) -->
  4857.      <xsd:element name="float" id="el.float">  
  4858.   <xsd:annotation>
  4859.     <xsd:documentation>
  4860.       <div class="summary">CML-1 dataType (DEPRECATED)</div>
  4861.       <div class="description">
  4862.       </div>
  4863.       <div class="example"><pre/></div>
  4864.     </xsd:documentation>
  4865.   </xsd:annotation>
  4866.   <xsd:complexType>
  4867.     <xsd:simpleContent>
  4868.       <xsd:extension base="xsd:float">
  4869.         <xsd:attribute name="builtin" type="xsd:string"/>
  4870.         <xsd:attributeGroup ref="convention"/>
  4871.         <xsd:attributeGroup ref="dictRef"/>
  4872.         <xsd:attributeGroup ref="id"/>
  4873.         <xsd:attributeGroup ref="title"/>
  4874.         <xsd:attributeGroup ref="min"/>
  4875.         <xsd:attributeGroup ref="max"/>
  4876.         <xsd:attributeGroup ref="units"/>
  4877.         <xsd:attribute name="unitsRef" type="xsd:string"/>
  4878.       </xsd:extension>
  4879.     </xsd:simpleContent>
  4880.   </xsd:complexType>
  4881. </xsd:element>
  4882.  
  4883.   <xsd:element name="floatArray" id="el.floatArray">  
  4884.   <xsd:annotation>
  4885.     <xsd:documentation>
  4886.       <div class="summary">CML-1 dataType (DEPRECATED)</div>
  4887.       <div class="description">
  4888.       </div>
  4889.       <div class="example"><pre/></div>
  4890.     </xsd:documentation>
  4891.   </xsd:annotation>
  4892.   <xsd:complexType>
  4893.     <xsd:simpleContent>
  4894.       <xsd:extension base="xsd:string">
  4895.         <xsd:attribute name="builtin" type="xsd:string"/>
  4896.         <xsd:attributeGroup ref="convention"/>
  4897.         <xsd:attributeGroup ref="dictRef"/>
  4898.         <xsd:attributeGroup ref="id"/>
  4899.         <xsd:attributeGroup ref="title"/>
  4900.         <xsd:attributeGroup ref="min"/>
  4901.         <xsd:attributeGroup ref="max"/>
  4902.         <xsd:attributeGroup ref="size"/>
  4903.         <xsd:attributeGroup ref="units"/>
  4904.         <xsd:attribute name="unitsRef" type="xsd:string"/>
  4905.       </xsd:extension>
  4906.     </xsd:simpleContent>
  4907.   </xsd:complexType>
  4908. </xsd:element>
  4909.  
  4910.   <xsd:element name="integer" id="el.integer">  
  4911.   <xsd:annotation>
  4912.     <xsd:documentation>
  4913.       <div class="summary">CML-1 dataType (DEPRECATED)</div>
  4914.       <div class="description">
  4915.       </div>
  4916.       <div class="example"><pre/></div>
  4917.     </xsd:documentation>
  4918.   </xsd:annotation>
  4919.   <xsd:complexType>
  4920.     <xsd:simpleContent>
  4921.       <xsd:extension base="xsd:integer">
  4922.         <xsd:attribute name="builtin" type="xsd:string"/>
  4923.         <xsd:attributeGroup ref="convention"/>
  4924.         <xsd:attributeGroup ref="dictRef"/>
  4925.         <xsd:attributeGroup ref="id"/>
  4926.         <xsd:attributeGroup ref="title"/>
  4927.         <xsd:attributeGroup ref="min"/>
  4928.         <xsd:attributeGroup ref="max"/>
  4929.         <xsd:attributeGroup ref="units"/>
  4930.         <xsd:attribute name="unitsRef" type="xsd:string"/>
  4931.       </xsd:extension>
  4932.     </xsd:simpleContent>
  4933.   </xsd:complexType>
  4934. </xsd:element>
  4935.  
  4936.   <xsd:element name="integerArray" id="el.integerArray">  
  4937.   <xsd:annotation>
  4938.     <xsd:documentation>
  4939.       <div class="summary">CML-1 dataType (DEPRECATED)</div>
  4940.       <div class="description">
  4941.       </div>
  4942.       <div class="example"><pre/></div>
  4943.     </xsd:documentation>
  4944.   </xsd:annotation>
  4945.   <xsd:complexType>
  4946.     <xsd:simpleContent>
  4947.       <xsd:extension base="xsd:string">
  4948.         <xsd:attribute name="builtin" type="xsd:string"/>
  4949.         <xsd:attributeGroup ref="convention"/>
  4950.         <xsd:attributeGroup ref="dictRef"/>
  4951.         <xsd:attributeGroup ref="id"/>
  4952.         <xsd:attributeGroup ref="title"/>
  4953.         <xsd:attributeGroup ref="min"/>
  4954.         <xsd:attributeGroup ref="max"/>
  4955.         <xsd:attributeGroup ref="size"/>
  4956.         <xsd:attributeGroup ref="units"/>
  4957.         <xsd:attribute name="unitsRef" type="xsd:string"/>
  4958.       </xsd:extension>
  4959.     </xsd:simpleContent>
  4960.   </xsd:complexType>
  4961. </xsd:element>
  4962.  
  4963.   <xsd:element name="string" id="el.string">  
  4964.   <xsd:annotation>
  4965.     <xsd:documentation>
  4966.       <div class="summary">CML-1 dataType (DEPRECATED)</div>
  4967.       <div class="description">
  4968.       </div>
  4969.       <div class="example"><pre/></div>
  4970.     </xsd:documentation>
  4971.   </xsd:annotation>
  4972.   <xsd:complexType>
  4973.     <xsd:simpleContent>
  4974.       <xsd:extension base="xsd:string">
  4975.         <xsd:attribute name="builtin" type="xsd:string"/>
  4976.         <xsd:attributeGroup ref="convention"/>
  4977.         <xsd:attributeGroup ref="dictRef"/>
  4978.         <xsd:attributeGroup ref="id"/>
  4979.         <xsd:attributeGroup ref="title"/>
  4980.       </xsd:extension>
  4981.     </xsd:simpleContent>
  4982.   </xsd:complexType>
  4983. </xsd:element>
  4984.  
  4985.   <xsd:element name="stringArray" id="el.stringArray">  
  4986.   <xsd:annotation>
  4987.     <xsd:documentation>
  4988.       <div class="summary">CML-1 dataType (DEPRECATED)</div>
  4989.       <div class="description">
  4990.       </div>
  4991.       <div class="example"><pre/></div>
  4992.     </xsd:documentation>
  4993.   </xsd:annotation>
  4994.   <xsd:complexType>
  4995.     <xsd:simpleContent>
  4996.       <xsd:extension base="xsd:string">
  4997.         <xsd:attribute name="builtin" type="xsd:string"/>
  4998.         <xsd:attributeGroup ref="convention"/>
  4999.         <xsd:attributeGroup ref="dictRef"/>
  5000.         <xsd:attributeGroup ref="id"/>
  5001.         <xsd:attributeGroup ref="title"/>
  5002.         <xsd:attributeGroup ref="min"/>
  5003.         <xsd:attributeGroup ref="max"/>
  5004.         <xsd:attributeGroup ref="size"/>
  5005.         <xsd:attributeGroup ref="delimiter"/>
  5006.       </xsd:extension>
  5007.     </xsd:simpleContent>
  5008.   </xsd:complexType>
  5009. </xsd:element>
  5010.  
  5011.  
  5012.  
  5013.  
  5014. </xsd:schema>