MathML Seminar XML-Technologien Von Primo Cirrincione.

34
MathML MathML Seminar XML- Seminar XML- Technologien Technologien Von Primo Cirrincione

Transcript of MathML Seminar XML-Technologien Von Primo Cirrincione.

Page 1: MathML Seminar XML-Technologien Von Primo Cirrincione.

MathMLMathML

Seminar XML-TechnologienSeminar XML-Technologien

Von Primo Cirrincione

Page 2: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

2

Was ist MathML?Was ist MathML?

• MathML = Mathematical Markup Language

• MathML ist eine auf XML basierende Auszeichnungssprache für mathematische Ausdrücke.

• Was HTML für Text-Information ist, soll MathML für mathematische Ausdrücke sein.

Page 3: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

3

Geschichte von MathML (1)Geschichte von MathML (1)

• 1994 - Es wurde ein Vorschlag für HTML Math im HTML 3.0 working draft eingefügt.

• Mai 1996 - Nach einem Meeting der digital Library Initiative wurde ein Ausschuss für HTML Math Editorial Review gegründent.

• März 1997 - Dieser Ausschuss wurde zum W3C Math Working Group neu zusammengesetzt.

• April 1998 - W3C veröffentlicht MathML 1.0 als Recommendation.

Page 4: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

4

Geschichte von MathML (2)Geschichte von MathML (2)• Juli 1999 - Das Math Working Group veröffentlicht MathML 1.01 als

überarbeitete Version der vorherigen Recommendation.

• Februar 2001 - Die W3C Recommendation von MathML 2.0 wurde veröffentlicht.

• An der Entwicklung von MathML sind auch folgende Firmen beteiligt:

– Waterloo (Maple)

– Wolfram Research (Mathematica)

– IBM

– Microsoft

– uvm.

Page 5: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

5

Alternativen zu MathMLAlternativen zu MathML• Man lässt sich von Mathematik-Programmen (z.B. Maple

oder Mathematica) Bilder der Ausdrücke generieren und fügt diese in ein HTML-Dokument ein.

• Man versucht die Ausdrücke mit HTML zu schreibenZum Beispiel:

-b ± Sqrt(b2 - 4ac)-b ± Sqrt(b2 - 4ac) x = -------------------x = ------------------- 2a2a

<b> <b> <pre> <pre>

-b &#177; Sqrt(b<sup>2</sup> - 4ac) -b &#177; Sqrt(b<sup>2</sup> - 4ac) x= ------------------- x= -------------------

2a 2a </pre> </pre>

</b></b>

Page 6: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

6

NachteileNachteile

• Mit HTML hat man Probleme um „spezielle“ mathematische Ausdrücke darzustellen (z.B. Integrale, Summen, usw.).

• Die mathematische Bedeutung geht verloren.• Wenn die Formeln als Bilder abgespeichert sind,

geht jegliche Dynamik verloren.• Bilder können nicht als Input für Programme

benützt werden, die symbolisch Rechnen können.• Bilder brauchen mehr Speicher -> Der Aufbau einer

Internetseite ist langsamer.

Page 7: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

7

Lösung: MathMLLösung: MathML

• MathML erlaubt sowohl äussere Struktur eines Ausdrucks als auch dessen Semantik zu kodieren.

• Durch die Attribute von MathML-Elemente kann man den Layout der Ausdrücke festlegen.

• Man könnte MathML als Input für Mathematik-Programme verwenden.

• Man kann MathML in andere Formate umwandeln, z.B. LaTeX.

Page 8: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

8

Aufbau von MathMLAufbau von MathML• Jedes MathML Dokument beginnt mit <math> und endet

mit dem schliessenden </math> und es ist wie ein XML Dokument aufgebaut.

• Es gibt zwei Unterschiedliche Arten ein mathematischer Ausdruck in MathML zu kodieren: Presentation oder Content Markup.

• Presentation Markup ermöglicht es einen Ausdruck über das Aussehen zu kodieren.

• Content Markup ermöglicht es einen Ausdruck über die Semantik zu kodieren.

• Man kann beide Markup Varianten auch mischen bzw. parallel benützen.

Page 9: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

9

Idee von MathML: Idee von MathML: Expression TreesExpression Trees

