MathML on matemaattisten objektien kuvauskieli. Päällisin puolin se muistuttaa paljon HTML-kieltä, mutta tarkempi tarkastelu antaa myös yhtäläisyyksiä TeX/Latex-kieliin. Kielellä kuvataankin kaavat samaan tyyliin kuin Latexilla, esimerkiksi x^2 olisi <mi>x</mi><msup><mn>2</mn></msup>. Erona Latexiin voidaankin pitää, että MathML pyrkii esittämään myös kaavan semanttisen puolen, toisin sanoen symboleille pyritään antamaan jokin merkitys. Latexillahan (periaatteessa) kaikki keinot ovat sallittuja, jotta lopputulos näyttäisi hyvälle. Kuitenkin jos tällaista koodia ryhdyttäisiin tulkitsemaan matemaattisena esityksenä jollekin asialle voisi lopputulos olla hyvin sekava.
MathML jakaantuu kahteen osaan: Presentation Markup (esitys) ja Content Markup (sisältö). Esityselementeillä kaava pyritään saamaan näkymään oikein kuvaruudulla, eikä sisällöllistä informaatiota ole juuri lainkaan. Sisältö-tageilla taas pyritään siihen, että matemaattinnen sisältö tulisi myös mukana.Content Markup mahdollistaa esimerkisi määrittelyn, jossa jotain operaattoria tai funktiota sovelletaan sen argumentteihin, sen sijaan että kirjoitettaisiin pelkästään f(x). Tarkoitus kuitenkin on, että molemmilla tavoilla saataisiin visuaalisesti sama tulos. Seuraavassa keskitytään enemmän tarkastelemaan esitys-elementtejä, sillä tällä hetkellä niille on enemmän tukea.
Kuten yllä olevasta esimerkistä jo näkyy, muistuttaa MathML-koodaus paljon myös HTML-koodausta. Elementin esitys on jo itsessään samankaltainen: <..>... </..>. Tämä ei olekaan sattumaa vaan molemmilla kielillä on sama kehittäjä, World Wide Web Consortium. Lisäksi ne kuuluvat joukkoon, jolla on taustalla laajempi sivunkuvauskieli SGML.
Edellä on tullut esille jo muutama elementti, joilla kaavat esitetään. Seuraavassa on lyhyt esitys tärkeimmistä. Mainittuna on vain tagin nimi, mutta jokaisen käyttö on sama eli <nimi>...</nimi>.
<msqrt>
<mrow> <mn>1</mn> <mo>+</mo> <msup> <mi>x</mi> <mn>2</mn> </msup> </mrow> </msqrt> |
![]() |
<mfrac>
<mrow> <mn>1</mn> <mo>+</mo> <mi>x</mi> <mo>+</mo> <mi>y</mi> </mrow> <mrow> <mn>2</mn> <mi>a</mi> </mrow> </mfrac> |
![]() |
<mrow>
<munderover> <mo>∑</mo> <mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>4</mn> </munderover> <msubsup> <mi>x</mi> <mi>n</mi> <mn>2</mn> </msubsup> </mrow> |
![]() |
Mikä onkaan sitten MathML:n tulevaisuus. Tarve ainakin on suuri, ja monet ohjelmistovalmistajat ovatkin luvanneet tukea, elleivät jo tue, MathML:ää tulevissa ohjelmistoversioissa: esim. Mapleen on tulossa tuki, samoin myös Mathematicaan. Toisaalta, Netscape ja Microsoft ovat ilmoittaneet, etteivät ainakaan heidän selaimiensa vitosversiot tue MathML:ää. Netscapen kohdalla on kuitenkin vielä toivoa, sille sen lähdekoodi on vapaasti levitettävissä, joten on hyvin mahdollista että Communicatoriin saadaan piakkoin MathML-tuki.