MathML Elemente

Unterstützte Tags

Noch werden nicht alle Tags aus MathML unterstützt. Die Presentation-Markup-Tags sind vorhanden, wenn auch mit kleineren Einschränkungen hinsichtlich ihrer Argumente.

Feste Anzahl von Tags

Diese Tags sind relativ einfach in Methoden umzusetzen, denn die Anzahl ihrer Sub-Tags ist bekannt. Es folgt eine kurze Tabelle mit der generellen Syntax


Tag

Anwendung

mi

<mi> Identifier </mi>

mn

<mn> Number </mn>

mo

<mo> Operator </mo>

mfrac

<mfrac> Zähler Nenner </mfrac>

mroot

<mroot> Radikand Exponent <mroot>

msqrt

<msqrt> Radikand <msqrt>


Variable Anzahl MathML-Tags

Wieder soll eine Tabelle Übersicht schaffen. Diese Tags kapseln den Inhalt der Liste zu einem einzigen Element. Es handelt sich also um gruppierende Tags.


Tag

Anwendung

mfenced

<mfenced> list-of-tags </mfenced>

mover

<mover> list-of-tags </mover>

mrow

<mrow> list-of-tags </mrow>

msqrt

<msqrt> list-of-tags <msqrt>

msub

<msub> list-of-tags </msub>

msup

<msup> list-of-tags </msup>

msubsup

<msubsup> list-of-tags </msubsup>

munder

<munder> list-of-tags </munder>

munderover

<munderover> list-of-tags </munderover>


Variable Anzahl bestimmter MathML-Tags

Diese Tags verlangen ganz bestimmte Sub-Tags. Die Liste ist hierachisch (zum Glück auch lexikalisch) geordnet. Der Zusatz "\ mtd" in der ersten Zeile meint den Ausschluss eben dieses Tags aus der Liste.


Tag

Anwendung

mtd

<mtd> list-of-tags \ mtd </mtd>

mtr

<mtr> list-of-mtd </mtr>

mtable

<mtable> list-of-mtr </mtable>


Übertragung auf eine Programmiersprache

Die erste Stufe sollte den engen Bezug zu den Gegebenheiten wahren. Dabei spielen die Strukturen des XML-Dokuments ebenso eine Rolle wie die verwendeten APIs. Hier kommt das DOM-package zum Einsatz. Natürlich könnte auch das SAX-package eingesetzt werden, aber der Strukturbaum müsste dann selbst aufgebaut werden. Letzteres ist zweifellos Überlegenswert, hat man aber erst einmal die blumenreiche Begrifflichkeit des DOM-packages abstrahiert, die sinn- und nutzlosen Einträge im Dokumentenbaum programmtechnisch eliminiert, die kleinen Ungereimtheiten der Methoden umschifft, dann kann es los gehen. Zumindest ist es eine schöne Übung für IT-Weiterbildungmaßnahmen.

Der Vorteil bei der Verwendung des SAX-packages liegt natürlich in der geringeren Auslastung des Speichers und der damit verbundenen Steigerung der Geschwindigkeit. Zweifellos wird eine folgende Version auf beide packages verzichten. Stehen die Grundzüge erst einmal fest, ist die Bereitstellung von Daten aus einem Strom ein leicht zu bewältigendes Problem.


Pre- in- oder postfix-Notation?

Diese Frage spielt natürlich eine zentrale Rolle. Wäre das Zielsystem C/C++, könnte die prefix-Notation eingesetzt werden. Der Grund liegt prinzipiell darin, dass hier Funktionen mit variablen Längen von Argumentlisten gestattet sind.

Java ist konsequenter auf Objektorientierung ausgerichtet und hat nur determinierte Längen von Argumentlisten. Tatsächlich kommt Java den Gegebenheiten von MathML näher, denn die scheinbar variablen Längen werden immer zu einem Element gekapselt, welches seinerseits eben wieder Elemente enthält.

Ob nun post- oder prefix, es läuft immer auf den Einsatz eines Stacks zurück. Ob nun ohne Möglichkeiten der der direkten Beeinflussung (prefix) oder mit diesen (postfix), es muss immer eine Ende-Kennung für variable Längen von Tag-Listen (Argumente) vorhanden sein.

Ach ja - infix-Notation. Dieser Aufbau ist natürlich in einem MathML-Dokument, das die Eigenschaften der Elemente umhüllend bestimmt (<mi>Ident</mi>) völlig sinnlos und wird deshalb nicht weiter erörtert.