C#.NET * C++ * JAVASCRIPT * PYTHON * DIVERSES
XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT



XSL-FO / fo:repeatable-page-master-alternatives / fo:repeatable-page-master-alternatives

fo:repeatable-page-master-alternatives

fo:repeatable-page-master-alternatives

➪ Wenn die Seitenzahl auf der ersten Seite anders (oder gar nicht) angezeigt werden soll, kann dies nicht über Falluntercheidungen in XSL-FO gesteuert werden: Das erreichen Sie besser mit fo:repeatable-page-master-alternatives.

Auf dieser Seite:

Mögliche Attribute:

Mögliche Childnodes:

pic/fo_root.png

Die folgende FO-Struktur definiert ein fo:layout-master-set mit mehreren fo:simple-page-master, deren jeweilige fo:region detailliert deklariert werden. Von Bedeutung ist dabei insbesondere das Attribut region-name, das auf fo:page-sequence master-reference="alleSeiten" verweist, in der die einzelnen Regionen näher deklariert sind.

Dort (fo:static-content) wird auch klargestellt, ob eine Seitennummerierung fo:page-number stattfindet (flow-name="vorher" bzw. flow-name="vorher_letzte_Seite") oder nicht (flow-name="vorher_Seite1").

pic/fo_page_sequence_master.png

Die eigentliche Fallunterscheidung findet auf fo:page-sequence-master master-name="alleSeiten" mithilfe von fo:repeatable-page-master-alternatives statt. So verweist fo:conditional-page-master-reference page-position="first" master-reference="erste_Seite" via fo:region-before region-name="vorher_Seite1" auf fo:page-sequence[@master-reference="alleSeiten"]/fo:static-content[@flow-name="vorher_Seite1"]/fo:block, die keine Seitennummerierung vorsieht: DIE ERSTE SEITE: <!--<fo:page-number></fo:page-number>-->.

pic/fo_page_sequence.png


