Seiten- und einfache Seitenfolgen-Vorlagen

Es wird das Erstellen von Seiten- und einfachen Seitenfolgen-Vorlagen demonstriert und erklärt.

Im ersten Schritt wird der Aufbau bzw. die Aufteilung von Seiten, die als Seitenvorlagen beispielsweise für eine Titelseite, linke und rechte Seiten dienen, gezeigt (<fo:simple-page-master>). Diese Seitenvorlagen werden im zweiten Schritt zu Seitenfolgen zusammengestellt (<fo:page-sequence-master>). Im dritten Schritt werden innerhalb einer Seitenfolge (<fo:page-sequence>) die Seitenvorlagen mit Inhalten gefüllt.

Quellcode

<xsl:template match="/">                                                           ❶ 
   <fo:root>
      <fo:layout-master-set>
         <fo:simple-page-master master-name="PageMaster.Inhalt-rechts"             ❷ 
          margin="15mm 25mm 30mm 13mm" page-height="297mm" page-width="210mm">
            <fo:region-before region-name="Inhalt-rechts-davor" extent="20mm"      ❸
             display-align="before" border-after-style="solid" border-after-width="1pt"/>
            <fo:region-after region-name="Inhalt-rechts-danach"                    ❸
             border-before-style="none" extent="10mm" display-align="after" />
            <fo:region-body margin="25mm 0mm 15mm 0mm"/>
         </fo:simple-page-master>
         <fo:simple-page-master master-name="PageMaster.Inhalt-links"              ❷
          margin="15mm 13mm 30mm 25mm" page-height="297mm" page-width="210mm">
            <fo:region-before region-name="Inhalt-links-davor" extent="20mm"       ❸
             display-align="before" border-after-style="solid" border-after-width="1pt"/>
            <fo:region-after region-name="Inhalt-links-danach"                     ❸
             border-before-style="none" extent="10mm" display-align="after"/>
            <fo:region-body margin="5mm 0mm 7mm 0mm"/>                             ❸
         </fo:simple-page-master>
         <fo:page-sequence-master master-name="Inhalt-Seiten">                     ❹
            <fo:repeatable-page-master-alternatives>
               <fo:conditional-page-master-reference 
                master-reference="PageMaster.Inhalt-rechts" odd-or-even="odd"/>
               <fo:conditional-page-master-reference 
                master-reference="PageMaster.Inhalt-links" odd-or-even="even"/>
            </fo:repeatable-page-master-alternatives>
         </fo:page-sequence-master>
      </fo:layout-master-set>
      <fo:page-sequence master-reference="Inhalt-Seiten" initial-page-number="1">  ❺
         <fo:static-content flow-name="Inhalt-rechts-davor">                       ❻
            <fo:block font-family="Arial" font-size="8pt" text-align="right">
               Seite <page:number/>
            </fo:block>
         </fo:static-content>
         <fo:static-content flow-name="Inhalt-links-davor"/> 
            <fo:block font-family="Arial" font-size="8pt" text-align="left">
               Seite <page:number/>
            </fo:block>
         </fo:static-content>
         <fo:static-content flow-name="Inhalt-rechts-danach">                      ❻
            <fo:block font-family="Arial" font-size="8pt" text-align="center">
               Inhalt im Fußbereich, rechte Seite
            </fo:block> 
         </fo:static-content>
         <fo:static-content flow-name="Inhalt-links-danach">                       ❻
            <fo:block font-family="Arial" font-size="8pt" text-align="center">
               Inhalt im Fußbereich, linke Seite
            </fo:block>
         </fo:static-content>
         <fo:flow flow-name="xsl-region-body">
            <fo:block font-family="Arial" font-size="10pt">                        ❼
               <xsl:apply-templates/>
            </fo:block> 
         </fo:flow>
      </fo:page-sequence>
   </fo:root>
</xsl:template>

❶ Die Spezifikationen für die Seiten- und Seitenfolgen-Vorlagen werden in das Root-Template innerhalb von <fo:layout-master-set> innerhalb von <fo:root> geschrieben.

