next up previous contents
Nächste Seite: 8.4 Verschiedene Ausprägungen Aufwärts: 8.3 Generierung der Ausgabe Vorherige Seite: 8.3.3 Flexibilität der Stylesheet   Inhalt


8.3.4 MathML

MathML ist eine XML-Anwendung zur Beschreibung von mathematischen Formeln. Durch die Kombination von XHTML und MathML lassen sich mathematische Formeln auch in Textseiten darstellen. Da es sich um eine XML-Anwendung handelt, ist die Integration in XHTML über die Namensraumspezifikation möglich. Da allerdings nicht alle Browser MathML darstellen können, sind dafür eventuell Plug-Ins erforderlich. Das ist auch der Grund, weshalb verschiedene Möglichkeiten existieren, um eine Darstellung der MathML-Elemente zu erzwingen. Beispielsweise lässt sich ein Stylesheet, sowohl XSLT als auch CSS, referenzieren, das zur Darstellung von MathML genutzt werden soll. Mozilla verfügt ab der Version 0.9.5, Netscape ab Version 7.0, über einen integrierten, nativen MathML-Renderer. Das bedeutet, dass ohne weitere Angaben die mit MathML definierten Elemente darstellbar sind. Dazu müssen unter Umständen nur geeignete mathematische Fonts herunter geladen werden. Die früheren Versionen Mozilla 0.9.4 und Netscape 6.1 unterstützen dahingegen nur die Darstellung mathematischer Formeln mittels XSLT. Mit der Verwendung von XSLT ist eine Möglichkeit gegeben, um MathML auch im MS Internet Explorer darzustellen. Dieser unterstützt ab Version 6.0 die aktuelle XSLT Empfehlung 1.0. Die älteren Versionen 5.0 und 5.5 wurden mit einem XSLT-Prozessor ausgeliefert, der anhand des Arbeitspapieres zur Entwicklung der XSLT-Empfehlung arbeitet. Um diese Browser auch empfehlungstauglich zu machen, muss MSXML 3.0, ein von Microsoft geschriebenes XML-Paket mit XSLT-Prozessor, instaliert werden. So lassen sich die vom W3C bereitgestellten XSL-Transformationen einsetzen und die Elemente darstellen. Für den Internet Explorer existieren noch weitere Plug-Ins, die zur Darstellung von MathML benutzt werden können. Allerdings interpretiert der Internet Explorer das MathML-Element und seinen Inhalt nicht in einer XHTML-Seite. Nur innerhalb einer XML-Datei mit dementsprechender Dateiendung xml wird das math-Element weiter verarbeitet. Das W3C beschreibt die aktuelle Unterstützung aller Browser und die Problematiken dabei in [W3CMathML]. MathML ist in zwei unterschiedliche Definitionsarten unterteilt. Die eine Art dient der Beschreibung der Darstellung (presentation-MathML), die andere des mathematischen Inhaltes (Content-MathML). Der Unterschied wird an dem folgenden, allgemein benutzten Beispiel erläutert.

Beispiel 8.3.1:
Die Beschreibung der Formel (a + b)2 kann auf zwei Arten erfolgen. Die Präsentationsbeschreibung erfolgt anhand der resultierenden Darstellung, indem die Formel in der Reihenfolge der Ausführung von innen nach außen beschrieben wird. Hierbei beginnt das mit dem Hochstellen msup einer Zahl mn zu dem Term in Klammern mfenced. Die Angabe, welche Klammern benutzt werden sollen ist optional, macht aber den Verwendungszweck deutlich. Der innere Term besteht aus Variablen mi, die mit einem Operator mo verknüpft sind.
<msup>
  <mfenced open="(" close=")">
    <mi>a</mi>
    <mo>+</mo>
    <mi>b</mi>
  </mfenced>
  <mn>2</mn>
</msup>
Die inhaltliche Beschreibung entspricht der preoder-Traversierung eins Baumes. Dazu werden in apply-Elementen die auszuführenden Teile der Formel eingefasst. Die beginnt mit der Beschreibung, dass ein Exponent power zu dem folgenden Element, das aus einer weiteren Formel besteht, existiert. Die Operanden besitzen in dieser Darstellung alle eigene Elemente, so auch der plus-Operator, dem zwei Variablen ci folgen. Im Anschluß wird nun der Exponent zu der inneren Formel als Zahlenwert cn festgelegt.
<apply>
  <power/>
  <apply>
    <plus/>
    <ci>a</ci>
    <ci>b</ci>
  </apply>
  <cn>2</cn>
</apply>
Die inhaltliche Beschreibung ist nicht direkt auf die Darstellung zu übertragen, weshalb diese Formelbeschreibung auch nicht gleichermaßen gut dargestellt werden kann. Die Unterstützung der Präsentationsbeschreibung ist weitaus häufiger gegeben, da bei ihr keine inhaltliche Interpretation vorgenommen werden muss. Zum Einbinden in XHTML spielt es keine Rolle in welcher Form MathML verwendet wurde. Dazu werden folgende Angaben vom W3C empfohlen [W3CMathML]: Diese Angaben sind in der XSL-Transformation der Ausgabedatei hinzuzufügen. Die Namensraumangabe für das math-Element wird einfach in die Ausgabe mit hineingeschrieben. Der Stylesheet-Verweis muss allerdings direkt zu Begin jeder XHTML-Datei vor dem html-Tag vorgenommen werden. Da es sich hierbei um eine Processing-Instruction handelt, also um eine Anweisung, die das Verarbeitungsprogramm, hier der Browser, ausführen soll, muss diese auch als eine solche definiert werden. Der folgende Ausdruck liefert das gewüschte Ergebnis:
<xsl:processing-instruction name="xml-stylesheet">
 <xsl:text>href="insert/mathmlstyle/mathml.xsl" 
           type="text/xsl"
 </xsl:text>
</xsl:processing-instruction>
Die Darstellung zweier mathematischer Formeln mit Mozilla ist in Abbildung 24 zu sehen. Die Formeln wurden hellrot hervorgehoben. Der Ausschnitt ist aus dem Beipiel entstanden, das in Kapitel 9 weiter erläutert wird. Der Internet Explorer bearbeitet allerdings die Datei anhand der Dateiendung, weshalb er sie nicht als XML-Datei interpretiert und die Formeln nicht anzeigt.

Abbildung 24: Ausschnitt XHTML mit MathML
\includegraphics[scale=0.45]{bilder/mathmozilla}


next up previous contents
Nächste Seite: 8.4 Verschiedene Ausprägungen Aufwärts: 8.3 Generierung der Ausgabe Vorherige Seite: 8.3.3 Flexibilität der Stylesheet   Inhalt
Tanja Schniederberend 2003-06-11