array

<h:div class="summary">A homogenous 1 dimensional array of similar object.</h:div>
<h:div class="description">These can be encoded as strings (i.e. XSD-like datatypes) and are concatenated as string content. The size of the array should always be >= 1. The default delimiter is whitespace. The _normalize-space()_ function of XSLT could be used to normalize all whitespace to single spaces and this should not affect the value of the array elements. To extract the elements __java.lang.StringTokenizer__ could be used. If the elements themselves contain whitespace then a different delimiter must be used and is identified through the
  <h:tt>delimiter</h:tt>attribute. This method is mandatory if it is required to represent empty strings. If a delimiter is used it MUST start and end the array - leading and trailing whitespace is ignored. Thus
  <h:tt>size+1</h:tt>occurrences of the delimiter character are required. If non-normalized whitespace is to be encoded (e.g. newlines, tabs, etc) you are recommended to translate it character-wise to XML character entities.
  <h:p>Note that normal Schema validation tools cannot validate the elements of
    <h:b>array</h:b>(they are defined as
    <h:tt>string</h:tt>) However if the string is split, a temporary schema can be constructed from the type and used for validation. Also the type can be contained in a dictionary and software could decide to retrieve this and use it for validation.</h:p>
  <h:p>When the elements of the
    <h:tt>array</h:tt>are not simple scalars (e.g.
    <h:a href="el.scalar">scalar</h:a>s with a value and an error, the
    <h:tt>scalar</h:tt>s should be used as the elements. Although this is verbose, it is simple to understand. If there is a demand for more compact representations, it will be possible to define the syntax in a later version.</h:p>
</h:div>
<h:div class="example" href="array1.xml">
  <h:p>the
    <h:tt>size</h:tt>attribute is not mandatory but provides a useful validity check):</h:p>
</h:div>

Element Information

Model

Attributes

QName Type Fixed Default Use Inheritable Annotation
constantToSI xsd:double optional
<h:div class="summary">Additive constant to generate SI equivalent.</h:div>
<h:div class="description">The amount to add to a quantity in non-SI units to convert its representation to SI Units. This is applied *after* multiplierToSI. It is necessarily zero for SI units.</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"/>
dataType dataTypeType optional
<h:div class="summary">The data type of the object.</h:div>
<h:div class="description">Normally applied to scalar/array objects but may extend to more complex one.</h:div>
delimiter delimiterType optional
<h:div class="summary">A delimiter character for arrays and matrices.</h:div>
<h:div class="description">By default array components ('elements' in the non-XML sense) are whitespace-separated. This fails for components with embedded whitespace or missing completely:
  <h:pre>Example: In the protein database ' CA' and 'CA' are different atom types, and and array could be: <array delimiter="/" dictRef="pdb:atomTypes">/ N/ CA/CA/ N/</array></h:pre>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.</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"/>
end xsd:string optional
<h:div class="summary">The end value.</h:div>
<h:div class="description">The end value in any allowable XSD representation of data.</h:div>
errorBasis errorBasisType optional
<h:div class="summary">Basis of the error estimate.</h:div>
<h:div class="description"/>
errorValueArray errorValueArrayType optional
<h:div class="summary">Array of error values.</h:div>
<h:div class="description">Reports the author's estimate of the error in an array of values. Only meaningful for dataTypes mapping to real number.</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>
maxValueArray floatArrayType optional
<h:div class="summary">Maximum values for numeric _matrix_ or _array.</h:div>
<h:div class="description">A whitespace-separated list of the same length as the array in the parent element.</h:div>
minValueArray floatArrayType optional
<h:div class="summary">Minimum values for numeric _matrix_ or _array.</h:div>
<h:div class="description">A whitespace-separated lists of the same length as the array in the parent element.</h:div>
multiplierToSI xsd:double optional
<h:div class="summary">Multiplier to generate SI equivalent.</h:div>
<h:div class="description">The factor by which the non-SI unit should be multiplied to convert a quantity to its representation in SI Units. This is applied *before* _constantToSI_. Necessarily unity for SI unit.</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"/>
size sizeType optional
<h:div class="summary">The size of an array or matrix.</h:div>
start xsd:string optional
<h:div class="summary">The start value.</h:div>
<h:div class="description">The start value in any allowable XSD representation</h:div>
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"/>
unitType xsd:string optional
<h:div class="summary">A reference to the type of a unit.</h:div>
<h:div class="description">Used in defining the unit and doing symbolic algebra on the dimensionality.</h:div>
units unitsType optional
<h:div class="summary">Scientific units on an element.</h:div>
<h: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.</h:div>
Wildcard: ANY attribute from ANY namespace OTHER than 'http://www.xml-cml.org/schema'

