Subject: RE: [xsl] xsl:fo table control question From: "Sami, Abdul (Netprosys)" <asami@xxxxxxxxxx> Date: Tue, 5 Feb 2002 16:52:31 -0800 |
Apache FOP automatically start new page if it is required. Below is the sample Xsl that i am using for generating pdf. It may help you. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="/"> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master margin-right="1.5cm" margin-left="1.5cm" margin-bottom="2cm" margin-top="1cm" page-width="21.59cm" page-height="27.94cm" master-name="first"> <fo:region-before extent="6cm"/> <fo:region-body margin-top="2.5cm"/> <fo:region-after extent="1.5cm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-name="first"> <fo:static-content flow-name="xsl-region-before"> <xsl:apply-templates select="report/header" /> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block padding-left="5cm"> <fo:table space-after.optimum="1pt" width="15cm"> <fo:table-column column-width="12cm"/> <fo:table-column column-width="3cm"/> <fo:table-body> <xsl:apply-templates select="report/components" /> </fo:table-body> </fo:table> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <xsl:template match="header"> <fo:table space-after.optimum="1pt"> <fo:table-column column-width="9cm"/> <fo:table-column column-width="9cm"/> <fo:table-body> <xsl:apply-templates select="lines" /> </fo:table-body> </fo:table> </xsl:template> <xsl:template match="header/lines"> <xsl:for-each select="line"> <xsl:if test="position()=1"> <fo:table-row space-after.optimum="1pt"> <fo:table-cell number-columns-spanned="2"> <fo:block space-before.optimum="3pt" space-after.optimum="5pt" line-height="12pt" font-size="10pt"> <xsl:value-of select="left" /> </fo:block> </fo:table-cell> </fo:table-row> </xsl:if> <xsl:if test="position()=2"> <fo:table-row line-height="14pt" background-color="#EEEEEE"> <fo:table-cell> <fo:block font-size="12pt" font-weight="bold" space-before.optimum="3pt" margin-left="3pt"> <xsl:value-of select="left" /> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block text-align="end" font-size="9pt" font-weight="bold"> <xsl:value-of select="right" /> </fo:block> </fo:table-cell> </fo:table-row> </xsl:if> <xsl:if test="position()=3"> <fo:table-row space-after.optimum="12pt" background-color="#EEEEEE" line-height="12pt"> <fo:table-cell> <fo:block font-size="9pt" space-before.optimum="3pt" margin-left="3pt"> <xsl:call-template name="space-4" /> <xsl:value-of select="left" /> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block text-align="end" font-size="9pt" font-weight="bold"> <xsl:value-of select="right" /> </fo:block> </fo:table-cell> </fo:table-row> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="components" > <xsl:apply-templates select="component" /> </xsl:template> <xsl:template match="component"> <xsl:apply-templates select="row | heading | summary" /> </xsl:template> <xsl:template match="row"> <fo:table-row font-size="10pt" border-bottom-color="black" border-bottom-width="1pt" border-bottom-style="solid" space-before.optimum="2pt"> <xsl:for-each select="cell"> <fo:table-cell> <xsl:if test="position()=1"> <xsl:call-template name="left-data-block" /> </xsl:if> <xsl:if test="position()=2"> <xsl:call-template name="center-data-block" /> </xsl:if> </fo:table-cell> </xsl:for-each> </fo:table-row> </xsl:template> <xsl:template name="left-data-block"> <fo:block text-align="start"> <xsl:value-of select="content" /> </fo:block> </xsl:template> <xsl:template name="center-data-block"> <fo:block text-align="center"> <xsl:value-of select="content" /> </fo:block> </xsl:template> <xsl:template name="right-data-block"> <fo:block text-align="end"> <xsl:value-of select="content" /> </fo:block> </xsl:template> <xsl:template name="left-indented-data-block"> <fo:block text-align="start"> <xsl:call-template name="space-4" /> <xsl:value-of select="content" /> </fo:block> </xsl:template> <xsl:template name="space-1"> <fo:inline white-space-collapse="false"><fo:character character=' '/></fo:inline> </xsl:template> <xsl:template name="space-4"> <xsl:call-template name="space-1" /> <xsl:call-template name="space-1" /> <xsl:call-template name="space-1" /> <xsl:call-template name="space-1" /> </xsl:template> <xsl:template match="heading"> <fo:table-row line-height="20pt" font-size="11pt" background-color="#EEEEEE" space-after.optimum="8pt" font-weight="bold" padding-left="3px" border-color="black" border-width="1pt" border-style="solid"> <xsl:for-each select="cell"> <fo:table-cell> <xsl:if test="position()=1"> <xsl:call-template name="left-data-block" /> </xsl:if> <xsl:if test="not(position()=1)"> <xsl:call-template name="center-data-block" /> </xsl:if> </fo:table-cell> </xsl:for-each> </fo:table-row> </xsl:template> <xsl:template match="summary"> <fo:table-row line-height="20pt" font-size="11pt" space-after.optimum="8pt" font-weight="bold" border-top-color="black" border-top-width="1pt" border-top-style="solid"> <xsl:for-each select="cell"> <fo:table-cell> <xsl:if test="position()=1"> <xsl:call-template name="left-data-block" /> </xsl:if> <xsl:if test="position()=2"> <xsl:call-template name="center-data-block" /> </xsl:if> </fo:table-cell> </xsl:for-each> </fo:table-row> </xsl:template> </xsl:stylesheet> -----Original Message----- From: Khalid [mailto:k_ali@xxxxxxxxxxxxxxx] Sent: Tuesday, February 05, 2002 12:35 PM To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] xsl:fo table control question Hello,I have just started experimenting xsl:fo,I was wondering if some one could guide me with problem. the data I am working with,comes from the db in xml format.My question is I guess how to manage the data in a way that should it span beyond the limits of one page,it goes to the page 2,but if the data withing a certain table is not that much to span on multiple pages,then only one <fo:table-row> must appear on a page and the next table-row section should go to the next page. below is the code I have ,hopefully it will elaborate a little more about my wuestion. <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name = "multi_table_test"> <fo:region-body region-name="body" margin-top="3pc" margin-bottom="10pc" margin-left="1pc" margin-right="1pc"/> <fo:region-before region-name="header" extent="2pc"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-name = "multi_table_test"> <fo:flow flow-name = "body"> <fo:table background-color="#FDFBD5" padding-left="2px" padding-right="2px" padding-bottom="2px" padding-top="0px" margin-left="0px" margin-right="0px" margin-bottom="0px" margin-top="0px" border-color="#93BEE2" border-style="solid" border-left-width="1px" border-right-width="1px" border-bottom-width="1px" border-top-width="1px" width="565pt"> <fo:table-body> <fo:table-row font-weight="bold"><!-- This row is created once to create the top headers --> <fo:table-cell> <fo:block> Description </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> Code </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> Amount Owing </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <!-- this is created dynamically depending upon the results in the database --> <fo:table-cell> <fo:block> Company 1 </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> PL100A6T </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> 124.35 </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <!-- this is created dynamically depending upon the results in the database.this where I want to have a control of some sort.that will determins that if theere isn't more data in this segment then create next table-row in the next page --> <fo:table-cell> <fo:block> Company 2 </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> PL101M6Z </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> 9678.55 </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:flow> </fo:page-sequence> </fo:root> Thanks XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] xsl:fo table control question, Khalid | Thread | [xsl] XSTL - Help / Easy one!, Ragan, Mitch |
[xsl] XSTL - Help / Easy one!, Ragan, Mitch | Date | [xsl] XSL output problem, Arief |
Month |