• Die Idee ist es die Baumstruktur eines mathematischen Ausdrucks zu nutzen.

• Man kann mathematische Symbole nur auf wenige Arten in einem Ausdruck anordnen. Z.B.:– In einer Reihe.

– In eine Matrix.

– Als Index.

• Mathematische Ausdrücke sind oft nur Ineinanderschachtelungen einfacherer Ausdrücke.

Page 10: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

10

Presentation Markup: Layout BoxPresentation Markup: Layout Box

• Presentation Markup hat 27 Elemente mit ca. 50 Attributen.

• Presentation Markup basiert auf der Idee der Layout Box: Jedes Element ist eine Layout Box.– Die einfachsten Layout Boxes enthalten Zeichen, Zahlen oder

Entitäten.

– Kompliziertere Boxes ordnen ihre „child Boxes“ gemäss einem Algorithmus an.

– Z.B. gibt es ein Element <mfrac> welches seine zwei Kinder-Elemente als Bruch darstellt.

• Man könnte sagen, dass jedes Element eine Art „intelligentes Template“ ist, welches seine Kinder auf eine gewisse Art darstellt.

Page 11: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

11

Presentation Markup: TokensPresentation Markup: Tokens• Die einfachsten Elemente im Presentation Markup

sind die Tokens.• Das sind die einzigen Elemente die direkt Daten

enthalten (entweder Zahlen, Buchstaben oder Entitäten), also die eigentlichen Blätter im Baum.

• <mi> .. </mi>Weist darauf hin, dass sein Inhalt als Variable angezeigt werden soll. Wichtige Attribute sind fontweight, fontstyle, etc..

• <mn> .. </mn>Weist darauf hin, dass sein Inhalt als Zahl angezeigt werden soll. Hat dieselben Attribute wie <mi>.

• <mo> .. </mo>Weist darauf hin, dass sein Inhalt als Operator angezeigt werden soll. Attribute sind lspace, rspace, stretchy, movablelimits

Page 12: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

12

Presentation Markup: Layout SchemataPresentation Markup: Layout Schemata• <mrow> Kind(1)..Kind(n) </mrow>

Das üblichste Layout Schema. Es zeigt seine Kinder in einer Reihe entlang einer Horizontalen Basislinie an.

• <mfenced> Kind(1)..Kind(n) </mfenced>Erfüllt gleiche Aufgabe wie <mrow> und schliesst zusätzlich seine Kinder in Klammern ein.

• <mfrac> Zähler Nenner </mfrac>Zeigt einen Bruch an. Wenn man das Attribut linethickness auf 0 setzt, kann <mfrac> dazu benutzen Binomialausdrücke anzeigen zu lassen.

• <msqrt> Kind(1)..Kind(n) </msqrt>Zeigt seine Kinder unter einem Wurzel-Zeichen an.

• <mroot> Basis Index </mroot>Benötigt man um Wurzeln höherer Ordnung anzeigen zu lassen.

Page 13: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

13

Erstes Beispiel:<math>

<mfrac><mn>3</mn><mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mn>2</mn> <mo>)</mo></mrow>

</mfrac></math>

Page 14: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

14

Presentation Markup: IndicesPresentation Markup: Indices• <msub> Basis tiefgestellter-Index </msub>

<msup> Basis hochgestellter-Index </msup>Erstes Kind wird als Basis angezeigt und zweites Kind als tiefgestellter bzw. hochgestellter Index

• <msubsup> Basis tiefg.-Index hochg.-Index </msubsup>Ermöglicht es sowohl einen tiefgestellten Index als auch einen hochgestellten zu setzen

• <munder> Basis Zeichen </munder><mover> Basis Zeichen </mover>Das Zeichen wird über der Basis bzw. unter der Basis angezeigt. Benutzt man z.B. um ein Tilde oder ein Strich über eine Variable zu schreiben.

• <munderover> Basis Zeichen Zeichen </munderover>Erlaubt es einem Zeichen sowohl über die Basis als auch darunter zu schreiben. Findet Anwendung bei Summen oder Integralen (z.B. die Grenzen über und unter dem Integralzeichen).

Page 15: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

15

Beispiele zu Indices (1):Beispiele zu Indices (1):<<mrow>mrow>