Source

<xsd:element name="array" id="el.array" substitutionGroup="anyCml">
  <xsd:annotation>
    <xsd:documentation>
      <h:div class="summary">A homogenous 1 dimensional array of similar object.</h:div>
      <h:div class="description">These can be encoded as strings (i.e. XSD-like datatypes) and are concatenated as string content. The size of the array should always be >= 1. The default delimiter is whitespace. The _normalize-space()_ function of XSLT could be used to normalize all whitespace to single spaces and this should not affect the value of the array elements. To extract the elements __java.lang.StringTokenizer__ could be used. If the elements themselves contain whitespace then a different delimiter must be used and is identified through the
        <h:tt>delimiter</h:tt>attribute. This method is mandatory if it is required to represent empty strings. If a delimiter is used it MUST start and end the array - leading and trailing whitespace is ignored. Thus
        <h:tt>size+1</h:tt>occurrences of the delimiter character are required. If non-normalized whitespace is to be encoded (e.g. newlines, tabs, etc) you are recommended to translate it character-wise to XML character entities.
        <h:p>Note that normal Schema validation tools cannot validate the elements of
          <h:b>array</h:b>(they are defined as
          <h:tt>string</h:tt>) However if the string is split, a temporary schema can be constructed from the type and used for validation. Also the type can be contained in a dictionary and software could decide to retrieve this and use it for validation.</h:p>
        <h:p>When the elements of the
          <h:tt>array</h:tt>are not simple scalars (e.g.
          <h:a href="el.scalar">scalar</h:a>s with a value and an error, the
          <h:tt>scalar</h:tt>s should be used as the elements. Although this is verbose, it is simple to understand. If there is a demand for more compact representations, it will be possible to define the syntax in a later version.</h:p>
      </h:div>
      <h:div class="example" href="array1.xml">
        <h:p>the
          <h:tt>size</h:tt>attribute is not mandatory but provides a useful validity check):</h:p>
      </h:div>
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexType>
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attributeGroup ref="title"/>
        <xsd:attributeGroup ref="id"/>
        <xsd:attributeGroup ref="convention"/>
        <xsd:attributeGroup ref="dictRef"/>
        <xsd:attributeGroup ref="dataType"/>
        <xsd:attributeGroup ref="errorValueArray"/>
        <xsd:attributeGroup ref="errorBasis"/>
        <xsd:attributeGroup ref="minValueArray"/>
        <xsd:attributeGroup ref="maxValueArray"/>
        <xsd:attributeGroup ref="start"/>
        <xsd:attributeGroup ref="end"/>
        <xsd:attributeGroup ref="units"/>
        <xsd:attributeGroup ref="delimiter"/>
        <xsd:attributeGroup ref="size"/>
        <xsd:attributeGroup ref="ref"/>
        <xsd:attributeGroup ref="constantToSI">
          <xsd:annotation>
            <xsd:documentation>
              <h:div class="specific">Alternative to units</h:div>
              <h:div class="description">Must be used in conjunction with unitType</h:div>
              <h:div class="curation">2005-10-26: added</h:div>
            </xsd:documentation>
          </xsd:annotation>
        </xsd:attributeGroup>
        <xsd:attributeGroup ref="multiplierToSI">
          <xsd:annotation>
            <xsd:documentation>
              <h:div class="specific">Alternative to units</h:div>
              <h:div class="description">Must be used in conjunction with unitType</h:div>
              <h:div class="curation">2005-10-26: added</h:div>
            </xsd:documentation>
          </xsd:annotation>
        </xsd:attributeGroup>
        <xsd:attributeGroup ref="unitType">
          <xsd:annotation>
            <xsd:documentation>
              <h:div class="specific">Alternative to units</h:div>
              <h:div class="description">Must be used in conjunction with multiplierToSI and/or constantToSI</h:div>
              <h:div class="curation">2005-10-26: added</h:div>
            </xsd:documentation>
          </xsd:annotation>
        </xsd:attributeGroup>
        <xsd:anyAttribute namespace="##other" processContents="lax"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
</xsd:element>

Sample