Markdown, XSL-FO-Templates
Die Bibliothek markdown-fo-transformer übersetzt Markdown-Text in XSL-FO. Ein vollständiges XSL-FO-Dokument benötigt außer dem eigentlichen Inhalt noch weitere Informationen, z.B. über die Seitengrößen, das Seitenlayout etc. Diese Informationen werden der Bibliothek in Form von Templates bereitgestellt. In dem Template werden die Positionen markiert, an dem die Bibliothek Inhalte ablegen soll.
Ein Template ist ein File, dass die folgenden Anforderungen erfüllen muss:
- Es muss ein syntaktisch korrektes XML Dokument sein, aber kein korrektes XSL-FO-Dokument
- Das oberste Element muss folgende Namespace-Klausel enthalten:
xmlns:fo="http://www.w3.org/1999/XSL/Format" - Ein oder mehrere Elemente müssen ein Attribut
identhalten. Der Wert dieses Attributes soll im Dokument eindeutig sein. Die so markierten Elemente können während der Übersetzung mittels des Namens referenziert werden
Mehrere Templates können zu einem Gesamtdokument kombiniert werden, indem ein Template in ein anderes eingefügt wird.
Beispiel-Templates
Dieses Beispiel enthält ein minimales XSL-FO-Template, das eine Ausgabe auf A4-Seiten mit einem Seitenrand von 2 cm erzeugt. Es sind zwei id-Attribute gesetzt:
- bei
text-flowkann eine Übersetzung eines Markdown-Dokuments eingefügt werden rootkann genutzt werden, um weitere Templates mit page-sequence-Elementen einzufügen
<?xml version="1.0" encoding="UTF-8"?>
<fo:root id="root" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4"
page-width="210mm" page-height="297mm">
<fo:region-body region-name="xsl-region-body" margin="2cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:flow id="text-flow" flow-name="xsl-region-body">
</fo:flow>
</fo:page-sequence>
</fo:root>
Das folgende Template enthält nur eine Definition einer page-sequence.
Dieses Template könnte deshalb z.B. in obiges Template eingefügt werden.
Der eigentliche Inhalt kann hier vor der Einfügung ebenfalls an der Position mit dem Namen text-flow eingetragen
werden.
<?xml version="1.0" encoding="UTF-8"?>
<fo:page-sequence xmlns:fo="http://www.w3.org/1999/XSL/Format" master-reference="A4">
<fo:flow id="text-flow" flow-name="xsl-region-body">
</fo:flow>
</fo:page-sequence>
Copyright © 2026 Hanspeter Halle
Dieser Text unterliegt der offenen Lizenz CC BY-SA 4.0
Er gehört zur Bibliothek markdown-fo-transformer
