• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

XSL help required to display PDF

 
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi All
I am using xsl to generate PDF reports from XML.
my XML file looks like
<?xml version="1.0" encoding="UTF-8"?>
<TRADEDATA>
<reportname>CurrencyOverLay New Trades as on 2003-12-22</reportname>
<RECORD>
<TradeDate1>2003-12-19 00:00:00.0</TradeDate1>
<Account>R002</Account>
<TradeDate>2003-12-19 00:00:00.0</TradeDate>
<Side>FBY</Side>
<PrimaryCcy>GBP</PrimaryCcy>
<SecondaryCcy>JPY</SecondaryCcy>
<TradeNumber>43TN295642001</TradeNumber>
<PrimaryAmount>1,720,000</PrimaryAmount>
<SecondaryAmount>324,078,960</SecondaryAmount>
<Rate>188.418</Rate>
<SettleDate>2004-04-06 00:00:00.0</SettleDate>
<BrokerName>MORGAN STANLEY SECURITIES</BrokerName>
<STATUS>NEW TRADE</STATUS>
</RECORD>
<RECORD>
<TradeDate1>2003-12-20 00:00:00.0</TradeDate1>
<Account>R002</Account>
<TradeDate>2003-12-19 00:00:00.0</TradeDate>
<Side>FBY</Side>
<PrimaryCcy>USD</PrimaryCcy>
<SecondaryCcy>JPY</SecondaryCcy>
<TradeNumber>43TN295677201</TradeNumber>
<PrimaryAmount>3,030,000</PrimaryAmount>
<SecondaryAmount>325,725,000</SecondaryAmount>
<Rate>107.5</Rate>
<SettleDate>2004-04-06 00:00:00.0</SettleDate>
<BrokerName>MORGAN STANLEY SECURITIES</BrokerName>
<STATUS>NEW TRADE</STATUS>
</RECORD>
<TRADEDATA>
i had written an xsl file to display this xml as pdf reports as below.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl utput method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<!-- ========================= -->
<!-- root element: TRADEDATA -->
<!-- ========================= -->
<xsl:template match="TRADEDATA">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="all-pages" page-height="28cm" page-width="40cm" margin-top="1cm" margin-bottom="1cm" margin-left="0.5cm" margin-right="0.5cm" >
<fo:region-body region-name="xsl-region-body" margin-top="2cm" margin-bottom="1cm" margin-left="0.2cm" margin-right="0.2cm" column-gap="0.2cm" padding="6pt" />
<fo:region-before region-name="xsl-region-before" extent="0.7in" display-align="after" padding="6pt 0.7in" />
<fo:region-after region-name="xsl-region-after" extent="0.3in" display-align="before" padding="6pt 0.7in" />
</fo:simple-page-master>
<fo age-sequence-master master-name="default-sequence">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference page-position="any" blank-or-not-blank="not-blank" master-reference="all-pages"/>
</fo:repeatable-page-master-alternatives>
</fo age-sequence-master>
</fo:layout-master-set>
<fo age-sequence master-reference="default-sequence">
<fo:static-content flow-name="xsl-region-before">
<fo:list-block font-size="8pt" font-family="Helvetica" font-weight="bold" provisional-distance-between-starts="5in" provisional-label-separation="0in">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block text-align="start" >
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()" margin-top="3cm">
<fo:block text-align="end" >
<xsl:value-of select="currentdate"/>
</fo:block>
<fo:block font-size="12pt" text-align="end" >
<fo:wrapper >Bank</fo:wrapper>
</fo:block>
<fo:block font-size="12pt" text-align="end" >
<fo:wrapper >Japan Ltd.</fo:wrapper>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</fo:static-content>
<fo:static-content flow-name="xsl-region-after">
<fo:list-block font-size="12pt" font-family="Times" provisional-distance-between-starts="3in" provisional-label-separation="0in">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block text-align="start" >
��
<fo:basic-link external-destination="url(http://www.nfo.com/)" color="#0000C0" text-decoration="underline">
nfo
</fo:basic-link>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block text-align="end" >
page <fo age-number/> of <fo age-number-citation ref-id="endofdoc"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block text-align="center" font-size="16pt" font-weight="bold" space-after="5mm"><xsl:value-of select="reportname"/>
</fo:block>
<fo:block margin-top="1pt" font-size="12pt" keep-with-next.within-column="always" keep-together.within-column="always" >
<fo:table table-layout="fixed" >
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="3.5cm"/>
<fo:table-column column-width="2.5cm"/>
<fo:table-column column-width="2.5cm"/>
<fo:table-column column-width="3.5cm"/>
<fo:table-column column-width="3.5cm"/>
<fo:table-column column-width="3.5cm"/>
<fo:table-column column-width="4.0cm"/>
<fo:table-column column-width="2.0cm"/>
<fo:table-column column-width="3.5cm"/>
<fo:table-column column-width="3.5cm"/>
<fo:table-column column-width="3.5cm"/>
<fo:table-header >
<fo:table-row height="18pt" >
<fo:table-cell starts-row="true" text-align="center" display-align="center" padding="6pt" number-columns-spanned="0" >
<fo:block margin-top="1pt" font-size="6pt" font-weight="bold" space-before="6pt" space-after="6pt" keep-with-next.within-column="always" keep-together.within-column="always" text-align="center">
<fo:wrapper text-decoration="underline"><xsl:value-of select="projecttitle"/></fo:wrapper>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="15pt" padding-top="5pt">
<fo:table-cell text-align="center" column-width="2cm">
<fo:block>Account</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center" column-width="3.5cm">
<fo:block>TradeDate</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center" column-width="2.5cm">
<fo:block>Side</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="2.5cm">
<fo:block>PrimaryCcy</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="3.5cm">
<fo:block>SecondaryCcy</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="3.5cm">
<fo:block>TradeNumber</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="3.5cm">
<fo:block>PrimaryAmount</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="4.5cm">
<fo:block>SecondaryAmount</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="3.5cm">
<fo:block>Rate</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="3.5cm">
<fo:block>SettleDate</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="3.5cm">
<fo:block>BrokerCode</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" column-width="3.5cm">
<fo:block>Status</fo:block>
</fo:table-cell>
</fo:table-row>

