Erweitern von DocBook mit MathML
(Auszug aus "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" von Thomas Schraitle)
MathML ist die Mathematical Markup Language und dient zum Auszeichnen von mathematischen Formeln. In DocBook 5 ist MathML durch das Muster db._any.mml vorbereitet, das als "Einstiegspunkt" dient. Überschreiben Sie dieses mit den Elementen von MathML, stehen Ihnen innerhalb von equation und informalequation die Elemente zur Formelauszeichnung zur Verfügung.
Um MathML in DocBook 5 einzufügen, gehen Sie wie folgt vor:
- Herunterladen von MathML RELAX NG-Schema
Laden Sie das MathML RELAX NG-Schema herunter. - Anlegen der Anpassungsdatei
Erstellen Sie eine Anpassungsdatei (beispielsweise dbmathml.rnc bzw. dbmathml.rng):Beispiel: Anpassungsdatei für DocBook mit MathML
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<include href="docbook.rng">
<define name="db._any.mml">
<externalRef href="mathml2.rng"/>
</define>
<define name="db._any">
<element>
<anyName>
<except>
<nsName ns="http://docbook.org/ns/docbook"/>
<nsName ns="http://www.w3.org/1999/xhtml"/>
<nsName ns="http://www.w3.org/1998/Math/MathML"/>
</except>
</anyName>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<text/>
<ref name="db._any"/>
</choice>
</zeroOrMore>
</element>
</define>
</include>
</grammar>
namespace db = "http://docbook.org/ns/docbook"
namespace mml = "http://www.w3.org/1998/Math/MathML"
namespace html = "http://www.w3.org/1999/xhtml"
include "docbook.rnc" {
db._any.mml = external "mathml2.rnc"
db._any =
element * - (db:* | html:* | mml:*) {
(attribute * { text }
| text
| db._any)*
}
}
- Verwenden der Anpassungsdatei
Speichern Sie die Anpassungsdatei dbmathml.rnc bzw. dbmathml.rng im selben Verzeichnis wie Ihre XML-Dateien. Validieren Sie Ihr Dokument mit Hilfe einer der obigen Anpassungsdateien, siehe Validieren mit einer DocBook 5-Anpassungsdatei.
Falls Sie MathML auch in inlineequation erlauben möchten, fügen Sie innerhalb von include den folgenden Code ein:
Beispiel: Zusätzlicher Code für inlineequation
<define name="db.inlineequation.content" combine="choice">
<ref name="db._any.mml"/>
</define>
# Kombination durch Auswahl
db.inlineequation.content |= db._any.mml
Copyright © 2009 Millin Verlag
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Millin Verlag, Siebengebirgsring 36, 53797 Lohmar, info(at)millin.de