logo
SVG
MathML
X3D
Velkommen > Moduler > Noen XML-språk >MathML
../../common/gfx/prev.gif ../../common/gfx/home.gif ../../common/gfx/next.gif

MathML

Hva:
Noen demonstrasjoner av MathML, Matematical Markup Language

Merk at MathML er designet for å dekke to formål, markup for strukturering av matematiske uttrykk og markup for presentasjon av matematiske uttrykk. I denne modulen tar bare hensyn til den andre egenskapen: Hvordan få presentert matematiske uttrykk på en vevside.

Det har vært et problem å framstille matematiske uttrykk på vevsider. En måte å løse dette på er som følger:

  1. Åpne MS Word og lag et nytt dokument
  2. Sett inn et objekt av type MS Equation Editor på siden
  3. Rediger formelen ved hjelp av Equation Editor
  4. Spar dokumetet som html, formelen blir lagret som gif i en subkatalog som kalles images.
  5. Plukk opp det riktige bildet og lim det inn i vevsiden
... og vi kan få Taylors formel slik: taylor

Dette er ikke noen god løsning. Dels gjør vi oss avhengig av MS Equation editor, dels er det stor sannsynlighet for at dokumentet med tilhørende formler forsvinner, dels har vi ingen mulighet til å endre stil eller størrelse av noe slag når bildet først er laget og dels tar slike bilder av formler stor plass.

Enkle uttrykk som involverer eksponenter og indekser kan vi få til i vanlig HTML, ved hjelp av elementene <sup> og <sub>. F.eks slik:

X2+Y2=R2
   X<sup>2</sup>+Y<sup>2</sup>=R<sup>2</sup>
Y:{w1,v3,}
   Y:{w<sub>1</sub>,v<sub>3</sub>}

Dette gir oss alt for lite spillerom til å formulere matematisk uttrykk.


MathML gjør det mulig for oss å editere matematikken direkt på siden eller vi kan bruke en WYSIWYG editor som i motseting til MS Equation Editor genererer åpen XML-kode.

I dag er det slik at Mozilla skal kunne vise fram sider med MathML-innhold uten noen Plugin. MSIE fordrer en Plugin. Amaya kan vise (og editere) rene MathML-sider uten Plugin. Opera er ikke særlig glad i MathML i det hele tatt(?). Nedenfor skal vi se på et svært enkelt matematisk uttrykk preparert for de tre nettleserne:

MS Internet Explorer

Jeg bruker en plugin, MathPlayer, fra Design Science: www.dessci.com. En typisk HTML-side for MSIE kan da se slik ut:

<?xml version="1.0"?>

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:m="http://www.w3.org/1998/Math/MathML" >  
<head>
   <OBJECT ID="MathPlayer"
      CLASSID="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">
   </OBJECT>
   <?IMPORT NAMESPACE="m" IMPLEMENTATION="#MathPlayer" ?>
</head>

<body>
<p>Et uttrykk skrevet i MathML</p>
<p style="font-size:25px;color:red">
<m:math>
  <m:msup>
    <m:mi>r</m:mi>
    <m:mn>2</m:mn>
  </m:msup>
  <m:mo>=</m:mo>
  <m:msup>
    <m:mi>x</m:mi>
    <m:mn>2</m:mn>
  </m:msup>
  <m:mo>+</m:mo>
  <m:msup>
    <m:mi>y</m:mi>
    <m:mn>2</m:mn>
  </m:msup>
</m:math>
</p>
</body>
</html>

Forutsatt at du har installert mathPlayer:

Vi ser her en ganske spesiell konstruksjon. Vi finner et objekt som har ID=MathPlayer og så koples namespace m til dette objektet. Det er lett å se at dette gir en logisk kopling mellom de aktuelle elementene og den programkoden (plug-in) som skal tolke dem, men det er en uvanlig løsning.

Mozilla

Mozilla skal greie seg uten Plugin. Den samme siden preparert for Mozilla kan se slik ut:

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
               "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" 
