[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Multi page pdf using fop-one page for each person

Subject: RE: Multi page pdf using fop-one page for each person tag
From: "Khan, Atique \(IT\)" <Atiqur.Khan@xxxxxxxxxxxxxxxxx>
Date: Fri, 4 Apr 2008 11:56:59 +0100
RE:  Multi page pdf using fop-one page for each person
Hi Ken,
I was able to proceed with this and got stuck as its overwriting on the
first page only. Each of the employee tags need to go into a separate
page in the pdf. When I am creating the pdf its writing on the first
page only without advancing to the next page. Can you please point out
the mistake in my xsl template. A sample xml & xsl is below:

<resultset>
  <employee>
    <row>
      <data_description>Payment Company</data_description>
      <data_value>ABC UK Ltd</data_value>
      <data_display_type>1</data_display_type>
      <display_order>10</display_order>
    </row>
    <row>
      <data_description>Employee Name</data_description>
      <data_value>Mr A Lastname</data_value>
      <data_display_type>2</data_display_type>
      <display_order>10</display_order>
    </row>
    ...
    </employee>
    <employee>
    ...
    </employee>
    .
    .
</resultset>

My xsl template is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="resultset">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <!-- defines page layout -->
            <fo:layout-master-set>
                <!-- layout for the first page -->
                <fo:simple-page-master margin-bottom="0cm"
margin-left="0cm" margin-right="0cm" margin-top="0cm" master-name="ukA4"
page-height="29.704cm" page-width="20.990cm">
                    <fo:region-body background-repeat="no-repeat"
margin-bottom="0cm" margin-left="0cm" margin-right="0cm"
margin-top="0cm"/>
                    <fo:region-before extent="2cm" precedence="true"/>
                    <fo:region-after extent="0cm" precedence="true"/>
                    <fo:region-start extent="0cm"/>
                    <fo:region-end extent="0cm"/>
                </fo:simple-page-master>
                <fo:page-sequence-master master-name="simpleDoc" >
                    <fo:repeatable-page-master-alternatives>
                        <fo:conditional-page-master-reference
master-reference="ukA4"/>
                    </fo:repeatable-page-master-alternatives>
                </fo:page-sequence-master>
            </fo:layout-master-set>
            <!-- end: defines page layout -->
            <!-- actual layout -->
            <!-- <fo:page-sequence master-reference="simpleDoc">-->

            <fo:page-sequence master-reference="simpleDoc"
initial-page-number="1" force-page-count="odd">
                <!-- usage of page layout -->
                <!-- header -->
                <fo:static-content flow-name="xsl-region-start"/>
                <!-- Body -->
                <fo:flow flow-name="xsl-region-body">
                    <xsl:apply-templates/>
                </fo:flow>
            </fo:page-sequence>

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

    <!-- <xsl:template match="resultset">
        <xsl:for-each select="employee">
            <xsl:flow flow-name="xsl-region-body">
                <xsl:apply-templates />
            </xsl:flow>
        </xsl:for-each>
    </xsl:template>-->

    <xsl:template match="employee">
        <fo:block-container height="29.704cm" left="0cm"
position="absolute" top="0cm" width="0.404cm">
            <fo:block/>
        </fo:block-container>
        <fo:block-container height="1.97cm" left="0cm"
position="absolute" top="0cm" width="29.704cm">
            <fo:block/>
        </fo:block-container>
        <fo:block-container height="29.704cm" left="20.65cm"
position="absolute" top="0cm" width="0.404cm">
            <fo:block/>
        </fo:block-container>

        <!-- Payslip footer -->
        <fo:block-container height="1.834cm" left="0.515cm"
position="absolute" top="27.8342cm" width="5.5cm"
background-color="#FFFFFF" padding-left="0cm">
            <fo:block>
                <fo:external-graphic
src="url(file:///webapp/images/Logo_Black.jpg)" height="1.24cm"
width="5.29cm"/>
            </fo:block>
        </fo:block-container>
        <fo:block-container height="1.834cm" left="15.145cm"
position="absolute" top="28.4242cm" width="5.5cm"
background-color="#FFFFFF" padding-left="0cm">
            <fo:block font-family="Arial" font-weight="normal"
font-size="10.00pt" color="#000000" text-align="end"> PRIVATE AND
CONFIDENTIAL
            </fo:block>
        </fo:block-container>

        <!-- Payslip main header -->
        <fo:block-container height="0.53cm" left="0.7cm"
position="absolute" top="1.2cm" width="13.33cm" border-width="0.5pt"
border-style="solid" border-color="#000000" padding-top="0.11cm"
padding-bottom="0.07cm" padding-left="0.125cm">
            <fo:block font-family="Arial" font-weight="normal"
font-size="9pt" line-height="0.5pt" text-align="start" color="#000000"
padding="0.25cm">
                <xsl:for-each select="row">
                    <xsl:choose>
                        <xsl:when test="data_display_type=1">
                            <xsl:value-of select="data_value"/>
                        </xsl:when>
                    </xsl:choose>
                </xsl:for-each>
            </fo:block>
        </fo:block-container>

        <!-- Paydate -->
        <fo:block-container height="0.53cm" left="14.6087cm"
position="absolute" top="1.2cm" width="5.875cm" border-width="0.5pt"
border-style="solid" border-color="#000000" padding-top="0.11cm"
padding-bottom="0.07cm" padding-left="0.125cm">
            <fo:block font-size="11pt" text-align="left">
                <fo:table table-layout="fixed" height="0.4808cm">
                    <fo:table-column column-width="2.2cm"/>
                    <fo:table-column column-width="0.750cm"/>
                    <fo:table-column column-width="2.75cm"/>
                    <fo:table-body font-size="11pt" color="#000000">
                        <fo:table-row color="#000000" height="0.4808cm">
                            <fo:table-cell font-family="ArialBold"
font-weight="bold" font-size="10pt" color="#000000"
vertical-align="middle">
                                <fo:block text-align="left"
vertical-align="middle"> Paydate </fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block/>
                            </fo:table-cell>
                            <fo:table-cell font-family="Arial"
font-weight="normal" font-size="9pt" color="#000000">
                                <fo:block text-align="start"
vertical-align="middle">
                                    <xsl:for-each select="row">
                                        <xsl:choose>
                                            <xsl:when
test="data_display_type=3">
                                                <xsl:value-of
select="data_value"/>
                                            </xsl:when>
                                        </xsl:choose>
                                    </xsl:for-each>
                                </fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                    </fo:table-body>
                </fo:table>
            </fo:block>
        </fo:block-container>

        <!-- Employee details on payslip -->
        <fo:block-container height="1.7974cm" left="0.7cm"
position="absolute" top="2.46955cm" width="13.30cm" border-width="0.5pt"
border-style="solid" border-color="#000000" padding-top="0.13cm"
padding-left="0.125cm">
            <fo:block font-family="ArialBold" font-weight="bold"
font-size="11.00pt" line-height="11.00pt" text-align="center">
                <fo:table table-layout="fixed" border-width="2pt"
border-color="#000000" height="1.7724cm">
                    <fo:table-column column-width="3.2cm"/>
                    <fo:table-column column-width="0.750cm"/>
                    <fo:table-column column-width="7.6cm"/>
                    <fo:table-body font-size="11pt" color="#000000">
                        <fo:table-row color="#000000" line-height="11pt"
height="0.5908cm">
                            <fo:table-cell font-family="ArialBold"
font-weight="bold" font-size="10pt" color="#000000"
vertical-align="bottom">
                                <fo:block text-align="left"
vertical-align="middle"> Employee Name </fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block/>
                            </fo:table-cell>
                            <fo:table-cell font-family="Arial"
font-weight="normal" font-size="9pt" color="#000000">
                                <fo:block text-align="start"
vertical-align="middle">
                                    <xsl:for-each select="row">
                                        <xsl:choose>
                                            <xsl:when
test="data_display_type=2 and display_order=10">
                                                <xsl:value-of
select="data_value"/>
                                            </xsl:when>
                                        </xsl:choose>
                                    </xsl:for-each>
                                </fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row color="#000000" line-height="11pt"
height="0.5908cm">
                            <fo:table-cell font-family="ArialBold"
font-weight="bold" font-size="10pt" color="#000000"
vertical-align="bottom">
                                <fo:block text-align="left"
vertical-align="middle"> Employee Number </fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block/>
                            </fo:table-cell>
                            <fo:table-cell font-family="Arial"
font-weight="normal" font-size="9pt" color="#000000">
                                <fo:block text-align="start"
vertical-align="middle">
                                    <xsl:for-each select="row">
                                        <xsl:choose>
                                            <xsl:when
test="data_display_type=2 and display_order=20">
                                                <xsl:value-of
select="data_value"/>
                                            </xsl:when>
                                        </xsl:choose>
                                    </xsl:for-each>
                                </fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row color="#000000" line-height="11pt"
height="0.5908cm">
                            <fo:table-cell font-family="ArialBold"
font-weight="bold" font-size="10pt" color="#000000"
vertical-align="middle">
                                <fo:block text-align="left"
vertical-align="middle"> Payment Method </fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block/>
                            </fo:table-cell>
                            <fo:table-cell font-family="Arial"
font-weight="normal" font-size="9pt" color="#000000">
                                <fo:block text-align="start"
vertical-align="middle">
                                    <xsl:for-each select="row">
                                        <xsl:choose>
                                            <xsl:when
test="data_display_type=2 and display_order=30">
                                                <xsl:value-of
select="data_value"/>
                                            </xsl:when>
                                        </xsl:choose>
                                    </xsl:for-each>
                                </fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                    </fo:table-body>
                </fo:table>
            </fo:block>
        </fo:block-container>
        .
        .
        .
    </xsl:template>
</xsl:stylesheet>

Thanks
Atique

-----Original Message-----
From: G. Ken Holman [mailto:gkholman@xxxxxxxxxxxxxxxxxxxx]
Sent: 04 April 2008 11:50
To: Khan, Atique (IT)
Cc: Ogievetsky, Nikita (APPLICATION SERVICES)
Subject: Re:  Multi page pdf using fop-one page for each person tag

Atique,

You have a colleague in New York who knows all about this ... I have
copied Nikita Ogievetsky on this email.

. . . . . . . . . . . . Ken

At 2008-04-04 12:46 +0200, I wrote:
>At 2008-04-04 11:01 +0100, Khan, Atique \(IT\) wrote:
>>I need to convert my xml data using xsl-fo template into pdf using
fop.
>>My XML data looks like
>>
>><resultset>
>>     <person>
>>     ...
>>     </person>
>>     <person>
>>     ...
>>     </person>
>>     <person>
>>     ...
>>     </person>
>>     .
>>     .
>></resultset>
>>
>>Each of the person tags need to go into a separate page in the pdf.
>>Can somebody please guide me with a sample xsl-fo template.
>
>I hope this helps.
>
>. . . . . . . . . Ken
>
>T:\ftemp>type khan.xml
><resultset>
>     <person>
>     ...
>     </person>
>     <person>
>     ...
>     </person>
>     <person>
>     ...
>     </person>
></resultset>
>
>T:\ftemp>type khan.xsl
><?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet
>xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>                 xmlns="http://www.w3.org/1999/XSL/Format"
>                 version="2.0">
>
><xsl:output indent="yes"/>
>
><xsl:template match="/">
><root font-family="Times" font-size="20pt">
>
>   <layout-master-set>
>     <simple-page-master master-name="frame"
>                         page-height="297mm" page-width="210mm"
>                         margin-top="15mm" margin-bottom="15mm"
>                         margin-left="15mm" margin-right="15mm">
>       <region-body region-name="frame-body"/>
>     </simple-page-master>
>   </layout-master-set>
>   <xsl:apply-templates/>
></root>
></xsl:template>
>
><xsl:template match="person">
>   <page-sequence master-reference="frame">
>     <flow flow-name="frame-body">
>       <block>This is a person</block>
>     </flow>
>   </page-sequence>
></xsl:template>
>
></xsl:stylesheet>
>T:\ftemp>xslt2 khan.xml khan.xsl khan.fo
>
>T:\ftemp>type khan.fo
><?xml version="1.0" encoding="UTF-8"?>
><root xmlns="http://www.w3.org/1999/XSL/Format" font-family="Times"
>font-size="2
>0pt">
>    <layout-master-set>
>       <simple-page-master master-name="frame" page-height="297mm"
> page-width="21
>0mm" margin-top="15mm"
>                           margin-bottom="15mm"
>                           margin-left="15mm"
>                           margin-right="15mm">
>          <region-body region-name="frame-body"/>
>       </simple-page-master>
>    </layout-master-set>
>     <page-sequence master-reference="frame">
>       <flow flow-name="frame-body">
>          <block>This is a person</block>
>       </flow>
>    </page-sequence>
>     <page-sequence master-reference="frame">
>       <flow flow-name="frame-body">
>          <block>This is a person</block>
>       </flow>
>    </page-sequence>
>     <page-sequence master-reference="frame">
>       <flow flow-name="frame-body">
>          <block>This is a person</block>
>       </flow>
>    </page-sequence>
></root>
>T:\ftemp>


--
Upcoming:  UBL Apr.22,24; genericode code lists Apr.23; Rome,Italy
World-wide corporate, govt. & user group XML, XSL and UBL training
RSS feeds:     publicly-available developer resources and training
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/m/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/m/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does
not intend to waive confidentiality or privilege. Use of this email is
prohibited when received in error.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.