In MathML there are two ways to mark up mathematics: *Presentation* MathML is used to control the layout of equations, whereas *Content* MathML is designed to encode the semantic mathematical meaning and to make expressions understandable to computer algebra systems. The MathML elements `<semantics>`

, `<annotation>`

and `<annotation-xml>`

are used to combine presentation and content markup and to provide both, layout information and semantic meaning of mathematical expressions.

The `<semantics>`

element acts as a container element associating annotations and must have child elements (it will raise an *invalid markup *error otherwise). The `<annotation>`

element is the container element containing semantic information in a non-XML format, whereas the `<annotation-xml>`

element contains content in an XML format, e.g. Content MathML or OpenMath.

The rules of determining the visible child in a `<semantics>`

element are the following:

- If no rule other rule applies: By default only the first child is rendered, which is supposed to be presentation markup.
- If the first child is a presentation MathML element other than
`<annotation>`

or`<annotation-xml>`

, render the first child. - If no Presentation MathML is found, render the first
`<annotation>`

or`<annotation-xml>`

child element of`<semantics>`

.

Beware that`<annotation-xml>`

elements are only recognized, if the encoding attribute is set to one of the following:`"application/mathml-presentation+xml`

"`"MathML-Presentation`

"`"SVG1.1`

"`"text/html"`

`"image/svg+xml"`

`"application/xml`

".

*not*mentioned here as it does not distinguish between Content or Presentation MathML.

## Attributes

The following attributes can be set on `<annotation>`

and `<annotation-xml>`

:

- definitionURL
- The location of the annotation key symbol.
- encoding
- The encoding of the semantic information in the annotation (e.g. "MathML-Content", "MathML-Presentation", "application/openmath+xml", "image/png")
- cd
- The content dictionary that contains the annotation key symbol.
- name
- The name of the annotation key symbol.
- src
- The location of an external source for semantic information.

## Example

<math> <semantics> <!-- Presentation MathML --> <mrow> <msup> <mi>x</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>y</mi> </mrow> <!-- Content MathML --> <annotation-xml encoding="MathML-Content"> <apply> <plus/> <apply> <power/> <ci>x</ci> <cn type="integer">2</cn> </apply> <ci>y</ci> </apply> </annotation-xml> <!-- annotate an image --> <annotation encoding="image/png" src="some/path/formula.png"/> <!-- annotate TeX --> <annotation encoding="application/x-tex"> x^{2} + y </annotation> </semantics> </math>

## Browser compatibility

Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|

Basic support | Not supported | 1.0 (1.7 or earlier) | Not supported | Not supported | Not supported |

Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|

Basic support | Not supported | Not supported | 1.0 (1.9.2) | Not supported | Not supported | Not supported |

### Gecko-specific notes

- The algorithm of determining the visible child in
`<semantics>`

has been corrected in (Firefox 23 / Thunderbird 23 / SeaMonkey 2.20) to match the MathML specification. In prior versions the first child element has been rendered. - In Gecko
`<annotation>`

and`<annotation-xml>`

elements are ignored if the`src`

attribute is set.

## Specifications

Specification | Status | Comment |
---|---|---|

MathML 3.0 The definition of 'Mixing Markup Languages for Mathematical Expressions' in that specification. |
Recommendation | Current specification |

MathML 2.0 The definition of 'Combining Presentation and Content Markup ' in that specification. |
Recommendation | Initial specification |

## Document Tags and Contributors

**Last updated by:**Sheppy,