You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Ail Sahin <al...@as-support.com> on 2005/11/21 17:23:35 UTC
Letter in xsl
Hi there,
I have some problems creating a certain XSL:FO file.
I'd like to create series letters respective account statements for
n-customers.
The XML-Data is managed like followed:
<data>
<page>
<name>
Mr. X
</name>
<street>
X-Street 1
</street>
<city>
Ownedtown
</city>
<header>
Accountstatement
</header>
<maintext>
Foo Bar
</maintext>
<column0>
Documentnumber
</column0>
<column1>
Documenttext
</column1>
<column2>
Debit/Credit
</column2>
<body>
<voucher>
<docnumber>
1
</docnumber>
<doctext>
Invoice
</doctext>
<amount>
100
</amount>
</voucher>
.
n-vouchers
.
<voucher>
<docnumber>
100
</docnumber>
<doctext>
Invoice
</doctext>
<amount>
120
</amount>
</voucher>
</body>
</page>
<page>
same as obove
</page>
</data>
One 'page' is one customer with its n-Vouchers. The first page should
contain receipient address, subject,
columnnames, text etc and the list of vouchers.
That works fine but when there are many vouchers, a second page ist
printed, but with the receipient adress, subject etc.
How to handle this?`
The XSL-File:
<xsl:template match ="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-reference="main"
page-height="29.7cm"
page-width="21cm"
margin-top="6.0cm"
margin-bottom="1.5cm"
margin-left="1.5cm"
margin-right="1.5cm">
<fo:region-before extent="8.0cm"/>
<fo:region-after extent="2.0cm"/>
<fo:region-body margin-top="7.0cm" margin-bottom="0.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<xsl:for-each select="data/page">
<fo:page-sequence master-name="main" initial-page-number="1">
<fo:static-content flow-name="xsl-region-before">
<fo:table table-layout="fixed" padding="3pt">
<fo:table-column
column-width="10cm"/>
<fo:table-column column-width="8cm"/>
<fo:table-header>
<fo:table-row>
<fo:table-cell>
<fo:block text-align="left"
font-size="10pt"
font-family="Courier"
line-height="14pt">
<xsl:apply-templates select="title"/>
<fo:block></fo:block>
<xsl:apply-templates select="name1"/>
<fo:block></fo:block>
<xsl:apply-templates
select="name2"/>
<fo:block></fo:block>
<xsl:apply-templates select="street"/>
<fo:block></fo:block>
<xsl:apply-templates select="postalcode"/><xsl:apply-templates
select="city"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell
number-columns-spanned="2">
<fo:block
font-family="Courier" font-size="10pt" text-align="left">
<xsl:apply-templates select="header"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell
number-columns-spanned="2">
<fo:block font-family="Courier"
font-size="10pt" text-align="left">
<xsl:apply-templates select="maintext"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:table table-layout="fixed"
padding="1pt">
<fo:table-column
column-width="2.6cm"/>
<fo:table-column
column-width="2.0cm"/>
<fo:table-column
column-width="2.3cm"/>
<fo:table-header>
<fo:table-row>
<fo:table-cell >
<fo:block font-family="Courier"
font-size="10pt" text-align="left">
<xsl:apply-templates select="column0"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-family="Courier"
font-size="10pt" text-align="left" > <!-- white-space-collapse="false">-->
<xsl:apply-templates select="column1"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-family="Courier"
font-size="10pt" text-align="left" > <!-- white-space-collapse="false">-->
<xsl:apply-templates select="column2"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
</fo:table-body>
</fo:table>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates/>
</fo:flow>
</fo:page-sequence>
</xsl:for-each>
</fo:root>
</xsl:template>
<xsl:template match="data/page/body/voucher" >
<fo:table table-layout="fixed" padding="1pt">
<fo:table-column column-width="2.6cm"/>
<fo:table-column column-width="2.0cm"/>
<fo:table-column column-width="2.3cm"/>
<fo:table-header>
<fo:table-row>
<fo:table-cell >
<fo:block font-family="Courier" font-size="10pt"
text-align="left">
<xsl:apply-templates select="docnumber"/>
</fo:block>
</fo:table-cell>
<fo:table-cell >
<fo:block font-family="Courier" font-size="10pt"
text-align="left">
<xsl:apply-templates select="doctext"/>
</fo:block>
</fo:table-cell>
<fo:table-cell >
<fo:block font-family="Courier" font-size="10pt"
text-align="right" border-width="1mm"> <!-- white-space-collapse="false">-->
<xsl:apply-templates select="amount"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
</fo:table-body>
</fo:table>
</xsl:template>
Can sb give me a hint?
Greets
kirashet
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: Letter in xsl
Posted by Ail Sahin <al...@as-support.com>.
Thanks a lot,
I'm gonna trying it right now.
Glen Mazza schrieb:
> Ail Sahin wrote:
>
>>
>> One 'page' is one customer with its n-Vouchers. The first page should
>> contain receipient address, subject,
>> columnnames, text etc and the list of vouchers.
>> That works fine but when there are many vouchers, a second page ist
>> printed, but with the receipient adress, subject etc.
>>
>
> I guess the problem is that you do *not* want the header information
> on pages after the first.
>
> I think you will need to create an fo:page-sequence-master for this to
> work. Do a search on page-position="first" here [1] for the general
> idea.
>
> Next, very similar to here [2], you'll be activating different
> fo:simple-page-masters based on whether or not the page is the first
> in the page sequence. Instead of left or right, however, the issue is
> first-page or not first-page.
>
> [1]
> http://svn.apache.org/viewcvs.cgi/xmlgraphics/fop/trunk/examples/fo/pagination/franklin_2pageseqs.fo?rev=197469&view=markup
>
>
> [2]
> http://marc.theaimsgroup.com/?l=fop-user&m=113078517606736&w=2
>
> Glen
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: Letter in xsl
Posted by Glen Mazza <gm...@apache.org>.
Ail Sahin wrote:
>
> One 'page' is one customer with its n-Vouchers. The first page should
> contain receipient address, subject,
> columnnames, text etc and the list of vouchers.
> That works fine but when there are many vouchers, a second page ist
> printed, but with the receipient adress, subject etc.
>
I guess the problem is that you do *not* want the header information on
pages after the first.
I think you will need to create an fo:page-sequence-master for this to
work. Do a search on page-position="first" here [1] for the general idea.
Next, very similar to here [2], you'll be activating different
fo:simple-page-masters based on whether or not the page is the first in
the page sequence. Instead of left or right, however, the issue is
first-page or not first-page.
[1]
http://svn.apache.org/viewcvs.cgi/xmlgraphics/fop/trunk/examples/fo/pagination/franklin_2pageseqs.fo?rev=197469&view=markup
[2]
http://marc.theaimsgroup.com/?l=fop-user&m=113078517606736&w=2
Glen
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org