Lehrer Nussbaumer - XML, XSL et cetera

XML

XSL

  1. XSLT
  2. XSLT-Elemente
  3. XSLT-Funktionen
  4. XPath
  5. XPath-Funktionen
  6. XSL-FO
  7. XSL Formatierungsobjekte
  8. XSL Eigenschaften
  9. Verschiedene Transformationen

Anwendungen 

Editoren

Parser u.a.

Schnittstellen


-----------------
letzte änderung:
09 December 2021
-----------------
Lehrer Nussbaumers Seite

... in Arbeit ...

XSL-FO

XSL umfasst einerseits die Transformation von XML-Daten und andererseits ihre Formatierung.
XSL - Transformation und Formatierung

Durch die Transformation wird zunächst ein Teilbaum aller XML-Elemente gebildet, die ausgegeben werden sollen; dabei werden auch bestimmte Formatierungselemente ergänzt. Im zweiten Schritt wird beispielsweise ein PDF-Dokument erzeugt.

Hinweis: XSL-FO wurde vom W3C standardisiert. Das aktuelle Dokument steht unter der Adresse http://www.w3.org/TR/2001/REC-xsl-20011015/ zur Verfügung. In diesem Dokument werden alle Formatierungsobjekte (lokal) und Formatierungseigenschaften (lokal) genau beschrieben.

Das Apache-FOP-Projekt

Apache stellt im Rahmen des XML-Projektes den Formatierer "fop" zur Verfügung (http://xml.apache.org/fop/download.html). Nach dem Download der entsprechenden Fop*bin.tar.gz - Datei entpackt man den gesamten Inhalt und erhält im Verzeichnis Fop* die Startdateien fop.sh (bzw. fop.bat). Mit ihnen werden alle zum Formatieren erforderlichen Klassen (JAVA-Archiv-Dateien im Verzeichnis lib) geladen und die Transformation in ein PDF-Dokument durchgeführt (Anmerkung: Unter Linux muss man der Datei "fop.sh" und allen Dateien im Verzeichnis "lib" Rechte zum Ausführen vergeben).

nus@ice:~/Fop-0.20.1> ./fop.sh anfang.fo ausgabe.pdf
FOP 0.20.1
using SAX parser org.apache.xerces.parsers.SAXParser
building formatting object tree
setting up fonts
 [1] [2]
Parsing of document complete, stopping renderer
Initial heap size: 414Kb
Current heap size: 922Kb
Total memory used: 507Kb
  Memory use is indicative; no GC was performed
  These figures should not be used comparatively
Total time used: 326ms
Pages rendererd: 2
Avg render time: 163ms/page

Das PDF-Dokument wird anschließend mit einem PDF-Betrachter (gv, xpdf, acroread, ...) geladen, angezeigt und ggf. ausgedruckt...

Der Aufbau eines FO-Dokumentes

Das folgende Beispiel zeigt den (wohlgeformten) Aufbau einer XSL-FO-Datei:

<?xml version="1.0" encoding="iso-8859-1"?>
 <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
   <fo:layout-master-set>
     <fo:simple-page-master master-name="seite"
       page-height="29.7cm"
       page-width="21cm"
       margin-top="2cm"
       margin-bottom="2cm"
       margin-left="3.5cm"
       margin-right="2.5cm">
       <fo:region-body margin-top="3cm" reference-orientation="90" />
     </fo:simple-page-master>
   </fo:layout-master-set>
   <fo:page-sequence master-name="seite">
     <fo:flow flow-name="xsl-region-body">
       <fo:block font-size="24pt"
                 font-family="sans-serif"
                background-color = "#ff0000">
         Eine Überschrift
       </fo:block>
       <fo:block font-size="12pt"
                font-family="serif"
                 space-before="1cm">
         Eine kurze Zeile...
       </fo:block>
       <fo:block font-size="12pt"
                 font-family="serif"
                 space-before="5mm">
         Hier wird einmal ein längerer Text ausgegeben, der eigentlich über mehrere Zeilen umgebrochen werden sollte. Aber Halt: Hier haben wir ein neues Problem zu lösen!
       </fo:block>
     </fo:flow>
   </fo:page-sequence>
 </fo:root>

Wir erkennen zahlreiche XML-Elemente zum angegebenen Namensraum "fo". Sie werden Formatierungsobjekte genannt. Ihre Attribute legen zahlreiche Eigenschaften für sie fest; diese Attribute heißen Formatierungseigenschaften.


© Alfred Nussbaumer, Weblog