<msup><msup>

<msub><msub>

<mi>x</mi><mi>x</mi>

<mn>1</mn><mn>1</mn>

</msub></msub>

<mi>&alpha;</mi><mi>&alpha;</mi>

</msup></msup> <mo>+</mo><mo>+</mo><msubsup><msubsup>

<mi>x</mi><mi>x</mi><mn>1</mn> <mn>1</mn> <mi>&alpha;</mi><mi>&alpha;</mi>

</msubsup></msubsup></mrow></mrow>

Page 16: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

16

Beispiele zu Indices (2):Beispiele zu Indices (2):

<mrow> <mstyle displaystyle='true'> <munderover> <mo>&sum;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>&infty;</mi> </munderover> </mstyle>

<msup> <mi>x</mi> <mi>i</mi></msup></mrow>

Page 17: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

17

Presentation Markup: TabellenPresentation Markup: Tabellen

Tabellen in MathML sind ähnlich zu den Tabellen in HTML aufgebaut. Sie haben aber noch einige zusätzliche Attribute um das Verhalten des Layouts besser zu kontrollieren.

• <mtable> Reihe(1)..Reihe(n) </mtable>wobei Reihe(i) <mtr> Elemente (math table row) sind.

• <mtr> Zelle(1)..Zelle(n) </mtr>wobei Zelle(i) <mtd> Elemente (Datenzellen) sind.

• <mtd> Kind(1)..Kind(n) </mtd>

Page 18: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

18

Beispiel: MatrixBeispiel: Matrix

<mrow><mrow> <mi>A</mi><mi>A</mi> <mo>=</mo><mo>=</mo> <mfenced open='['; close=']'><mfenced open='['; close=']'> <mtable><mtable> <mtr><mtr> <mtd><mi>x</mi></mtd><mtd><mi>x</mi></mtd> <mtd><mi>y</mi></mtd><mtd><mi>y</mi></mtd> </mtr></mtr>

<mtr><mtr> <mtd><mi>z</mi></mtd><mtd><mi>z</mi></mtd> <mtd><mi>w</mi></mtd><mtd><mi>w</mi></mtd>

</mtr></mtr> </mtable></mtable> </mfenced></mfenced></mrow></mrow>

Page 19: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

19

Presentation Markup: VererbungPresentation Markup: Vererbung• Attribute können entweder explizit in den MathML-

Tags gesetzt werden oder von der Umgebung ererbt werden.

• Jedes MathML-Element hat eine Umgebung welches einen Default-Wert für die Attribute festlegt. Die Idee ist, dass die Attribute der Umgebung, die für Schriftart, Hintergrund, etc. zuständig sind, durch den Browser initialisiert werden.

• Attribute die in einem Element gesetzt werden, wirken sich nur auf dieses aus.

• Um gewisse Attribute für mehrere Elemente gleichzeitig zu setzen, benutzt man das Element <mstyle>.

Page 20: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

20

Beispiel zu <mstyle>Beispiel zu <mstyle>

<<mrow>mrow> <mi>f</mi><mi>f</mi> <mfenced><mfenced> <mstyle color=‘#ff0000’><mstyle color=‘#ff0000’> <mrow><mrow> <mi>x</mi><mi>x</mi> <mo>+</mo><mo>+</mo> <mi>y</mi><mi>y</mi> </mrow> </mrow> </mstyle></mstyle> </mfenced></mfenced> </mrow></mrow>

f(f(x + yx + y))

Page 21: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

21

Content Markup: Prefix-NotationContent Markup: Prefix-Notation

• In Content Markup werden die Ausdrücke in Prefix-Notation geschrieben.

• Der Vorteil ist, dass Klammern überflüssig werden, da die Reihenfolge der Operationen durch die Notation eindeutig ist.

Zum Beispiel: (x+y)/2 wird zu / + x y 2

Page 22: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

22

Content Markup: Tokens und fundamentale Content Markup: Tokens und fundamentale ElementeElemente

• <ci>..</ci> Ist das analoge Element zu <mi>. Hat ein Attribut type, welches den Typ des angezeigten Objekts festlegt (z.B. vector, array, etc.).• <cn>..</cn>Ist das analoge Element zu <mn>. Hat auch ein Attribute type (z.B. real, integer, rational, complex-cartesian, complex-polar, constant) und ein Attribut base um das Zahlsystem festzulegen.