<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
 <fo:layout-master-set>
  <fo:simple-page-master 
      margin-right="15mm" 
      margin-left="2cm" 
      margin-bottom="1cm" 
      margin-top="2cm" 
      page-width="21cm" 
      page-height="297mm" 
      master-name="layout1">
   <fo:region-body 
       margin-right="5cm" 
       margin-bottom="15mm" 
       margin-top="35mm" 
       margin-left="45mm" 
       background-color="lightgrey" />
   <fo:region-before 
       region-name="vorher" 
       extent="30mm" 
       background-color="#FFFF33" />
   <fo:region-after 
       region-name="nachher" 
       extent="7mm" 
       background-color="#B0E0E6" />
   <fo:region-start 
       region-name="hiergehtslos" 
       extent="30mm" 
       background-color="#CC99FF" />
   <fo:region-end 
       region-name="hierhoertsauf" 
       extent="45mm" 
       background-color="#CEFF00" />
  </fo:simple-page-master>
  <fo:simple-page-master 
      margin-right="15mm" 
      margin-left="2cm" 
      margin-bottom="1cm" 
      margin-top="2cm" 
      page-width="21cm" 
      page-height="297mm" 
      master-name="erste_Seite">
   <fo:region-body 
       margin-right="5cm" 
       margin-bottom="15mm" 
       margin-top="35mm" 
       margin-left="45mm" 
       background-color="lightgrey" />
   <fo:region-before 
       region-name="vorher_Seite1" 
       extent="30mm" 
       background-color="#FFFF33" />
   <fo:region-after 
       region-name="nachher" 
       extent="7mm" 
       background-color="#B0E0E6" />
   <fo:region-start 
       region-name="hiergehtslos" 
       extent="30mm" 
       background-color="#CC99FF" />
   <fo:region-end 
       region-name="hierhoertsauf" 
       extent="45mm" 
       background-color="#CEFF00" />
  </fo:simple-page-master>
  <fo:simple-page-master 
      margin-right="15mm" 
      margin-left="2cm" 
      margin-bottom="1cm" 
      margin-top="2cm" 
      page-width="21cm" 
      page-height="297mm" 
      master-name="letzte_Seite">
   <fo:region-body 
       margin-right="5cm" 
       margin-bottom="15mm" 
       margin-top="35mm" 
       margin-left="45mm" 
       background-color="lightgrey" />
   <fo:region-before 
       region-name="vorher_letzte_Seite" 
       extent="30mm" 
       background-color="#FFFF33" />
   <fo:region-after 
       region-name="nachher" 
       extent="7mm" 
       background-color="#B0E0E6" />
   <fo:region-start 
       region-name="hiergehtslos" 
       extent="30mm" 
       background-color="#CC99FF" />
   <fo:region-end 
       region-name="hierhoertsauf" 
       extent="45mm" 
       background-color="#CEFF00" />
  </fo:simple-page-master>
  <fo:page-sequence-master master-name="alleSeiten">
      <fo:repeatable-page-master-alternatives>
          <fo:conditional-page-master-reference 
              page-position="first" 
              master-reference="erste_Seite"/>
          <fo:conditional-page-master-reference 
              page-position="rest" 
              master-reference="layout1"/>
          <fo:conditional-page-master-reference 
              page-position="last" 
              master-reference="letzte_Seite"/>
      </fo:repeatable-page-master-alternatives>
  </fo:page-sequence-master>
 </fo:layout-master-set>
 <fo:page-sequence master-reference="alleSeiten">
    <fo:static-content 
        flow-name="vorher">
        <fo:block 
            text-align="center" 
            font-size="9pt" 
            color="gray" 
            font-weight="bold">Seite 
                <fo:page-number></fo:page-number>
        </fo:block>
        <fo:block 
           text-align="center">vorher: xsl-region-before</fo:block>
    </fo:static-content>
    <fo:static-content 
        flow-name="vorher_Seite1">
        <fo:block 
            text-align="center" 
            font-size="9pt" 
            color="gray" 
            font-weight="bold">
                DIE ERSTE SEITE:
                <!--<fo:page-number></fo:page-number>-->
        </fo:block>
        <fo:block 
            text-align="center">vorher: xsl-region-before</fo:block>
    </fo:static-content>
    <fo:static-content 
        flow-name="vorher_letzte_Seite">
        <fo:block 
            text-align="center" 
            font-size="9pt" 
            color="gray" 
            font-weight="bold">
                Das ist ja wohl das Letzte: Seite 
                <fo:page-number></fo:page-number>
        </fo:block>
        <fo:block 
            text-align="center">vorher: xsl-region-before</fo:block>
    </fo:static-content>
    <fo:static-content 
        flow-name="hierhoertsauf">
        <fo:block 
            text-align="center">hierhoertsauf: xsl-region-end</fo:block>
    </fo:static-content>
    <fo:static-content flow-name="hiergehtslos">
       <fo:block text-align="center">hiergehtslos: xsl-region-start</fo:block>
    </fo:static-content>
    <fo:static-content flow-name="nachher">
       <fo:block text-align="center">nachher: xsl-region-after</fo:block>
    </fo:static-content>
    <fo:flow flow-name="xsl-region-body">
       <fo:block text-align="center">xsl-region-body</fo:block>
       <fo:block 
           text-align="left">GANZ VIEL Text Text Text Text Text </fo:block>
    </fo:flow>
 </fo:page-sequence>
</fo:root>

Die erste Seite hat keine Nummerierung:

pic/fo_repeatable_page_master_alternatives_1.png

Die folgenden Seiten haben eine Standard-Nummerierung:

pic/fo_repeatable_page_master_alternatives_2.png

Die letzte Seite hat eine Nummerierung mit Sonderbemerkung:

pic/fo_repeatable_page_master_alternatives_3.png

wg / 3. Mai 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/fo_repeatable_page_master_alternatives_1.html