I have a problem with determining the number of detail
records that should be displayed on the first page of a report. The report consists of a title, a summary table (that can be
one to many rows) ** this is the root of my problem ** then a detail for each record (2 rows per record) there can
be 1000’s of records. The first version of this xsl that I coded processed
everything within one page-sequence, so that worked as far as layout is
concerned, but the performance was terrible. So the current version of the xsl has the first page in one
page-sequence (title, summary table, n # of records) then each page after the first contains a known number of
records, each within it’s own page-sequence. If the summary table was a fixed size, everything would work
fine, but it can be different sizes so the number of records that should appear on the first page varies. Right now the
xsl is code as 11 records on the first page and 21 on every other, which works fine if the summary table contains only one row, but if it
contains 4 rows (or 15 for that matter) everything is thrown off. So I cannot figure out how to determine how many records to
place on the first page dynamically? Also I don’t like the logic in the RECORD template
below, although if the size of the components on the first page is static, it
seems to work just fine. Any help is greatly appreciated. relevant XSL fo:layout-master-set>
<fo:simple-page-master
master-name="page" page-width="11in" page-height="8.5in">
<fo:region-body region-name="body" margin-top="0.5in"
margin-bottom="1in"
margin-left="0.5in" margin-right="0.5in">
</fo:region-body>
<fo:region-after region-name="footer" extent=".75in">
</fo:region-after>
</fo:simple-page-master>
<fo:simple-page-master master-name="contentpage"
page-width="11in" page-height="8.5in"> <fo:region-body
region-name="contentbody" margin-top="0.5in"
margin-bottom="1in"
margin-left="0.5in"
margin-right="0.5in">
</fo:region-body>
<fo:region-after region-name="footer" extent=".75in">
</fo:region-after>
</fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="page"> <fo:flow> … xsl to produce
title, summary table, detail heading <xsl:call-template
name="RECORD">
<xsl:with-param name="pagegroup">11</xsl:with-param>
</xsl:call-template> </fo:flow> </fo:page-sequence> <xsl:if test="count(FILE/RECORDS/RECORD) >
11">
<fo:page-sequence master-reference="contentpage">
<fo:static-content flow-name="footer"
xsl:use-attribute-sets="base">
<fo:block text-align="center"> Page
<fo:page-number/>
</fo:block>
</fo:static-content>
<fo:flow flow-name="contentbody">
<xsl:call-template
name="RECORD">
<xsl:with-param name="pagegroup">21</xsl:with-param>
</xsl:call-template>
</fo:flow>
</fo:page-sequence>
</xsl:if> </fo:root> </xsl:template> <xsl:template name="RECORD"> <xsl:param
name="pagegroup"/> <xsl:for-each
select="FILE/RECORDS/RECORD|following-sibling::RECORD[position() <
$pagegroup]">
<xsl:if test="$pagegroup = 21"> <xsl:if
test="position() > 11">
<xsl:call-template name="DETAIL"/> </xsl:if>
</xsl:if>
<xsl:if test="$pagegroup = 11">
<xsl:if test="position() < 12">
<xsl:call-template name="DETAIL"/> </xsl:if>
</xsl:if>
</xsl:for-each> </xsl:template> <xsl:template name="DETAIL"> …. produces tht detail records (2 rows
each) </xsl:template> Danny Gallagher The Gainer Group 6525 The |
- control number of records per page Danny
- Re: control number of records per page Jeremias Maerki