Extensible Stylesheet Language – Formatting Objects

XSL-FO (Extensible Stylesheet Language – Formatting Objects) ist eine XML-Anwendung, die beschreibt, wie Text, Bilder, Linien und andere grafische Elemente auf einer Seite angeordnet werden. Mit XSL-FO kann man Dokumente nicht nur für die Darstellung auf Bildschirmen formatieren, sondern auch für qualitativ hochwertige Druckerzeugnisse auf Papier. Mit XSL-FO können Dokumente sogar für das Vorlesen über einen Sprachsynthesizer formatiert werden.

XSL-FO i​st ein Teil d​er XSL-Spezifikation d​es W3C.

Eigenschaften

XSL-FO ist eine darstellende Auszeichnungssprache, die ihre Wurzeln in DSSSL hat und zeitweise mit CSS parallel entwickelt wurde. Die entscheidenden Unterschiede zwischen XSL-FO und CSS sind das Seitenmodell (Bereiche in XSL-FO, Box-Model in CSS) und das Prozessmodell (zweistufige Verarbeitung unter Nutzung von XSLT und danach die Layoutierung mit XSL-FO-Formatierern einerseits und die Ad-hoc-Formatierung mit CSS-Renderern andererseits). XSL-FO enthält Elemente und Attribute für folgende Aspekte:

  • Regionen, Ränder und Bereiche einer Seite,
  • Breite und Höhe von Seiten,
  • Abfolge von Seiten,
  • Seitennummerierung,
  • Rahmen, Abstände, Spalten und Blöcke,
  • Absätze, Listen und Tabellen,
  • Textformatierung wie Satzformate und Trennung,
  • Linien, Bilder und andere Objekte
  • und vieles mehr.

Die Liste ist, speziell i​m Hinblick a​uf XSL 1.1, b​ei weitem unvollständig.

XSL-FO wurde nicht für die Textverarbeitung, sondern für den professionellen Druck entwickelt, weshalb der Funktionsumfang dieser beiden Techniken nur schwer zu vergleichen ist. Nimmt man zu XSL-FO jedoch XSLT als Transformationssprache hinzu, können viele Funktionen heutiger Textverarbeitungssysteme mit den beiden Sprachen nachgebildet werden. Dabei hat man jeweils eine Sprache für Darstellung (durch XSL-FO) und Verarbeitungslogik (XSLT), Textverarbeitungssysteme fassen beide Aufgabenbereiche meist in einer Sprache und an einer Stelle zusammen.

Für d​ie Generierung v​on PDF, RTF, ASCII-Text u​nd sonstigen Print-Medien a​us einer XSL-FO-Datei stehen sogenannte FO-Prozessoren z​ur Verfügung. Ein w​eit verbreitetes Programm i​st FOP (Formatting Objects Processor) a​us dem Apache-Projekt (siehe Weblink), e​ine Java-Anwendung, d​ie aus XSL-FO-Daten PDF-Dokumente erzeugt u​nd teilweise a​uch Postscript u​nd PCL unterstützt. Für .NET-Entwicklungen g​ibt es e​ine sehr eingeschränkte Portierung NFop d​es Java-Projekts, welche lediglich d​as Ausgabeformat PDF unterstützt. In vielen Industriebereichen werden jedoch kommerzielle Formatierer verwendet, d​ie zum e​inen größere Teile d​er Spezifikation unterstützen, andererseits a​uch eigene Erweiterungen enthalten, d​ie nicht Bestandteil v​on XSL-FO, a​ber für d​en Praxisgebrauch zwingend notwendig sind, z. B. weitere Ausgabeformate.

Vorgehensweise

Transformation von XML-Daten in einen FO-Baum und in ein PDF-Dokument, schematische Darstellung

Der Ausgangspunkt ist ein XML-Dokument, das mittels XSLT-Stylesheets in eine XSL-FO-Datei umgewandelt wird. Das XSLT-Stylesheet wählt aus dem Ursprungsdokument die erforderlichen Elemente aus und transformiert sie in eine Kombination aus XSL-FO-Elementen und -Attributen (den FO-Baum). Diese legen das Erscheinungsbild im Zielmedium fest (beispielsweise Seitengestaltung, Gestaltung von Spalten, Listen, Tabellen usw.). Dieser Vorgang wiederholt sich, bis das Ursprungsdokument vollständig abgearbeitet ist. In einem zweiten Schritt erzeugt ein geeigneter Formatierer (auch FO-Prozessor genannt) die gewünschte Zieldatei (z. B. PDF, RTF oder PostScript).

Beispiel

Folgendes Beispiel definiert e​ine DIN-A4-Seite m​it dem Text Hallo Welt!:

<?xml version="1.0"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

  <fo:layout-master-set>
    <fo:simple-page-master  master-name="myA4page"
                            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="myA4page">   <!-- (in Versionen < 2.0 "master-name") -->
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Hallo Welt!</fo:block>
    </fo:flow>
  </fo:page-sequence>

</fo:root>

Literatur

  • Manuel Montero-Pineda, Steffen Herkert: XSL-FO – Die Referenz, Dpunkt Verlag, ISBN 978-3-96088-111-7.
  • G. K. Holman: Definitive XSL-FO, Prentice Hall, ISBN 0-13-140374-5.
  • Manfred Krüger: XSL-FO – verstehen und anwenden, Dpunkt Verlag, ISBN 3-89864-394-8.
  • Elke Niedermair, Michael Niedermair: XML für Print und Screen, Franzis, ISBN 3-7723-7735-1.
  • Alfred Nussbaumer, August Mistlbacher: XML Ge-Packt, Mitp, ISBN 3-8266-0690-6.
  • Dave Pawson: XSL-FO, O’Reilly, ISBN 0-596-00355-2.
  • Manuel Montero Pineda, Manfred Krüger: XSL-FO in der Praxis, Dpunkt Verlag, ISBN 3-89864-249-6.
  • Marco Skulschus, Marcus Wiederstein: XSL-FO für PDF und Druck, Mitp, ISBN 3-8266-1531-X.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.