❷ Das Beispiel enthält zwei Seitenvorlagen (<fo:simple-page-master>), je eine für die linken und die rechten Seiten eines Buches. Das Attribut master-name gibt der hier definierten Seite einen Namen, der weiter unten referenziert wird. In weiteren Attributen werden die Seitenhöhe, -breite sowie die Ränder vom Blattrand festgelegt. Die Attributwerte für margin sind zu lesen als Rand oben, rechts, unten und links. Der rechte Rand einer rechten Seite ist also größer als der Bundsteg (linker Rand). Umgekehrtes gilt für die linken Seiten.

❸ Mit den Elementen <fo:region-before>, <fo:region-after>, <fo:region-start>, <fo:region-end> und <fo:region-body> werden die Größen und Eigenschaften der verschiedenen Bereiche (Kopfbereich, Fußbereich, Startbereich, Endbereich und Hauptbereich) spezifiziert. Abgesehen vom Hauptbereich brauchen die übrigen Bereiche lediglich dann spezifiziert werden, wenn sie in der Seitenvorlage auch benötigt werden. Das Attribut region-name gibt dem jeweiligem Bereich einen Namen, dieser dient weiter unten zur Zuordnung von Inhalten zu den Bereichen. Für Kopf- und Fußbereich wird in diesem Beispiel weiter spezifiziert, welche Höhe sie haben sollen (20mm bzw. 10mm), wie sie vertikal ausgerichtet sein sollen (im Kopfbereich oben angeschlagen, im Fußbereich unten) und ob und wie sie zum Hauptbereich abgegrenzt werden sollen (Der Kopfbereich mit einer durchgezogenen Linie, der Fußbereich nicht.) Für den Hauptbereich der Seiten werden mit dem Attribut margin die Ränder innerhalb des verbleibenden Bereichs festgelegt. In diesem Beispiel ist ein oberer Rand (zum Kopfbereich) und ein unterer Rand (zum Fußbereich) spezifiziert (5mm bzw. 7mm).

❹ Mit dem Element <fo:page-sequence-master> wird die Seitenfolge festgelegt. Das Attribut master-name gibt der Seitenfolge einen Namen, auf den im Element <fo:page-sequence> referenziert wird. Bei einer sich wiederholenden Seitenfolge (typischerweise für rechte und linke Seiten) werden die Spezifikationen in das Element <fo:repeatable-page-master-alternatives> eingekleidet. Mit dem Element <fo:conditional-page-master-reference> werden die Bedingungen für die Verwendung der jeweiligen Seitenvorlage festgelegt. Für die Seitenvorlage PageMaster.Inhalt-rechts wird bestimmt, dass sie für eine rechte Seite mit ungeraden Seitenzahlen gelten soll (odd-or-even="odd"). Für die linken Seiten gilt entsprechend der Wert even (gerade Seitenzahl).

❺ In dem Element <fo:page-sequence> werden jetzt die Festlegungen für die Seiten- und Seitenfolgen-Vorlagen mit den darin darzustellenden Inhalten verbunden. Das Attribut initial-page-number legt die Start-Seitenzahl für diese Folge fest.

❻ Für die verschiedenen <fo:static-content>-Elemente (Kopfbereich rechte Seite, Kopfbereich linke Seite, Fußbereich rechte Seite, Fußbereich linke Seite) werden innerhalb von Blöcken die statischen Inhalte festgelegt. Die im Beispiel gezeigten Inhalte haben lediglich demonstrativen Charakter. Zu den Inhalten und ihren Gestaltungen im Kopf- und Fußbereich siehe ansonsten den Abschnitt "Kopf- und Fußbereich".

❼ Innerhalb des Elements <fo:flow> mit dem vorgegebenen Namen xsl-region-body wird der Inhalt der XML-Instanz in die Seitenfolge einbezogen. Eine Seitenfolge hat genau ein <fo:flow>-Element, das nach allen <fo:static-content>-Elementen stehen muss. Mit <xsl:apply-templates> ohne das Attribut select wird in diesem Beispiel der gesamte Inhalt unterhalb des Root-Elements der XML-Instanz in diese Seitenfolge einbezogen. Dies gilt selbstverständlich nicht für jede definierte Seitenfolge.

 

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XSL-FO bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © dpunkt.verlag GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSL-FO in der Praxis" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, fon 06221-14830, fax 06221-148399, hallo(at)dpunkt.de