table

<h:div class="summary">A rectangular table of any quantities.</h:div>
<h:div class="description">
  <h:p>By default
    <h:tt>table</h:tt>represents a rectangular table of any simple quantities representable as XSD or CML dataTypes. There are three layouts, columnwise, rowwise and without markup. In all cases it is essential that the columns, whether explicit or otherwise, are homogeneous within the column. Also the metadata for each column must be given explicitly.
    <h:ul>
      <h:li>columns: There is a single
        <h:a href="el.arrayList">arrayList</h:a>child containing (homogeneous) child elements (
        <h:a href="el.array">array</h:a>or
        <h:a href="el.list">list</h:a>of size
        <h:tt>rows</h:tt>data. This is the "normal" orientation of data tables but the table display could be transposed by XSLT transformation if required. Access is to columns, and thence to the data within them. DataTyping, delimiters, etc are delegated to the arrays or lists, which must all be of the same size.</h:li>
      <h:li>rows: with explicit
        <h:tt>trow</h:tt>s. The metadata is carried in a
        <h:tt>theader</h:tt>element of size
        <h:tt>cols</h:tt>. Within each trow the data are contained in tcells</h:li>
      <h:li>content: The metadata is carried in a
        <h:tt>theader</h:tt>element of size
        <h:tt>cols</h:tt>. data are contained in a single
        <h:tt>tableContent</h:tt>with columns moving fastest. Within the content the data are whitespace (or delimiter) separated.</h:li>
    </h:ul>For verification it is recommended that tables carry
    <h:tt>rows</h:tt>and
    <h:tt>columns</h:tt>attributes. The type of the tables should also be carried in a
    <h:tt>tableType</h:tt>attribute></h:p>
</h:div>
<h:div>Validity contraints (XPath expression in table context)
  <h:table>
    <h:tr>
      <h:th>type</h:th>
      <h:th>@tableType</h:th>
      <h:th>@rows</h:th>
      <h:th>actual rowCount</h:th>
      <h:th>@columns</h:th>
      <h:th>actual columnCount</h:th>
      <h:th>tableHeader</h:th>
      <h:th>arrayList</h:th>
      <h:th>tableRowList</h:th>
      <h:th>tableContent</h:th>
    </h:tr>
    <h:tr>
      <h:td>column based</h:td>
      <h:td>columnBased</h:td>
      <h:td>recommended</h:td>
      <h:td>./arrayList/@size or arrayList/*[self::array or self::list]/@size</h:td>
      <h:td>optional</h:td>
      <h:td>./arrayList/@size or count(arrayList/*[self::array or self::list])</h:td>
      <h:td>forbidden</h:td>
      <h:td>required</h:td>
      <h:td>forbidden</h:td>
      <h:td>forbidden</h:td>
    </h:tr>
    <h:tr>
      <h:td>row based</h:td>
      <h:td>rowBased</h:td>
      <h:td>recommended</h:td>
      <h:td>./tableRowList/@size or count(tableRowList/tableRow)</h:td>
      <h:td>recommended</h:td>
      <h:td>count(tableHeader/tableHeaderCell) or count(tableRowList/tableRow/tableCell)</h:td>
      <h:td>required</h:td>
      <h:td>forbidden</h:td>
      <h:td>required</h:td>
      <h:td>forbidden</h:td>
    </h:tr>
    <h:tr>
      <h:td>content based</h:td>
      <h:td>contentBased</h:td>
      <h:td>required</h:td>
      <h:td>only by analysing tde table</h:td>
      <h:td>recommended</h:td>
      <h:td>count(tableHeader/tableHeaderCell)</h:td>
      <h:td>required</h:td>
      <h:td>forbidden</h:td>
      <h:td>forbidden</h:td>
      <h:td>required</h:td>
    </h:tr>
  </h:table>
</h:div>
<h:div class="example" href="table1.xml"/>
<h:div class="example" href="table2.xml"/>
<h:div class="example" href="table3.xml"/>

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
columns sizeType optional
<h:div class="summary">Number of columns.</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"/>
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"/>
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>
rows sizeType optional
<h:div class="summary">Number of rows.</h:div>
tableType tableTypeType optional
<h:div class="summary">type of table.</h:div>
<h:div class="description">controls content</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"/>
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="table" id="el.table" substitutionGroup="anyCml">
  <xsd:annotation>
    <xsd:documentation>
      <h:div class="summary">A rectangular table of any quantities.</h:div>
      <h:div class="description">
        <h:p>By default
          <h:tt>table</h:tt>represents a rectangular table of any simple quantities representable as XSD or CML dataTypes. There are three layouts, columnwise, rowwise and without markup. In all cases it is essential that the columns, whether explicit or otherwise, are homogeneous within the column. Also the metadata for each column must be given explicitly.
          <h:ul>
            <h:li>columns: There is a single
              <h:a href="el.arrayList">arrayList</h:a>child containing (homogeneous) child elements (
              <h:a href="el.array">array</h:a>or
              <h:a href="el.list">list</h:a>of size
              <h:tt>rows</h:tt>data. This is the "normal" orientation of data tables but the table display could be transposed by XSLT transformation if required. Access is to columns, and thence to the data within them. DataTyping, delimiters, etc are delegated to the arrays or lists, which must all be of the same size.</h:li>
            <h:li>rows: with explicit
              <h:tt>trow</h:tt>s. The metadata is carried in a
              <h:tt>theader</h:tt>element of size
              <h:tt>cols</h:tt>. Within each trow the data are contained in tcells</h:li>
            <h:li>content: The metadata is carried in a
              <h:tt>theader</h:tt>element of size
              <h:tt>cols</h:tt>. data are contained in a single
              <h:tt>tableContent</h:tt>with columns moving fastest. Within the content the data are whitespace (or delimiter) separated.</h:li>
          </h:ul>For verification it is recommended that tables carry
          <h:tt>rows</h:tt>and
          <h:tt>columns</h:tt>attributes. The type of the tables should also be carried in a
          <h:tt>tableType</h:tt>attribute></h:p>
      </h:div>
      <h:div>Validity contraints (XPath expression in table context)
        <h:table>
          <h:tr>
            <h:th>type</h:th>
            <h:th>@tableType</h:th>
            <h:th>@rows</h:th>
            <h:th>actual rowCount</h:th>
            <h:th>@columns</h:th>
            <h:th>actual columnCount</h:th>
            <h:th>tableHeader</h:th>
            <h:th>arrayList</h:th>
            <h:th>tableRowList</h:th>
            <h:th>tableContent</h:th>
          </h:tr>
          <h:tr>
            <h:td>column based</h:td>
            <h:td>columnBased</h:td>
            <h:td>recommended</h:td>
            <h:td>./arrayList/@size or arrayList/*[self::array or self::list]/@size</h:td>
            <h:td>optional</h:td>
            <h:td>./arrayList/@size or count(arrayList/*[self::array or self::list])</h:td>
            <h:td>forbidden</h:td>
            <h:td>required</h:td>
            <h:td>forbidden</h:td>
            <h:td>forbidden</h:td>
          </h:tr>
          <h:tr>
            <h:td>row based</h:td>
            <h:td>rowBased</h:td>
            <h:td>recommended</h:td>
            <h:td>./tableRowList/@size or count(tableRowList/tableRow)</h:td>
            <h:td>recommended</h:td>
            <h:td>count(tableHeader/tableHeaderCell) or count(tableRowList/tableRow/tableCell)</h:td>
            <h:td>required</h:td>
            <h:td>forbidden</h:td>
            <h:td>required</h:td>
            <h:td>forbidden</h:td>
          </h:tr>
          <h:tr>
            <h:td>content based</h:td>
            <h:td>contentBased</h:td>
            <h:td>required</h:td>
            <h:td>only by analysing tde table</h:td>
            <h:td>recommended</h:td>
            <h:td>count(tableHeader/tableHeaderCell)</h:td>
            <h:td>required</h:td>
            <h:td>forbidden</h:td>
            <h:td>forbidden</h:td>
            <h:td>required</h:td>
          </h:tr>
        </h:table>
      </h:div>
      <h:div class="example" href="table1.xml"/>
      <h:div class="example" href="table2.xml"/>
      <h:div class="example" href="table3.xml"/>
    </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="rows"/>
    <xsd:attributeGroup ref="columns"/>
    <xsd:attributeGroup ref="units"/>
    <xsd:attributeGroup ref="tableType"/>
    <xsd:attributeGroup ref="title"/>
    <xsd:attributeGroup ref="id"/>
    <xsd:attributeGroup ref="convention"/>
    <xsd:attributeGroup ref="dictRef"/>
    <xsd:anyAttribute namespace="##other" processContents="lax"/>
  </xsd:complexType>
</xsd:element>

Sample