next up previous contents
Nächste Seite: 4.6 Formatierer Aufwärts: 4 XSL-FO Vorherige Seite: 4.4 Inhalte einer Seite   Inhalt


4.5 Generierung mit XSLT

Die Daten, die mit XSL-FO ausgegeben werden sollen, werden im allgemeinen mittels XSLT in dieses Format gebracht. Der grundsätzliche Aufbau sieht so aus, dass in der Vorlage für das Wurzeldokument der allgemeine Rahmen und alle Seitendefinitionen gesetzt werden. Dann werden abhängig vom Inhalt verschiedene Vorlagen aufgerufen, die eventuell ganze Seiten mit Inhalt füllen oder die entsprechenden Daten in ein XSL-FO-Element einfügen. In vielen Fällen können die statischen Inhalte direkt bestimmt werden und nur die fließenden werden über verschiedene Template-Aufrufe festgelegt. Der Aufbau dieses XSLT-Dokumentes stellt natürlich nur eine mögliche Variante dar. Wie bei anderen XSL-Transformationen ist der Aufbau abhängig von dem zu Grunde liegenden XML-Dokument. Die Kombination aus XSLT und XSL-FO zeigt aber deutlich, wie die Zusammenarbeit funktioniert und bildet ein Beispiel für ein Dokument, in dem die Elemente zweier Namensräume benutzt werden.

Beispiel 4.5.1:
<?xml version="1.0"?>
<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:output method="xml"/>
<!-- Grundgeruest in der Wurzelvorlage -->
<xsl:template match="/">
 <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
     ...
  </fo:layout-master-set>
  <fo:page-sequence master-reference="title">
  
 <!-- Der Autor als statischer Inhalt unten auf der Seite -->
   <fo:static-content flow-name="xsl-region-after">
    <fo:block font-size="12pt" text-align="center">
      <xsl:value-of select="//Autor"/>
    </fo:block>
   </fo:static-content>
   
 <!-- Der fliessende Inhalt im Seitenkoerper -->
   <fo:flow flow-name="xsl-region-body">
    <fo:block font-size="24pt" text-align="center">
 <!-- bestehend aus allen selektierten Daten -->
     <xsl:value-of select="//daten"/>
    </fo:block>
 <!-- und einzelnen Bloecken fuer jede Person -->   
    <xsl:for-each select="//person">
     <fo:block font-size="20pt" text-align="center">
 <!-- der Inhalt wird durch andere Templates bestimmt -->
      <xsl:apply-templates select="//persinfo"/>
     </fo:block>					
    </xsl:for-each>
   </fo:flow>
  </fo:page-sequence>
 </fo:root>
</xsl:template>

<xsl:template match="persinfo">
  <xsl:value-of select="name"/>
</xsl:template>

</xsl:stylesheet>
Die Ideen für den Einsatz von XSL-FO gehen noch weiter. So könnten die beschriebenen Seiten nicht nur mittels eines Formatierers umgewandelt und gedruckt werden, auch eine Integration in Browser wäre denkbar. Es wäre auch möglich mittels XSL-FO bezüglich des Layouts beschriebene XML-Daten direkt grafisch im Browser darzustellen und dadurch einen qualitativ hochwertigeren Ausdruck zu erzeugen.
next up previous contents
Nächste Seite: 4.6 Formatierer Aufwärts: 4 XSL-FO Vorherige Seite: 4.4 Inhalte einer Seite   Inhalt
Tanja Schniederberend 2003-06-11