• <apply> Operator Argument(1)..Argument(n) </apply>Ist ein fundamentales Element des Content Markup um Operationen auszudrücken.

• <reln> Typ Argument(1) Argument(2) </reln>Ist das Analogon zu <apply> um Relationen auszudrücken.

• Es gibt kein <co> Element! Operatoren sind „leere Elemente“ oder werden durch das <fn> Element definiert.

Page 23: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

23

Content Markup: Operatoren und RelationenContent Markup: Operatoren und Relationen• Es gibt ca. 50 „leere“ Operator Elemente für die

üblichsten Funktionen und Operatoren (z.B. <cos/> oder <plus/>).

• Es gibt ein Element um Funktionen bzw. Operatoren zu definieren: <fn> Operator </fn>

• Bemerkung: Wenn man eine Funktion f(x) definiert, sagt man nicht explizit, dass das x in Klammern dargestellt werden soll. Das muss der Browser „selber“ erkennen.

• Relationen werden von Operatoren unterschieden. Man definiert sie über das <reln> Element.

Page 24: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

24

Beispiel: Funktionen und RelationBeispiel: Funktionen und Relation

1. 1. (sin + cos)(x)(sin + cos)(x)<apply> <apply> <fn><fn> <mfenced> <mfenced> <apply><plus/> <apply><plus/>

<sin/><sin/><cos/><cos/>

</apply></apply> </mfenced></mfenced></fn></fn><ci>x</ci><ci>x</ci></apply></apply>

2. 2. g(y) g(y)

<apply><apply><fn><fn><ci>g</ci><ci>g</ci></fn></fn><ci>y</ci><ci>y</ci>

</apply></apply>

3.3. x=1 x=1

<reln><reln> <eq/><eq/><ci>x</ci><ci>x</ci><cn>1</cn><cn>1</cn>

</reln></reln>

Page 25: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

25

Content Markup: ContainersContent Markup: Containers• MathML benutzt sogenannte Container Elemente um

elemantare mathematische Objekte und Datentypen darzustellen.

• <set> <element1> <element2>...| <condition> </set>Konstruiert eine Menge dessen Elemente auf zwei Arten definiert werden: Entweder durch eine Liste von Tokens (in einem <bvar> Container) und Containers oder durch ein <condition> Element.

• <interval> Punkt1 Punkt2 </interval>Definiert ein Intervall, wobei die Punkte die Anfangs und Endpunkte sind. Durch das Attribut closure kann man Intervalltyp festlegen („open“, „open-closed“, etc.).

• <vector> <element1> <element2> ... </vector>Konstruiert ein Vektor (per Konvention ein Spaltenvektor).

• <matrix> <Reihe(1)> <Reihe(2)> ... </matrix><Reihe(i)> sind <matrixrow> Elemente, deren Kinder dann die Matrixeinträge sind.

Page 26: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

26

Beispiel: Menge und IntervallBeispiel: Menge und Intervall

<reln> <eq/><reln> <eq/> <set><set> <bvar> <ci>x</ci> </bvar><bvar> <ci>x</ci> </bvar> <condition><condition> <reln> <geq/><<reln> <geq/><ci>x</ci><cn>0</cn> ci>x</ci><cn>0</cn> </reln></reln> </condition></condition> </set></set>

<interval closure='closed-open'><interval closure='closed-open'> <cn>0</cn><cn>0</cn> <ci>&infty;</ci><ci>&infty;</ci> </interval></interval>

</reln></reln>

Page 27: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

27

Beispiel: Matrix und VektorBeispiel: Matrix und Vektor

<reln> <eq/> <reln> <eq/> <apply><times/> <apply><times/> <vector <vector type=“row”type=“row”> <cn>1 </cn> <cn>2 </cn> </vector> > <cn>1 </cn> <cn>2 </cn> </vector> <matrix><matrix> <matrixrow><matrixrow> <cn>0 </cn> <cn>1 </cn> <cn>0 </cn> <cn>1 </cn> </matrixrow></matrixrow> <matrixrow><matrixrow> <cn>1 </cn> <cn>0 </cn> <cn>1 </cn> <cn>0 </cn> </matrixrow></matrixrow> </matrix></matrix> </apply></apply> <apply> <transpose/> <apply> <transpose/> <vector> <cn>2 </cn> <cn>1 </cn> </vector> <vector> <cn>2 </cn> <cn>1 </cn> </vector> </apply> </apply>

