Učebnica

per aspera ad astra

Nástroje používateľa

Nástoje správy stránok


html:mathml

Mathematical Markup Language

Mathematical Markup Language (MathML, slovenský: matematický značkovací jazyk) je súčasťou dokumentov konzorcia W3C ako podmnožina jazyka XML pre zápis matematických a príbuzných vzorcov.

Špecifikácia verzie 1.01 bola uverejnenia v júli 1999 a vo februári 2001 sa objavila verzia 2.0. V novembri 2003 bolo zverejnené druhé vydanie MathML verzia 2.0a bola označená ako konečná verzia matematickej pracovnej skupiny konzorcia W3C.

MathML nepopisuje len grafickú prezentáciu, ale môže tiež uchovávať informácie o zmysle výrazu. Pre uchovávanie povedomia o jednotlivých častiach zapísaných vzorcov je vhodnejší koncept OpenMath, ktorý je navrhnutý pre uchovávanie sémantických informácií vo výrazoch a môže sa používať ako doplnok MathML.

MathML bolo navrhnuté s niekoľkými základnými cieľmi:

  • možnosť konvertovať existujúce dokumenty do MathML (najčastejšie TeX a ISO 12083)
  • možnosť pripojiť MathML k HTML a interpretovať ho prehliadačmi (toho bolo dosiahnute vďaka odvodeniu z XML)
  • možnosť získania vzorca zo zdrojového zápisu, ktorý môže byť určeným programom interpretovaný a vyhodnotený.

Prezentácia MathML je do značnej miery založená na štýloch. Vďaka ním je síce možné zobraziť MathML v prehliadači, ale je potrebné rozšíriť schopnosti prehliadačov pomocou elementov pre zobrazenie MathML. Sám jazyk MathML však prostredníctvom elementov a atribútov popisuje druh obsahu (číslo, premennú, operátor…) a, v podstate, i požadovaný vzhľad, pretože väčšina matematických konštrukcií má kodifikované určité grafické spodobnenie.

Príklad

Ako príklad na vysvetlenie použijeme informácie z angickej wikipédie pre MathML.

Najjednoduchší príklad je asi vzorec:

V jazyku MathML zapíšeme následovne:

  <mrow>
     a &InvisibleTimes; <msup>x 2</msup>
     + b &InvisibleTimes; x
     + c
  </mrow>

V kóde si môžete všimnúť kľúčové slovo &InvisibleTimes;, ktoré v podstate znamená “neviditeľný krát”, teda násobenie, kde sa “bodka” nezobrazuje.

Toto najjednoduchšie zobrazenie nie je úplne presné a správne, chýbaju párové značky označujúce identifikátor (mi), operátor (mo) a číslo (mn)

  <mrow>
      <mi>a</mi> <mo>&InvisibleTimes;</mo> <msup><mi>x</mi><mn>2</mn></msup>
      <mo>+</mo><mi>b</mi><mo>&InvisibleTimes;</mo><mi>x</mi>
      <mo>+</mo><mi>c</mi>
   </mrow>

V predchádzajúcom príklade máme zapísaný vzorec už správne. Ale je vytrhnutý z kontextu, teda zo súboru. Valídny XML súbor musí obsahovať XML deklaráciu na začiatku súboru a pod ňou deklaráciu DOCTYPE.

mathml.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<html>
  <body>
 
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <mrow>
        <mi>a</mi>
        <mo>&InvisibleTimes;</mo>
        <msup>
          <mi>x</mi>
          <mn>2</mn>
        </msup>
        <mo>+</mo>
        <mi>b</mi>
        <mo>&InvisibleTimes; </mo>
        <mi>x</mi>
        <mo>+</mo>
        <mi>c</mi>
      </mrow>
    </math>
 
  </body>
</html>

Okrem XML je samozrejme MathML použiteľné aj s novým štandardom HTML5. V takomto prípade sa zmení niekoľko riadkov. Dokážete indetifikovať, ktoré?

mathml.html
<!DOCTYPE html>
<html>
 
  <body>
    <math>
      <mrow>
        <mi>a</mi>
        <mo>&InvisibleTimes;</mo>
        <msup>
          <mi>x</mi>
          <mn>2</mn>
        </msup>
        <mo>+</mo>
        <mi>b</mi>
        <mo>&InvisibleTimes; </mo>
        <mi>x</mi>
        <mo>+</mo>
        <mi>c</mi>
      </mrow>
    </math>
  </body>
 
