- From: Tanzila Mohammad <tmohammad@entier-solutions.com>
- Date: Tue, 27 Nov 2001 11:52:34 -0000
- To: <www-xsl-fo@w3.org>
Need help! My problem is with implementing certain rules for pushing data
from one page to another:
Rules:
(1) If a country is displayed on the previous page and its data is on the
next page - the country should be displayed on the next page. i.e
Page 1:
........
<end of page> Algeria
Page 2:
<start of page> Fertilizers 23 4532 52 25
Type 1 678 8897 897 879
Type 2 890 909 909 909
Would Require:
Page 2:
<start of page> Algeria
Fertilizers 23 4532 52 25
Type 1 678 8897 897 879
Type 2 890 909 909 909
(2) If a continent starts 2/3 lines before the end of a page - the continent
should be displayed on the next page.
I have XSL in place to create the pages but it is just the code required to
implement the rules. The XSL template that deals with displaying the values
is as follows:
G = Continent
D = Country
F = Fertilizers
FT = Fertilizer types
<xsl:template name="bodyContents">
<fo:flow flow-name="xsl-region-body"
font-size="6px"
font-family="Courier"
font-weight="bold"
space-before.optimum="10pt">
<fo:table
>
<fo:table-column column-width="3.5cm"/>
<fo:table-column column-width="1.25cm" number-columns-repeated="12"/>
<fo:table-body>
<xsl:for-each select="./faostat:table/faostat:table-row">
<fo:table-row>
<fo:table-cell>
<xsl:choose>
<xsl:when test="./@type='FT' or ./@type='G' or ./@type='D'">
<xsl:if test="./@type='G' or ./@type='D'">
<fo:block font-size="7px" text-indent="12pt" font-weight="bold"
space-after.optimum="0.5pt">
<xsl:value-of select="./faostat:row-title"/>
</fo:block>
</xsl:if>
<xsl:if test="./@type='FT'">
<fo:block text-indent="8pt" font-weight="bold"
space-after.optimum="0.5pt">
<xsl:value-of select="./faostat:row-title"/>
</fo:block>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<fo:block text-align="start" font-weight="bold"
space-after.optimum="0.5pt">
<xsl:value-of select="./faostat:row-title"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</fo:table-cell>
<xsl:for-each select="./faostat:row-value">
<fo:table-cell>
<fo:block text-align="center" font-weight="bold"
space-after.optimum="0.5pt">
<xsl:value-of select="."/>
<xsl:value-of select="following-sibling::faostat:row-symb"/>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
<xsl:if test="./@type='F' and
following-sibling::faostat:table-row[1]/@type='D'">
<fo:table-row>
<fo:table-cell>
<fo:block space-after.optimum="10pt">
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<xsl:if test="./@type='FT' and
following-sibling::faostat:table-row[1]/@type='D'">
<fo:table-row>
<fo:table-cell>
<fo:block space-after.optimum="10pt">
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<xsl:if test="./@type='F' and
following-sibling::faostat:table-row[1]/@type='G'">
<fo:table-row>
<fo:table-cell>
<fo:block space-after.optimum="10pt">
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<xsl:if test="./@type='FT' and
following-sibling::faostat:table-row[1]/@type='G'">
<fo:table-row>
<fo:table-cell>
<fo:block space-after.optimum="10pt">
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:flow>
</xsl:template>
Regards.
tanz
Received on Tuesday, 27 November 2001 06:52:04 UTC