</reln></reln>

Page 28: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

28

Paralleler und gemischter Markup:Paralleler und gemischter Markup:

• Es ist notwendig beide Markup Varianten gleichzeitig zu verwenden, um das Layout eines mathematischen Ausdrucks kontrollieren zu können, aber dabei die semantische Bedeutung nicht zu verlieren.

• Der mathematische Ausdruck soll möglichst „schön“ angezeigt werden, aber dabei muss der Inhalt für ein Programm noch immer verständlich bleiben.

• Das <semantics> Element erlaubt dies.

• Mit dem <annotation> bzw. <annotation-xml> Element (innerhalb von <semantics>) können noch zusätzliche Informationen gespeichert werden.

• Es ist auch möglich Presentation Markup im Content Markup zu verwenden und umgekehrt. Dies kann aber heikel sein. Man muss vieles beachten, damit der Code noch Sinn macht.

Page 29: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

29

Beispiel: semanticsBeispiel: semantics<semantics><semantics><mrow>

<msup> <mi>f</mi> <mi>&prime;</mi> </msup><mfenced><mi>x</mi></mfenced>

</mrow>

<annotation-xml encoding="MathML-Content"><annotation-xml encoding="MathML-Content"><apply><diff/> <apply><diff/>

<bvar> <bvar> <ci>x</ci> <ci>x</ci>

</bvar> </bvar> <apply><apply>

<fn> f </fn> <fn> f </fn> <ci> x </ci> <ci> x </ci>

</apply> </apply> </apply></apply>

</annotation-xml></annotation-xml> </semantics></semantics>

Page 30: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

30

Tools (1):Tools (1):• Da MathML von XML stammt, ist es mühsam MathML

„von Hand“ zu schreiben.

• Der WebEQ Equation Editor ist ein graphischer Editor, der es einem Erlaubt einen mathematischen Ausdruck sowohl in Content als auch Presentation Markup zu exportieren.

Page 31: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

31

Tools (2):Tools (2):

• WebEQ kann das MathML Dokument als Applet exportieren (natürlich auch als XML oder auch als Bild), so dass der mathematische Ausdruck in einem Applet generiert wird.

• Vorteil: Man braucht kein Browser der MathML unterstützt um den Ausdruck zu lesen.

Beispiel

• Eine weitere Möglichkeit um ein MathML Dokument zu erstellen ist es, mit einem Programm wie Maple (nur mit Version 7 möglich) oder Mathematica den Ausdruck zu schreiben und dann als MathML zu exportieren.

Page 32: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

32

Browser und Plug-insBrowser und Plug-ins

• Applets sind zwar Praktisch, da sie von jedem Browser unterstützt werden. Aber das ganze ist dafür ziemlich langsam und undynamisch.

• MathML wird noch nicht standardmässig von allen Browsern unterstützt.

• Es gibt aber Plug-ins für IE (ab Version 5.5), der sogenannte Mathplayer

Beispiel

• Browser die MathML Presentation Markup schon unterstützen:

– Netscape 7.0

– Mozilla

– Amaya

Page 34: MathML Seminar XML-Technologien Von Primo Cirrincione.

12.6.2002 Seminar XML-Technologien: MathML

34

Fazit:Fazit:• MathML ist ein gutes Beispiel dafür, wie man XML

sinnvoll anwenden kann.

• Da es auf XML basiert, ist es einfach möglich MathML in andere Formate (wie TeX z.B.) umzuwandeln.

• MathML hat natürlich auch den Nachteil von XML, das der Code schnell ziemlich gross wird und sich entsprechend schnell Fehler reinschleichen.

• Ein Nachteil ist auch, dass es leider nur wenig Freeware gibt, um MathML Dokumente zu erzeugen.

• Damit MathML sinnvoll eingesetzt werden kann, ist es notwendig, dass alle Browser MathML standardmässig unterstützen. Was wahrscheinlich bald der Fall sein wird.