atomArray

<h:div class="summary">A container for a list of atoms.</h:div>
<h:div class="description">A child of _molecule_ and contains _atom_ information. There are two strategies:
  <h:ul>
    <h:li>Create individual _atom_ elements under _atomArray_ (in any order). This gives the greatest flexibility but is the most verbose.</h:li>
    <h:li>Create
      <h:tt>*Array</h:tt>attributes (e.g. of _elementTypeArrayType_ under _atomArray_. This requires all arrays to be of identical lengths with explicit values for all atoms in every array. This is NOT suitable for complexType atom children such as _atomParity_. It also cannot be checked as easily by schema- and schematron validation. The _atomIDArray_ attribute is mandatory. It is allowed (though not yet recommended) to add _*Array_ children such as _floatArray_</h:li>
  </h:ul>The attributes are directly related to the scalar attributes under _atom_ which should be consulted for more info.</h:div>
<h:div class="example" href="atomArray1.xml">
  <h:p>Example - these are exactly equivalent representations</h:p>
</h:div>

Element Information

Model

anyCml | ANY element from ANY namespace OTHER than 'http://www.xml-cml.org/schema' | ANY element from LOCAL namespace 'No Namespace'
Children: anyCml

Attributes

QName Type Fixed Default Use Inheritable Annotation
atomID atomRefArrayType optional
<h:div class="summary">An array of atom IDs.</h:div>
<h:div class="description">Normally an attribute of an array-based element.</h:div>
convention namespaceRefType optional
<h:div class="summary">A reference to a convention.</h:div>
<h:div class="description">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, so that a convention for
  <h:tt>molecule</h:tt>would by default extend to its
  <h:tt>bond</h:tt>and
  <h:tt>atom</h:tt>children. This can be overwritten if necessary by an explicit
  <h:tt>convention</h:tt>.
  <h:p>It may be useful to create conventions with namespaces (e.g.
    <h:tt>iupac:name</h:tt>). Use of
    <h:tt>convention</h:tt>will normally require non-STMML semantics, and should be used with caution. We would expect that conventions prefixed with "ISO" would be useful, such as ISO8601 for dateTimes.</h:p>
  <h:p>There is no default, but the conventions of STMML or the related language (e.g. CML) will be assumed.</h:p>
</h:div>
<h:div class="example" id="ex" href="convGroup1.xml"/>
count countArrayType optional
<h:div class="summary">Array of object counts.</h:div>
<h:div class="description">No fixed semantics or default, normally integral. It is presumed that the element can be multiplied by the count value.</h:div>
dictRef namespaceRefType optional
<h:div class="summary">A reference to a dictionary entry.</h:div>
<h:div class="description">Elements in data instances such as _scalar_ may have a
  <h:tt>dictRef</h:tt>attribute to point to an entry in a dictionary. To avoid excessive use of (mutable) filenames and URIs we recommend a namespace prefix, mapped to a namespace URI in the normal manner. In this case, of course, the namespace URI must point to a real XML doc containing _entry_ elements and validated against STMML Schema.
  <h:p>Where there is concern about the dictionary becoming separated from the doc the dictionary entries can be physically included as part of the data instance and the normal XPointer addressing mechanism can be used.</h:p>
  <h:p>This attribute can also be used on _dictionary_ elements to define the namespace prefix</h:p>
</h:div>
<h:div class="example" href="dictRefGroup1.xml"/>
elementType elementTypeArrayType optional
<h:div class="summary">The identity of a chemical element.</h:div>
<h:div class="description">Normally mandatory on _atom_, _isotope_, etc.</h:div>
formalCharge formalChargeArrayType optional
<h:div class="summary">An array of formalCharges.</h:div>
<h:div class="description">Used in CML2 Array mode. NOT the calculated charge or oxidation state. No formal defaults, but assumed to be zero if omitted. It may become good practice to include it.</h:div>
hydrogenCount hydrogenCountArrayType optional
<h:div class="summary">Array of hydrogenCounts.</h:div>
<h:div class="description">Normally used in CML2 array mode. The total number of hydrogens bonded to the atom or molecule. It is preferable to include hydrogens explicitly, and where this is done their count represents the minimum (and may thus override this attribute). It is dangerous to use this attribute for electron-deficient molecules (e.g. diborane) or hydrogen bonds. There is NO DEFAULT and the absence of this attribute must not be given any meaning.</h:div>
id idType optional
<h:div class="summary">A unique ID for an element.</h:div>
<h:div class="description">Id is used for machine identification of elements and in general should not have application semantics. It is similar to the XML ID type as containing only alphanumerics, '_', ',' and '-' and and must start with an alphabetic character. Ids are case sensitive. Ids should be unique within local scope, thus all atoms within a molecule should have unique ids, but separated molecules within a doc (such as a published article) might have identical ids. Software should be able to search local scope (e.g. all atoms within a molecule). However this is under constant review.</h:div>
occupancy occupancyArrayType optional
<h:div class="summary">Array of occupancies.</h:div>
<h:div class="description">Normally only found in crystallography. Defaults to 1.0. The occupancy is required to calculate the molecular formula from the atoms.</h:div>
ref refType optional
<h:div class="summary">A reference to an element of given type.</h:div>
<h:div class="description">
  <h:tt>ref</h:tt>modifies an element into a reference to an existing element of that type within the doc. This is similar to a pointer and it can be thought of a strongly typed hyperlink. It may also be used for "subclassing" or "overriding" elements.
  <br xmlns=""/>When referring to an element most of the "data" such as attribute values and element content will be on the full instantiated element. Therefore ref (and possibly id) will normally be the only attributes on the pointing element. However there may be some attributes (title, count, etc.) which have useful semantics, but these are element-specific</h:div>
<h:div class="example" href="refGroup1.xml"/>
title xsd:string optional
<h:div class="summary">A title on an element.</h:div>
<h:div class="description">No controlled value.</h:div>
<h:div class="example" href="title1.xml"/>
x2 coordinateComponentArrayType optional
<h:div class="summary">array of x2 coordinate.</h:div>
<h:div class="description">Normally used in CML2 array mode. Used for displaying the object in 2 dimensions. Unrelated to the 3-D coordinates for the object. The orientation of the axes matters as it can affect the chirality of object.</h:div>
x3 coordinateComponentArrayType optional
<h:div class="summary">An array of x3 coordinate.</h:div>
<h:div class="summary">Normally used in CML2 array mode.</h:div>
xFract coordinateComponentArrayType optional
<h:div class="summary">Array of fractional x coordinate.</h:div>
<h:div class="description">normally xFract, yFract and zFract should all be present or absent. If present a _crystal_ element should also occur.</h:div>
y2 coordinateComponentArrayType optional
<h:div class="summary">array of y2 coordinate.</h:div>
<h:div class="description">Normally used in CML2 array mode. Used for displaying the object in 2 dimensions. Unrelated to the 3-D coordinates for the object. The orientation of the axes matters as it can affect the chirality of object.</h:div>
y3 coordinateComponentArrayType optional
<h:div class="summary">An array of y3 coordinate.</h:div>
<h:div class="summary">Normally used in CML2 array mode.</h:div>
yFract coordinateComponentArrayType optional
<h:div class="summary">Array of fractional y coordinate.</h:div>
<h:div class="description">normally xFract, yFract and zFract should all be present or absent. If present a _crystal_ element should also occur.</h:div>
z3 coordinateComponentArrayType optional
<h:div class="summary">An array of z3 coordinate.</h:div>
<h:div class="summary">Normally used in CML2 array mode.</h:div>
zFract coordinateComponentArrayType optional
<h:div class="summary">Array of fractional z coordinate.</h:div>
<h:div class="description">normally xFract, yFract and zFract should all be present or absent. If present a _crystal_ element should also occur.</h:div>
Wildcard: ANY attribute from ANY namespace OTHER than 'http://www.xml-cml.org/schema'

Source

<xsd:element name="atomArray" id="el.atomArray" substitutionGroup="anyCml">
  <xsd:annotation>
    <xsd:documentation>
      <h:div class="summary">A container for a list of atoms.</h:div>
      <h:div class="description">A child of _molecule_ and contains _atom_ information. There are two strategies:
        <h:ul>
          <h:li>Create individual _atom_ elements under _atomArray_ (in any order). This gives the greatest flexibility but is the most verbose.</h:li>
          <h:li>Create
            <h:tt>*Array</h:tt>attributes (e.g. of _elementTypeArrayType_ under _atomArray_. This requires all arrays to be of identical lengths with explicit values for all atoms in every array. This is NOT suitable for complexType atom children such as _atomParity_. It also cannot be checked as easily by schema- and schematron validation. The _atomIDArray_ attribute is mandatory. It is allowed (though not yet recommended) to add _*Array_ children such as _floatArray_</h:li>
        </h:ul>The attributes are directly related to the scalar attributes under _atom_ which should be consulted for more info.</h:div>
      <h:div class="example" href="atomArray1.xml">
        <h:p>Example - these are exactly equivalent representations</h:p>
      </h:div>
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexType>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="anyCml"/>
      <xsd:any namespace="##other" processContents="lax"/>
      <xsd:any namespace="##local" processContents="lax"/>
    </xsd:choice>
    <xsd:attributeGroup ref="title"/>
    <xsd:attributeGroup ref="id"/>
    <xsd:attributeGroup ref="convention"/>
    <xsd:attributeGroup ref="dictRef"/>
    <xsd:attributeGroup ref="ref"/>
    <xsd:attributeGroup ref="elementTypeArray"/>
    <xsd:attributeGroup ref="countArray"/>
    <xsd:attributeGroup ref="formalChargeArray"/>
    <xsd:attributeGroup ref="hydrogenCountArray"/>
    <xsd:attributeGroup ref="occupancyArray"/>
    <xsd:attributeGroup ref="x2Array"/>
    <xsd:attributeGroup ref="y2Array"/>
    <xsd:attributeGroup ref="x3Array"/>
    <xsd:attributeGroup ref="y3Array"/>
    <xsd:attributeGroup ref="z3Array"/>
    <xsd:attributeGroup ref="xFractArray"/>
    <xsd:attributeGroup ref="yFractArray"/>
    <xsd:attributeGroup ref="zFractArray"/>
    <xsd:attributeGroup ref="atomIDArray"/>
    <xsd:anyAttribute namespace="##other" processContents="lax"/>
  </xsd:complexType>
</xsd:element>

Sample

< cml xmlns = "http://www.xml-cml.org/schema" xmlns:dc = "http://purl.org/dc/elements/1.1/" convention = "conventions:molecular" >

< dc:title>

test file for http://www.xml-cml.org/conventions/molecular convention

</ dc:title>

< dc:description>

valid molecular - atom has a child but it is not from the CML namespace

</ dc:description>

< dc:author>

J A Townsend

</ dc:author>

< dc:rights>

Copyright J A Townsend jat45@cantab.net 2009.

</ dc:rights>

< dc:date>

2009-01-21

</ dc:date>

< molecule id = "m1" >

< atomArray>

< atom id = "a1" elementType = "H" >

< dc:description>

a non CML element child of atom

</ dc:description>

</ atom>

</ atomArray>

</ molecule>

</ cml>