<descr><p>This is an abstract interface containing functionality required by MathML elements
that may contain arbitrarily many child elements. No elements are directly supported by this interface;
all instances are instances of either <intref ref="dom_PresentationContainer"><kw>MathMLPresentationContainer</kw></intref>, <intref ref="dom_ContentContainer"><kw>MathMLContentContainer</kw></intref>,
or <intref ref="dom_MathElement"><kw>MathMLMathElement</kw></intref>.
For instance, MathML-specific factory methods could be placed here, as could methods for creating MathML-specific <kw>Iterators</kw> or <kw>TreeWalkers</kw>.
However, this functionality is as yet undefined.</p><?generate-idl?>
<descr><p>Represents the number of <intref ref="contm_annotation"><kw role="element">annotation</kw></intref> or <intref ref="contm_annotation-xml"><kw role="element">annotation-xml</kw></intref> children of
the <kw role="element">semantics</kw> element, i.e. the number of alternate content forms
for this element.</p></descr>
</attribute>
<method name='getAnnotation'>
<descr><p>This method gives access to the <kw>index</kw>-th
<quote>alternate</quote> content associated with a <kw role="element">
<descr><p>The one-based index of the annotation being
retrieved.</p></descr>
</param>
</parameters>
<returns type='MathMLElement'>
<descr><p>The <intref ref="dom_AnnotationElement"><kw>MathMLAnnotationElement</kw></intref> or
<intref ref="dom_XMLAnnotationElement"><kw>MathMLXMLAnnotationElement</kw></intref> representing the <kw>index</kw>-th
<intref ref="contm_annotation"><kw role="element">annotation</kw></intref> or <intref ref="contm_annotation-xml"><kw role="element">annotation-xml</kw></intref>
child of the <kw role="element">semantics</kw> element. Note that all child
elements of a <kw role="element">semantics</kw> element other than the first
are required to be of one of these types.</p></descr></returns>
<raises>
</raises>
</method>
<method name='insertAnnotation'>
<descr><p>This method inserts <kw>newAnnotation</kw> before
the current <kw>index</kw>-th <quote>alternate</quote> content associated
with a <kw role="element">semantics</kw> element. If <kw>index</kw> is 0,
<kw>newAnnotation</kw> is appended as the last <kw role="element">annotation</kw> or <kw role="element">annotation-xml</kw> child of this element.</p></descr>
element that is to be set as the <kw>colIndex</kw>-th <emph>pre-superscript</emph> child of this element.</p></descr>
</param>
</parameters>
<returns type='MathMLElement'>
<descr><p>The <kw>MathMLElement</kw> child of this
element that represents the new <emph>pre-superscript</emph> in the DOM.</p></descr></returns>
<raises>
<exception name='DOMException'>
<descr><p>HIERARCHY_REQUEST_ERR: Raised if <kw>newScript</kw> represents
an element that cannot be a <emph>pre-superscript</emph>.</p>
<p>INDEX_SIZE_ERR: Raised if <kw>colIndex</kw> is greater
than one more than the number of <emph>pre-scripts</emph> of the element.</p></descr></exception>
</raises>
</method>
<method name='insertSuperScriptBefore'>
<descr><p>A convenience method to insert a <emph>superscript</emph> before the position referenced by column index. If
<kw>colIndex</kw> is 0, the new <emph>superscript</emph> is appended
as the last <emph>superscript</emph> of the <kw role="element">mmultiscripts</kw> element; if colIndex is 1, a new <emph>superscript</emph> is prepended
at the far left. Note that inserting a new <emph>superscript</emph> will
cause the insertion of an empty <emph>subscript</emph> in the same column.</p></descr>
of <kw>MathMLTableRowElements</kw> and <kw>MathMLLabeledRowElements</kw>
representing the rows of the table. This is a <emph>live</emph> object.</p></descr>
</attribute>
<method name='insertEmptyRow'>
<descr><p>A convenience method to insert a new (empty)
row (<intref ref="presm_mtr"><kw role="element">mtr</kw></intref>) in the table before the current <kw>index</kw>-th row. If <kw>index</kw> is less than 0, the new row is inserted
before the <kw>-index</kw>-th row counting up from the current last row; if
<kw>index</kw> is equal to the current number of rows, the new row is
appended as the last row.</p></descr>
<parameters>
<param name='index' type='long' attr='in'>
<descr><p>Position before which to insert the
new row, where 0 represents the first row. Negative numbers are used to
count backwards from the last row.</p></descr>
</param>
</parameters>
<returns type='MathMLTableRowElement'>
<descr><p>Returns the <intref ref="dom_TableRowElement"><kw>MathMLTableRowElement</kw></intref>
child of this <kw>MathMLTableElement</kw> that represents the new
<kw role="element">mtr</kw> element being inserted.</p></descr></returns>
<raises>
<exception name='DOMException'>
<descr><p>INDEX_SIZE_ERR: Raised if <kw>index</kw> is greater
than the current number of rows of this <kw role="element">mtable</kw>
element or less than minus this number.</p></descr></exception>
</raises>
</method>
<method name='insertEmptyLabeledRow'>
<descr><p>A convenience method to insert a new (empty)
labeled row (<intref ref="presm_mlabeledtr"><kw role="element">mlabeledtr</kw></intref>) in the table before the
current <kw>index</kw>-th row. If <kw>index</kw> is less than 0, the new row
is inserted before the <kw>-index</kw>-th row counting up from the current
last row; if <kw>index</kw> is equal to the current number of rows, the new
row is appended as the last row.</p></descr>
<parameters>
<param name='index' type='long' attr='in'>
<descr><p>Position before which to insert the
new row, where 0 represents the first row. Negative numbers are used to
count backwards from the last row.</p></descr>
</param>
</parameters>
<returns type='MathMLLabeledRowElement'>
<descr><p>Returns the <intref ref="dom_LabeledRowElement"><kw>MathMLLabeledRowElement</kw></intref> child of this <kw>MathMLTableElement</kw> representing the
<kw role="element">mtr</kw> element being inserted.</p></descr></returns>
<raises>
<exception name='DOMException'>
<descr><p>INDEX_SIZE_ERR: Raised if <kw>index</kw> is greater
than the current number of rows of this <kw role="element">mtable</kw>
element or less than minus this number.</p></descr></exception>
</raises>
</method>
<method name='getRow'>
<descr><p>A convenience method to retrieve the <kw>index</kw>-th row
from the table. If <kw>index</kw> is less than 0, the <kw>-index</kw>-th row
from the bottom of the table is retrieved. (So, for instance, if <kw>index</kw> is -2, the next-to-last row is retrieved.) If <kw>index</kw> is not
a valid value (i.e. is greater than or equal to the number of rows, or is
less than minus the number of rows), a <kw>null MathMLTableRowElement</kw> is
0 represents the first row. Negative numbers are used to count backwards
from the last row.</p></descr>
</param>
</parameters>
<returns type='MathMLTableRowElement'>
<descr><p>Returns the <kw>MathMLTableRowElement</kw>
representing the <kw>index</kw>-th row of the table.</p></descr></returns>
<raises>
</raises>
</method>
<method name='insertRow'>
<descr><p>A convenience method to insert the new row or
labeled row (<kw role="element">mtr</kw> or <kw role="element">mlabeledtr</kw>) represented by <kw>newRow</kw> in the table before the current <kw>index</kw>-th row. If <kw>index</kw> is equal to the current number of rows,
<kw>newRow</kw> is appended as the last row in the table. If <kw>index</kw>
is less than 0, the new row is inserted before the <kw>-index</kw>-th row
from the bottom of the table. (So, for instance, if <kw>index</kw> is -2,
the new row is inserted before the next-to-last current row.)</p></descr>
<parameters>
<param name='index' type='long' attr='in'>
<descr><p>Index before which to insert <kw>newRow</kw>, where 0 represents the first row. Negative numbers are used to count
<kw>MathMLLabeledRowElement</kw> representing the row to be inserted.</p></descr>
</param>
</parameters>
<returns type='MathMLTableRowElement'>
<descr><p>The <kw>MathMLTableRowElement</kw> or
<kw>MathMLLabeledRowElement</kw> child of this <kw>MathMLTableElement</kw> representing the <kw role="element">mtr</kw> element being inserted.</p></descr></returns>
<raises>
<exception name='DOMException'>
<descr><p>HIERARCHY_REQUEST_ERR: Raised if <kw>newRow</kw> is not a
<kw>MathMLTableRowElement</kw> or <kw>MathMLLabeledRowElement</kw>.</p>
<p>INDEX_SIZE_ERR: Raised if <kw>index</kw> is greater
than the current number of rows or less than minus the current number of
rows of this <kw role="element">mtable</kw> element.</p></descr></exception>
</raises>
</method>
<method name='setRow'>
<descr><p>A method to set the value of the row in the
table at the specified index to the <kw role="element">mtr</kw> or
<kw role="element">mlabeledtr</kw> represented by <kw>newRow</kw>. If <kw>index</kw> is less than 0, the <kw>-index</kw>-th row counting up from the
last is replaced by <kw>newRow</kw>; if <kw>index</kw> is one more than the
current number of rows, the new row is appended as the last row in the
table.</p></descr>
<parameters>
<param name='index' type='long' attr='in'>
<descr><p>Index of the row to be set to <kw>newRow</kw>, where 0 represents the first row. Negative numbers are used to
cell is to be inserted, where the first cell is numbered 0. If <kw>index</kw>
is equal to the current number of cells, the new cell is appended as the
last cell of the row. <emph>Note that the index will differ from the index
of the corresponding <kw>Node</kw> in the collection returned by <kw>Node::childNodes</kw> if this is a <kw>MathMLLabeledRowElement</kw>!</emph></p></descr>
</param>
</parameters>
<returns type='MathMLTableCellElement'>
<descr><p>Returns the <intref ref="dom_TableCellElement"><kw>MathMLTableCellElement</kw></intref>
representing the <intref ref="presm_mtd"><kw role="element">mtd</kw></intref> element being inserted.</p></descr></returns>
<raises>
<exception name='DOMException'>
<descr><p>INDEX_SIZE_ERR: Raised if <kw>index</kw> is greater
than the current number of cells of this <kw role="element">mtr</kw>
element.</p></descr></exception>
</raises>
</method>
<method name='insertCell'>
<descr><p>A convenience method to insert a new cell in
<descr><p>This is the interface from which the interfaces representing
the MathML Content token elements (<intref ref="contm_ci"><kw role="element">ci</kw></intref>, <intref ref="contm_cn"><kw role="element">cn</kw></intref> and
<intref ref="contm_csymbol"><kw role="element">csymbol</kw></intref>) are derived. These elements may contain MathML Presentation
elements, <kw>Text</kw> nodes, or a combination of both. Thus the <kw>getArgument</kw>
and <kw>insertArgument</kw> methods have been provided to deal with this
distinction between these elements and other MathML Content elements.