[
  <!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
]>  
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>MathML-1</title> 
</head>
<body>
<p>Et uttrykk skrevet i MathML</p>
<p style="font-size:25px;color:red">
<math xmlns="&mathml;">
  <msup>
    <mi>r</mi>
    <mn>2</mn>
  </msup>
  <mo>=</mo>
  <msup>
    <mi>x</mi>
    <mn>2</mn>
  </msup>
  <mo>+</mo>
  <msup>
    <mi>y</mi>
    <mn>2</mn>
  </msup>
</math>
</p>
</body>
</html>

Amaya

Amaya innholder både en enkle MathML-editor og en framviser. Filene lagres som rene mml-filer. En slik fil kan se slik ut:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
      "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">
<!-- Created by amaya 8.7, see http://www.w3.org/Amaya/ -->
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <msup>
    <mi>r</mi>
    <mn>2</mn>
  </msup>
  <mo>=</mo>
  <msup>
    <mi>x</mi>
    <mn>2</mn>
  </msup>
  <mo>+</mo>
  <msup>
    <mi>y</mi>
    <mn>2</mn>
  </msup>
</math>

Et eksperiment

Ta for deg fila som er laget for Mozilla og åpne den i MSIE:

Hvis du har installert MathPlayer skal du se sida her også. Se på kildekoden til den siden du åpner. MSIE har tydeligvis funnet ut hva slags innhold vi har og modifisert fila i nettleseren. Summen av dette er altså at vi kan lage filer for Mozilla, og håpe at de vises både i Mozilla og MSIE, dersom du har installert MathPlayer i sistnevnte.


.

Eksempel 1

Vi lager en enkel kvadratrot med summen av to kvadrater. Merk at det er koplet til et enkelt stilsett som gjør matematikken blå:

<math xmlns="">
   <mi>r</mi>
   <mo>=</mo>
   <msqrt>
      <mrow>
         <mo>(</mo>
         <msup>
            <mi>x</mi>
            <mn>2</mn>
         </msup>
         <mo>+</mo>
         <msup>
            <mi>y</mi>
            <mn>2</mn>
         </msup>
         <mo>)</mo>
      </mrow>
   </msqrt>
</math>
math introduserer det matematiske uttrykket
mi identifier
mn tall
mo operator, parentes eller separator
msqrt et rottegn med innhold
mrow ordner innholdet horisontalt, en rad
msup eksponesiering, superscript
.

Eksempel 2

Vi lager en 3X3 matrise (som framstiller en rotasjonstransformasjon i planet).

<math xmlns="">
<mrow>
  <mi>R</mi>
  <mo>=</mo>
  <mfenced open="[" close="]">
    <mtable>
      <mtr>
         <mtd>
            <mi>-cos</mi>
            <mo>
            (</mo>
            <mi>v</mi><mo>)
            </mo>
         </mtd>
         <mtd>
            <mi>sin</mi>
            <mo>
            (</mo><mi>v</mi><mo>)
            </mo>
         </mtd>
         <mtd>
            <mi>0</mi>
         </mtd>
      </mtr>
      <mtr>
         <mtd>
            <mi>sin</mi>
            <mo>
            (</mo><mi>v</mi><mo>)
            </mo>
         </mtd>
         <mtd>
            <mi>cos</mi>
            <mo>(</mo><mi>v</mi><mo>)
            </mo>
         </mtd>
         <mtd>
            <mi>0</mi>
         </mtd>
      </mtr>
      <mtr>
         <mtd><mi>0</mi></mtd>
         <mtd><mi>0</mi></mtd>
         <mtd><mi>1</mi></mtd>
      </mtr>
    </mtable>
  </mfenced>
</mrow>
</math>
mfenced sett gjerde rundt innholdet
mtable tilsvarer table i html
mtr tilsvarer tr i html
mtd tilsvarer td i html

Referanser og eksempler:

Produksjon, kontroll og vedlikehold:
Børre Stenseth, revidert des 2004

Markup og web fra Høgskolen i Østfold: http://www.ia.hiof.no/~borres/ml/

../../common/gfx/prev.gif ../../common/gfx/home.gif ../../common/gfx/next.gif
skjema popup

Valid XHTML 1.0 Strict
popup card
Bygget med WXT