<fo:table-row height="18pt" padding="4pt">
<fo:table-cell starts-row="true" text-align="center" display-align="center" padding="4pt" number-columns-spanned="12" >
<fo:block >
<fo:leader leader-pattern="rule" leader-length="100%" rule-thickness="1.0pt" rule-style="solid" color="black" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body >
<xsl:apply-templates/>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block id="endofdoc"/>
</fo:flow>
</fo age-sequence>
</fo:root>
</xsl:template>
<!-- ========================= -->
<!-- child element: member -->
<!-- ========================= -->
<xsl:template match="RECORD">
<fo:table-row height="1pt" padding-top="1pt">
<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="Account"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="TradeDate"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="Side"/>
</fo:block>
</fo:table-cell>

<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="PrimaryCcy"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="SecondaryCcy"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="TradeNumber"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="PrimaryAmount"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="center">
<xsl:value-of select="SecondaryAmount"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of select="Rate"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of select="SettleDate"/>
</fo:block>
</fo:table-cell>

<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of select="BrokerName"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of select="STATUS"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
</xsl:stylesheet>
i am getting all the above details in a single PDF page.
i am trying to display in different pages based on TradeDate1 element of above XML.
I wanted to display all the records that have same TradeDate1 in one [page and move to next page when TradeDate1 changes.
If anybody has worked on this kind of application please let me know how to approach.
Regards
Deepa
[ December 25, 2003: Message edited by: Deepa Natrajan ]
 
author and deputy
Posts: 3150
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Two steps.
1. Identify using XPath what data shd go where according to TradeDate.
2. Create new fo age-sequence for every different Tradedate. This will help you to display different data in different pages.
If you are using apache fop,please check the docs folder for examples.
if you can't understand my reply please post back.
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic