|
Subject: Re: [xsl] XSL FO Table formatting From: Louis.Masters@xxxxxxxxxxx Date: Wed, 13 Dec 2006 12:13:34 -0500 |
If you can, change your XML to something like:
<row>
<DscA>1. Money</DscA>
<DscA>3,000.00</DscA>
<DscA>0.00</DscA>
</row>
<row>
<DscA>2. Money</DscA>
<DscB>3,000.00</DscB>
<DscB>0.00</DscB>
</row>
<row>
<DscB>3. Others</DscB>
<DscB>10,000.00</DscB>
<DscB>0.00</DscB>
</row>
and then change your xsl to something like:
<xsl:for-each select="//row">
<fo:table-row line-height="13pt">
<xsl:for-each select="DscA | DscB">
<fo:table-cell border-width="1pt" border-style="solid">
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:for-each>
or, if you can't change the XML and it is always the same number of cells
in a row, you can try using position() and mod to break your data up. It
would look something like (this breaks lists of data into 4 columns going
down then across so it is not exactly what you want but it may help):
<xsl:for-each select="line[position() mod 4 = 1]">
<fo:table-row>
<xsl:for-each select=".|following-sibling::line[position() <
4]">
<fo:table-cell padding="1pt">
<fo:block text-align="center">
<snip/>
-Lou
"CyberSpace Industries 2000 Inc." <csi2000@xxxxxxxxxxxxxxx> wrote on
12/13/2006 11:46:45 AM:
> The reason you get what you do is that there is nothing in your xml to
> denote what a "row" is.. and nothing in your xslt to denote that either.
>
> I believe that <xsl:for-each select="//DscA | //DscB">
> will iterate over the 9 nodes selected and output a single cell in a
single
> row for each.
>
> Are you able to add the intelligence for "row" to your input XML?
>
> Cheers...Hugh
> CyberSpace Industries 2000 Inc.
> XML Training and Consulting
>
> ----- Original Message -----
> From: "Dave Dran" <davedran@xxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Wednesday, December 13, 2006 11:18 AM
> Subject: [xsl] XSL FO Table formatting
>
>
> > XSL FO Table formatting
> >
> >
>
--------------------------------------------------------------------------------
> >
> > Hi!
> >
> > Help, I think there is a simple solution for this. Can't seem to
> > format this correctly
> >
> > Thanks alot.
> >
> > Dave
> >
> > <fo:table width="100%">
> > <fo:table-column column-width="proportional-column-width(50)"/>
> > <fo:table-column column-width="proportional-column-width(25)"/>
> > <fo:table-column column-width="proportional-column-width(25)"/>
> > <fo:table-body>
> > <xsl:for-each select="//DscA | //DscB">
> > <fo:table-row line-height="13pt">
> > <fo:table-cell border-width="1pt" border-style="solid">
> > <fo:block>
> > <xsl:value-of select="."/>
> > </fo:block>
> > </fo:table-cell>
> > </fo:table-row>
> > </xsl:for-each>
> > </fo:table-body>
> > </fo:table>
> >
> > Actual XML Data
> > <DscA>1. Money</DscA>
> > <DscA>3,000.00</DscA>
> > <DscA>0.00</DscA>
> > <DscA>2. Money</DscA>
> > <DscB>3,000.00</DscB>
> > <DscB>0.00</DscB>
> > <DscB>3. Others</DscB>
> > <DscB>10,000.00</DscB>
> > <DscB>0.00</DscB>
> >
> > The expected output (3 columns)
> >
> > 1. Money 3,000.00 0.00
> > 2. Money 3,000.00 0.00
> > 3. Others 10,000.00 0.00
> >
> > The current output
> >
> > 1. Money
> > 3,000.00
> > 0.00
> > 2. Money
> > 3,000.00
> > 0.00
> > 3. Others
> > 10,000.00
> > 0.00
> > TOTAL
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] XSL FO Table formatting, CyberSpace Industrie | Thread | [xsl] Problem with Xpath, ms |
| Re: [xsl] XSL FO Table formatting, CyberSpace Industrie | Date | [xsl] Problem with Xpath, ms |
| Month |