Tobi: XSL-FO: Tabellenumbruch auf nächste Seite

Beitrag lesen

So, ich habe deine Anregungen mal ausprobiert. Nun habe ich immerhin Text auf den restlichen Seiten. Allerdings wird nach wie vor die der Header der ersten Seite für etwa 11 Seiten (komplette Tabelle) benutzt, und danach folgen nochmal soviele Seiten mit dem kleineren Header der restlichen Seiten.
Ich weiss auch in etwa an was das liegt. Da die Tabelle zu groß für eine Seite ist, nimmt er die Vorlage für die erste Seite so lange, bis die Tabelle komplett ist. Danach wird erst die Vorlage für die restlichen Seiten benutzt.
Das Problem ist, dass ich nicht berechnen Kann, wie groß die Tabelle auf der ersten Seite sein wird, um Sie dann auf eine bestimmte Zeilenanzahl zu beschränken. Die Tabelle wird mittels XSLT automatisch aus einer XML Datei ausgelesen.
Gibt es da eventuell noch eine andere Lösung, außer die größe der Tabelle auf der ersten Seite zu berechnen ?
Habe das übrigens auch mal mit normalem Text ausprobiert. Aber da besteht das selbe Problem. Sobald der Text mehr Platz braucht, als auf der ersten Seite vorhanden ist, wird immer wieder die Vorlage der ersten Seite benutzt, bis der Text komplett ist.

Nachfolgend habe ich mal mein Template gepostet. Vielleicht habe ich ja auch nur einen groben Denkfehler gemacht, und seh in nicht :) :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

fo:layout-master-set
  <fo:simple-page-master master-name="erste" page-width="210mm" page-height="297mm">
   <fo:region-body region-name="xsl-region-body" margin-top="63mm" margin-bottom="1cm"/>
   <fo:region-before region-name="bigheader" margin-left="1cm"/>
  </fo:simple-page-master>

<fo:simple-page-master master-name="restliche" page-width="210mm" page-height="297mm">
   <fo:region-body region-name="xsl-region-body" margin-top="25mm" margin-bottom="1cm"/>
   <fo:region-before region-name="smallheader" margin-left="1cm"/>
  </fo:simple-page-master>

<fo:page-sequence-master master-name="document">
   <fo:single-page-master-reference page-position="first" master-reference="erste"/>
   <fo:repeatable-page-master-reference page-position="rest" master-reference="restliche"/>
  </fo:page-sequence-master>
 </fo:layout-master-set>

<fo:page-sequence master-reference="erste">
  <fo:static-content flow-name="bigheader">
   <fo:block margin-left="5mm" margin-bottom="5mm" margin-top="10mm" font-size="28pt" font-weight="bold">
    <fo:external-graphic src="pix/globe_50.GIF" margin-right="3mm"/><xsl:value-of select="xml/bigpageheader/h1"/>
   </fo:block>
   <fo:block margin-left="22mm" margin-bottom="3mm" font-size="12pt" font-weight="bold">
    <fo:inline color="rgb(0,100,255)"><xsl:value-of select="xml/bigpageheader/sub1"/></fo:inline>
   </fo:block>
   <fo:block margin-left="22mm" margin-bottom="5mm" font-size="12pt">
    <fo:inline color="rgb(0,100,255)"><xsl:value-of select="xml/bigpageheader/sub2"/></fo:inline>
   </fo:block>
   <fo:block margin-left="22mm" font-size="12pt">
    <fo:inline color="rgb(0,100,255)"><xsl:value-of select="xml/bigpageheader/sub3"/></fo:inline>
   </fo:block>
   <fo:block margin-left="22mm" font-size="12pt">
    <fo:inline color="rgb(0,100,255)"><xsl:value-of select="xml/bigpageheader/sub4"/></fo:inline>
   </fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">

<fo:table border-style="solid" border-width="1pt">
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt" background-color="grey"/>
    <fo:table-column border-style="solid" border-width="1pt" background-color="grey"/>
    <fo:table-column border-style="solid" border-width="1pt" background-color="grey"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    fo:table-header
     <fo:table-row background-color="black" color="white">
      <xsl:for-each select="xml/tableheader/tableheadercol">
       <fo:table-cell border-style="solid" border-width="1pt">
        <fo:block font-weight="bold"><xsl:value-of select="name"/></fo:block>
       </fo:table-cell>
      </xsl:for-each>
     </fo:table-row>
    </fo:table-header>

fo:table-body
     <xsl:for-each select="xml/body/bodyrow">
      fo:table-row
       <xsl:for-each select="bodycol">
       fo:table-cell
        fo:block<xsl:value-of select="name"/></fo:block>
       </fo:table-cell>
       </xsl:for-each>
      </fo:table-row>
     </xsl:for-each>
    </fo:table-body>

</fo:table>

</fo:flow>
 </fo:page-sequence>

<fo:page-sequence master-reference="restliche">
  <fo:static-content flow-name="smallheader">
   <fo:block margin-left="5mm" margin-top="10mm" font-size="10pt" font-weight="bold">
    <fo:external-graphic src="pix/globe_20.gif" margin-right="33mm"/>
    <xsl:value-of select="xml/smallpageheader/sub1"/>
   </fo:block>
   <fo:block margin-left="44mm" margin-bottom="3mm" font-size="10pt">
    <xsl:value-of select="xml/smallpageheader/sub2"/> fo:page-number/
   </fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">

<fo:table border-style="solid" border-width="1pt">
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    <fo:table-column border-style="solid" border-width="1pt"/>
    fo:table-header
     <fo:table-row background-color="rgb(0,128,255)">
      <xsl:for-each select="xml/tableheader/tableheadercol">
       <fo:table-cell border-style="solid" border-width="1pt">
        <fo:block font-weight="bold"><xsl:value-of select="name"/></fo:block>
       </fo:table-cell>
      </xsl:for-each>
     </fo:table-row>
    </fo:table-header>

fo:table-body
     <xsl:for-each select="xml/body/bodyrow">
      fo:table-row
       <xsl:for-each select="bodycol">
       fo:table-cell
        fo:block<xsl:value-of select="name"/></fo:block>
       </fo:table-cell>
       </xsl:for-each>
      </fo:table-row>
     </xsl:for-each>
    </fo:table-body>

</fo:table>

</fo:flow>
 </fo:page-sequence>

</fo:root>
</xsl:template>

</xsl:stylesheet>