</html>

Základní popis MathML

MathML je založený na XML, preto si pri tvorbe matematických vzorcov vystačíte len s textovým editorom a vhodným prehliadačom. Štruktúra MathML je tvorená, rovnako ako v prípade XML, elementami, atribútmi a entitami pre zápis zvláštnych znakov. MathML prvky je možné rozdeliť do niekoľkých kategórií:

  • prezentačné prvky - popisujú štruktúru vzorca (horný index, dolný index)
  • významové prvky - priamo popisujú matematický objekt (napríklad “plus” alebo “vector”)
  • prvky rozhrania - sú tie, ktoré slúžia k zapojeniu MathML do dokumentu HTML, XML a ďalších

V niekoľkých následujúcich tabuľkách je výber z prezentačných prvkov MathML:

Prvky
<mtext> uzatvára v sebe normálny text
<mspace/> medzera (ekvivalent &nbsp; v (X)HTML)
<mi> uzatvára identifikátory (premenné)
<mn> uzatvára čísla
<mo> uzatvára operátory (+, -, /, *) a zátvorky
Tabuľky
<mtable> vyhradzuje obsah tabuľky
<mrow> riadok tabuľky
<mtd> bunka tabuľky
Poloha prvkov
<msub> dolný index
<sup> horný index
<msubsup> pridá dolný i horný index presne nad sebou
<munder> obsah pod vybraným prvkom
<mover> obsah nad vybraným prvkom
<munderover> obsah pod i nad prvkom
Schémy
<mfrac> element označujúci zlomok
<mrow> horizontálna skupina prvkov
<msqrt> druhá odmocnina
<mroot> obecná odmocnina

Sémantické MathML

XML dokument možno rozdeliť na:

  • časť obsahovú (vlastné XML) a
  • časť udávajúci formu (CSS alebo iný jazyk).

V MathML je to podobne, ovšak s tým, že obsahová časť sa delí na:

  • prezentačný MathML, ktorý slúží na vizualizáciu vzorca pre „ľudské“ potreby, a
  • sémantické MathML, ktoré slúži strojom.

Sémantické 1) MathML je určené pre matematické aplikácie pri ktorých sa predpokladá, že vzorec bude pochopený a vyhodnotený. Sémantické MathML popisuje presne inštrukcie typu „aplikuj súčet na čísla 2 a 3, výsledok vydeľ 4 a odčítaj od neho 5“.

Rozdiel medzi prezentačným a sémantickým MathML by se dal prirovnať k zápisu vzorca na papier (prezentácia) a na kalkulačke (sémantika), i keď to nie je najlepšie prirovnanie. Sémantické MathML sa od prezentačného líši syntaxou i významom.

Nelepšíe je uviesť príklad. Máme následujúci vzorec:

Zápis vzorca (2-x)/3 pomocou prezentačného MathML:

  <math xmlns="http://www.w3.org/1998/Math/MathML">
  <mfrac>
  	<mn>2<mo>-</mo><mi>x</mi></mn>
	<mn>3</mn>
  </mfrac>
  </math>

Zápis vzorca (2-x)/3 pomocou sémantického MathML:

  <apply>
	<divide />
		<apply>
			<plus />
			<cn>2</cn>
			<ci>x</ci>
		</apply>
	<cn>3</cn>
  </apply>

Základným kameňom sémantického MathML je element <apply>, v ktorom sú vnorené operátory (<plus />, <minus />, <divide />), ktoré určujú, ako sa má zaobchádzať s nasledujúcimi číslami a identifikátormi. Takto zapísaný vzorec se podobá stromu, ktorý sa vetví prostredníctvom elementov <apply>. Významové MathML je tvorené desiatkami prvkov s nespočetnými atribútmi (každá matematická funkcia - sin, cos, abs a ďalšie – majú svoju vlastnú značku).

1)
v informatike: pravidlá pre význam prípustných kombinácií symbolov
html/mathml.txt · Posledná úprava: 2016/07/28 16:07 (externá úprava)