Für die Konvertierung in HTML verwenden wir ein DSSSL-Programm. Als Konverter kommt Jade von James Clark zum Einsatz.
Die Aufgabe, um die es hier geht, ist eigentlich ein
Fall für die Transformation Language
von
DSSSL, nämlich die Transformation einer
Instanz einer DTD (hier AWLINET)
in eine Instanz einer anderen DTD (hier
HTML). Leider beherrscht Jade diesen Teil des DSSSL-Standards
nicht. Als Ersatz bietet James Clark eine hausgemachte
Lösung an.
Als Beispiel seien folgende Zeilen aus dem
DSSSL-Programm vorgestellt. Die beiden ersten
Zeilen identifizieren die Datei als Style Sheet mittels des
Public-Identifiers. Anschließend erfolgt die
Definition einer neuen Flow Object-Klasse namens
element
Das ist die angesprochene
Jade-eigene Lösung, die Sie bereits in einem früheren
Kapitel kennen gelernt haben..
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN"> (declare-flow-object-class element "UNREGISTERED::James Clark//Flow Object Class::element")
Bis hierin muss man sich keine weiteren Gedanken machen, wir haben diese Zeilen auch fraglos aus der Anleitung übernommen :-) Für die Top-Level-Elemente sehen die Anweisungen folgendermaßen aus:
(element awlinet (make element gi: "HTML")) (element titelei (make element gi: "HEAD")) (element buchtitel (make element gi: "TITLE")) (element rumpf (make element gi: "BODY")) (element (rumpf kapitel ueberschrift) (make element gi: "H1")) (element (rumpf kapitel abschnitt ueberschrift) (make element gi: "H2"))
Die erste Anweisung erzeugt für das Element awlinet ein neues Element mit dem Generic Identifier HTML. Bis zur Anweisung für das Element rumpf passiert nichts anderes als eine einfache Umwandlung. Interessant wird es bei Kapitel-Überschriften. In der AWL-DTD gibt es das Element mit dem Namen ueberschrift in mehreren Bedeutungen: als Überschrift eines Kapitels, eines Abschnitts und eines Unterabschnitts. Auf der anderen Seite gibt es in HTML keine Container-Elemente wie kapitel oder abschnitt. Aus diesem Grund muss eine Überschrift im Kontext des Kapitels erkannt und in ein geeignetes Element in HTML (hier H1) transformiert werden. Die kontextsensitive Auswahl eines Elements erfolgt in DSSSL einfach durch Hintereinanderschreiben (rumpf kapitel ueberschrift). Die Behandlung einer Abschnittüberschrift erfolgt in analoger Weise.
Die obigen Zeilen des DSSSL-Programms sind etwas vereinfacht, da die Umwandlung von XML in HTML an anderer Stelle ausführlich beschrieben ist (siehe Kapitel 9 und 15).