Zum Inhalt springen

„Extensible Stylesheet Language – Formatting Objects“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Eigenschaften: siehe Disk. – Seitenbeschreibungssprache?
Änderung 236825620 von Dr. Manfred Krüger rückgängig gemacht; das Buch ist bereits aufgeführt, es braucht vom selben nicht Buch nicht die deutsche und noch die englische Sprachversion hier aufgeführt zu werden. WP:LIT beachten
Markierung: Rückgängigmachung
 
(10 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''XSL-FO''' ('''Extensible Stylesheet Language – Formatting Objects''') ist eine [[Extensible Markup Language|XML]]-Anwendung, die beschreibt, wie Text, Bilder, Linien und andere grafische Elemente auf einer Seite angeordnet werden.
'''XSL-FO''' ('''Extensible Stylesheet Language – Formatting Objects''') ist eine [[Extensible Markup Language|XML]]-[[Auszeichnungssprache]], 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 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.
Mit XSL-FO können Dokumente sogar für das Vorlesen über einen Sprachsynthesizer formatiert werden.
Zeile 6: Zeile 6:


== Eigenschaften ==
== Eigenschaften ==
XSL-FO ist eine [[Auszeichnungssprache#Unterscheidung und Abgrenzung|darstellende Auszeichnungssprache]], die ihre Wurzeln in [[Document Style Semantics and Specification Language|DSSSL]] hat und zeitweise mit [[Cascading Style Sheets|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 [[XSL Transformation|XSLT]] und danach die Layoutierung mit XSL-FO-Formatierern einerseits und die Ad-hoc-Formatierung mit CSS-Renderern andererseits).
XSL-FO ist eine [[Auszeichnungssprache#darstellend-beschreibend|darstellende Auszeichnungssprache]], die ihre Wurzeln in [[Document Style Semantics and Specification Language|DSSSL]] hat und zeitweise mit [[Cascading Style Sheets|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 [[XSL Transformation|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:
XSL-FO enthält Elemente und Attribute für folgende Aspekte:
* Regionen, Ränder und Bereiche einer Seite,
* Regionen, Ränder und Bereiche einer Seite,
Zeile 24: Zeile 24:
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.
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 die Generierung von [[Portable Document Format|PDF]], [[Rich-Text-Format|RTF]], [[American Standard Code for Information Interchange|ASCII]]-Text und sonstigen Print-Medien aus einer XSL-FO-Datei stehen sogenannte ''FO-Prozessoren'' zur Verfügung. Ein weit verbreitetes Programm ist [[Apache Formatting Objects Processor|FOP]] (Formatting Objects Processor) aus dem [[Apache Software Foundation|Apache-Projekt]] (siehe Weblink), eine [[Java (Programmiersprache)|Java]]-Anwendung, die aus XSL-FO-Daten PDF-Dokumente erzeugt und teilweise auch [[Postscript]] und [[Printer Control Language|PCL]] unterstützt. Für [[.NET]]-Entwicklungen gibt es eine sehr eingeschränkte Portierung [[NFop]] des Java-Projekts, welche lediglich das Ausgabeformat PDF unterstützt. In vielen Industriebereichen werden jedoch kommerzielle Formatierer verwendet, die zum einen größere Teile der Spezifikation unterstützen, andererseits auch eigene Erweiterungen enthalten, die nicht Bestandteil von XSL-FO, aber für den Praxisgebrauch zwingend notwendig sind, z. B. weitere Ausgabeformate.
Für die Generierung von [[Portable Document Format|PDF]], [[Rich-Text-Format|RTF]], [[American Standard Code for Information Interchange|ASCII]]-Text und sonstigen Print-Medien aus einer XSL-FO-Datei stehen sogenannte ''FO-Prozessoren'' zur Verfügung. Ein weit verbreitetes Programm ist [[Apache Formatting Objects Processor|FOP]] (Formatting Objects Processor) aus dem [[Apache Software Foundation|Apache-Projekt]] (siehe Weblink), eine [[Java (Programmiersprache)|Java]]-Anwendung, die aus XSL-FO-Daten PDF-Dokumente erzeugt und teilweise auch [[Postscript]] und [[Printer Control Language|PCL]] unterstützt. Für [[.Net-Framework]]-Entwicklungen gibt es eine sehr eingeschränkte Portierung [[NFop]] des Java-Projekts, welche lediglich das Ausgabeformat PDF unterstützt. In vielen Industriebereichen werden jedoch kommerzielle Formatierer verwendet, die zum einen größere Teile der Spezifikation unterstützen, andererseits auch eigene Erweiterungen enthalten, die nicht Bestandteil von XSL-FO, aber für den Praxisgebrauch zwingend notwendig sind, z. B. weitere Ausgabeformate.


== Vorgehensweise ==
== Vorgehensweise ==
Zeile 58: Zeile 58:


== Literatur ==
== 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.
* 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.
* Manfred Krüger: ''XSL-FO – verstehen und anwenden'', Dpunkt Verlag, ISBN 3-89864-394-8.
Zeile 65: Zeile 66:
* Manuel Montero Pineda, Manfred Krüger: ''XSL-FO in der Praxis'', Dpunkt Verlag, ISBN 3-89864-249-6.
* 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.
* Marco Skulschus, Marcus Wiederstein: ''XSL-FO für PDF und Druck'', Mitp, ISBN 3-8266-1531-X.

== Software ==
* [[Apache Formatting Objects Processor|Apache FOP (Formatting Objects Processor)]] – Open Source, [[Apache-Lizenz|Apache License]], version 2.0
* [http://www.antennahouse.com/ Antenna House Formatter] – kommerziell
* [http://www.renderx.com/ RenderX XEP] – kommerziell
* [http://www.alt-soft.com/ XML2PDF Formatting Engine Server by Altsoft] – kommerziell
* [http://xmlroff.sourceforge.net/ xmlroff] – Open Source, [[BSD-Lizenz]]
* [http://www.ecrion.com/Products/XFRenderingServer/Overview.aspx Ecrion XF Rendering Server] – kommerziell
* [http://www.ecrion.com/Products/XFDesigner/Overview.aspx Ecrion XF Designer (Visual XSL-FO Editor und Layout Designer für XML Daten)] – kommerziell
* [http://www.vision-cloud.de/jfo JFO – Java Formatting Objects] – kommerziell
* [http://www.speedata.de/xsl-fo speedata XSL-FO Formatter] – kommerziell
* [http://pdfnow.com/ PDFnow.com] – kostenfreier XSL/FO-Generator als Webservice


== Weblinks ==
== Weblinks ==
Zeile 83: Zeile 72:
* [http://www.data2type.de/xml-xslt-xslfo data2type] umfangreiche deutschsprachige Informationen über XSL-FO und XSLT
* [http://www.data2type.de/xml-xslt-xslfo data2type] umfangreiche deutschsprachige Informationen über XSL-FO und XSLT
* [http://www.ibiblio.org/xml/books/bible2/chapters/ch18.html Die XML-Bibel] (englisch) bietet in einem veröffentlichten Probekapitel eine gute Einführung in XSL-FO
* [http://www.ibiblio.org/xml/books/bible2/chapters/ch18.html Die XML-Bibel] (englisch) bietet in einem veröffentlichten Probekapitel eine gute Einführung in XSL-FO
* [http://www.ecrion.com/Products/XFRenderingServer/XSLFOSamples.aspx XSL-FO Tutorial] (englisch) gutes Tutorial mit vielen einfachen Beispielen.
* [http://code.google.com/p/fop-miniscribus/ Fop MiniScribus] XSL-FO [[WYSIWYG]]-Editor
* [http://code.google.com/p/fop-miniscribus/ Fop MiniScribus] XSL-FO [[WYSIWYG]]-Editor
* [http://www.data2type.de/xml-xslt-xslfo/xsl-fo/formatierer-vergleich/ Vergleich der gängigen Formatierer]
* [http://www.data2type.de/xml-xslt-xslfo/xsl-fo/formatierer-vergleich/ Vergleich der gängigen Formatierer]
Zeile 90: Zeile 78:
{{Normdaten|TYP=s|GND=4706105-4}}
{{Normdaten|TYP=s|GND=4706105-4}}


[[Kategorie:Beschreibungssprache]]
[[Kategorie:XML-basierte Sprache]]
[[Kategorie:XML-basierte Sprache]]

Aktuelle Version vom 28. August 2023, 16:04 Uhr

XSL-FO (Extensible Stylesheet Language – Formatting Objects) ist eine XML-Auszeichnungssprache, 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 ist ein Teil der XSL-Spezifikation des W3C.

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 im Hinblick auf XSL 1.1, bei 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 die Generierung von PDF, RTF, ASCII-Text und sonstigen Print-Medien aus einer XSL-FO-Datei stehen sogenannte FO-Prozessoren zur Verfügung. Ein weit verbreitetes Programm ist FOP (Formatting Objects Processor) aus dem Apache-Projekt (siehe Weblink), eine Java-Anwendung, die aus XSL-FO-Daten PDF-Dokumente erzeugt und teilweise auch Postscript und PCL unterstützt. Für .Net-Framework-Entwicklungen gibt es eine sehr eingeschränkte Portierung NFop des Java-Projekts, welche lediglich das Ausgabeformat PDF unterstützt. In vielen Industriebereichen werden jedoch kommerzielle Formatierer verwendet, die zum einen größere Teile der Spezifikation unterstützen, andererseits auch eigene Erweiterungen enthalten, die nicht Bestandteil von XSL-FO, aber für den Praxisgebrauch zwingend notwendig sind, z. B. weitere Ausgabeformate.

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).

Folgendes Beispiel definiert eine DIN-A4-Seite mit 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>