<semantics>

Em MathML há duas formas de marcar a matemática: A Presentation MathML  (MathML de apresentação) é utilizada para controlar a apresentação das equações, enquanto o Content MathML (MathML de conteúdo) foi concebida para codificar o significado matemático semântico e para tornar as expressões compreensíveis para os sistemas de álgebra computacionais. Os elementos MathML <semantics>, <annotation> e <annotation-xml> são utilizados para combinar a apresentação e a marcação do conteúdo e para fornecer ambas, a informação de disposição e o significado semântico das expressões matemáticas.

O elemento <semantics> atua como um elemento contentor que associa anotações e então deve ter elementos (senão levanta um erro de marcação inválido). O elemento <annotation> é o elemento contentor que contem informação semântica num formato não XML, enquanto o elemento <annotation-xml> contém conteúdo num formato XML, por exemplo, Content MathML ou OpenMath.

As regras para determinar o elemento filho visível no elemento <semantics> são as seguintes:

  • Se mais nenhuma regra se aplica: O primeiro elemento filho é apresentado por pré-definição, este é suposto ser notação de apresentação.
  • Se o primeiro filho é um elemento MathML de apresentação que não é <annotation> nem <annotation-xml>, é apresentado o primeiro filho.
  • Se não existem elementos MathML de apresentação, apresenta o primeiro elemento <annotation> ou <annotation-xml> que seja filho do <semantics>.
    Atenção que elementos de <annotation-xml> só são reconhecidos se o atributo de codificação tem um dos seguintes valores:
    • "application/mathml-presentation+xml"
    • "MathML-Presentation"
    • "SVG1.1"
    • "text/html"
    • "image/svg+xml"
    • "application/xml".
    Note que "application/mathml+xml" não é mencionado aqui, já que não distingue entre MathML de apresentação ou MathML de conteúdo.

Atributos

Os seguintes atributos podem ser adicionados aos elementos <annotation> e <annotation-xml>:

definitionURL
A localização do símbolo da chave da anotação.
encoding
A codificação da informação semântica na anotação (e.g. "MathML-Content", "MathML-Presentation", "application/openmath+xml", "image/png")
cd
O dicionário que ontem o símbolo da chave da anotação.
name
O nome do símbolo da chave da anotação.
src
A localização de uma fonte externa de informação semântica.

Exemplo

<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>

    <!-- anotar uma imagem -->
    <annotation encoding="image/png" src="some/path/formula.png"/>

    <!-- anotar TeX -->
    <annotation encoding="application/x-tex">
      x^{2} + y 
    </annotation> 
   
  </semantics>
</math>

Especificações

Especificação Estado Comentário
MathML 3.0
The definition of 'Mixing Markup Languages for Mathematical Expressions' in that specification.
Recommendation Especificação atual
MathML 2.0
The definition of 'Combining Presentation and Content Markup ' in that specification.
Recommendation Especificação inicial

Compatibilidade

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
semanticsChrome No support NoEdge No support NoFirefox Full support 1IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android Full support 4Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support No

Legend

Full support  
Full support
No support  
No support

Notas para Gecko

  • O algoritmo para determinar o elemento visível em <semantics> foi corrigido em (Firefox 23 / Thunderbird 23 / SeaMonkey 2.20) para ser conforme a especificação de MathML. Em versões anteriores o primeiro elemento era apresentado.
  • No Gecko, os elementos <annotation> e <annotation-xml> são ignorados se têm o atributo src.