- From: Aish <aiswarya@laserwords.com>
- Date: Wed, 3 Feb 2010 02:24:59 -0800 (PST)
- To: www-xsl-fo@w3.org
Hi Anandh,
I did it using FOP 0.95. In your xsl code, number of <fo:table-column
column-width="1in"/> doesn't match(less than) the columns given under
for-each of quarters and hence the problem. You need to check empty
quarters. Also, attribute "increment-by" is removed as it doesn't support.
The code will be as below.
<xsl:template match="root/roadmap">
<fo:block space-before='2mm'>
<fo:block font-size="10pt" color="black" font-weight="bold"
space-before="0.54in" space-after="2pt" >
ROADMAP INFORMATION
</fo:block>
<fo:block space-before='2mm'>
</fo:block>
<fo:table border-collapse="collapse" font-size="9pt">
<fo:table-column column-width="1in"/>
<fo:table-column column-width="1in"/>
<fo:table-column column-width="1in"/>
<fo:table-column column-width="1in"/>
<fo:table-column column-width="1in"/>
<fo:table-header color="black" background-color="rgb(39,64,139)"
font-weight="bold">
<fo:table-row>
<fo:table-cell padding="2pt" border="1pt solid black"
text-align="center">
<fo:block>YEAR</fo:block>
</fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid black"
text-align="center">
<fo:block>Q1</fo:block>
</fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid black"
text-align="center">
<fo:block>Q2</fo:block>
</fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid black"
text-align="center">
<fo:block>Q3</fo:block>
</fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid black"
text-align="center">
<fo:block>Q4</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:for-each select="years">
<fo:table-row>
<fo:table-cell padding="2pt" border="1pt solid black"
background-color="rgb(255,255,255)" text-align="center">
<fo:block><xsl:value-of select="year"/></fo:block>
</fo:table-cell>
<xsl:variable name="MyQuarter"><xsl:value-of
select="quarters[1]/quarter"/></xsl:variable>
<xsl:choose>
<xsl:when test="$MyQuarter='Q1'">
</xsl:when>
<xsl:when test="$MyQuarter='Q2'">
<fo:table-cell padding="2pt" border="1pt solid
black"><fo:block/></fo:table-cell>
</xsl:when>
<xsl:when test="$MyQuarter='Q3'">
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
</xsl:when>
<xsl:when test="$MyQuarter='Q4'">
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
</xsl:when>
<xsl:when test="$MyQuarter='Q5'">
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
<fo:table-cell padding="2pt" border="1pt solid
black" text-align="center"><fo:block/></fo:table-cell>
</xsl:when>
</xsl:choose>
<xsl:for-each select="quarters">
<fo:table-cell padding="2pt" border="1pt solid black"
background-color="rgb(255,255,255)" text-align="center">
<fo:block><xsl:apply-templates
select="requirements"/></fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:template>
<xsl:template match="requirements">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="requirement">
<xsl:apply-templates/>
</xsl:template>
This code will produce your desired output with FOP 0.95. Hope this helps:-)
Regards
Aish
anandhthiyagarajan wrote:
>
> Hi everybody
>
> I am stuck up with an issue in manipulating the table.
>
>
>
> Consider the below XML and XSL
>
> <root>
> <roadmap>
> <years>
> <year>2009</year>
> <quarters>
> <quarter>Q3</quarter>
> <requirements>
> <requirement>Mp3Player</requirement>
> </requirements>
> <requirements>
> <requirement>Mp3Player</requirement>
> </requirements>
> <requirements>
> <requirement>DataCable</requirement>
> </requirements>
> <requirements>
> <requirement>Mp3Player</requirement>
> </requirements>
> <requirements>
> <requirement>Mp3Player</requirement>
> </requirements>
> <requirements>
> <requirement>Bluetooth</requirement>
> </requirements>
> </quarters>
> <quarters>
> <quarter>Q4</quarter>
> <requirements>
> <requirement>DataCable</requirement>
> </requirements>
> <requirements>
> <requirement>MemoryCard</requirement>
> </requirements>
> <requirements>
> <requirement>InbuiltCam</requirement>
> </requirements>
> </quarters>
> </years>
> </roadmap>
> </root>
>
>
> XSL:
>
> <xsl:template match="root/roadmap">
> <fo:block space-before='2mm'>
> <fo:block font-size="10pt" color="black" font-weight="bold"
> increment-by="1.1.1" space-before="0.54in" space-after="2pt" >
> ROADMAP INFORMATION
> </fo:block>
> <fo:block space-before='2mm'>
> </fo:block>
> <fo:table border-collapse="collapse" font-size="9pt">
> <fo:table-column column-width="1in"/>
> <fo:table-column column-width="50%"/>
> <fo:table-column column-width="50%"/>
> <fo:table-column column-width="50%"/>
> <fo:table-column column-width="50%"/>
> <fo:table-header color="black" background-color="rgb(39,64,139)"
> font-weight="bold">
> <fo:table-row>
> <fo:table-cell padding="2pt" border="1pt solid black"
> text-align="center">
> <fo:block>YEAR</fo:block>
> </fo:table-cell>
> <fo:table-cell padding="2pt" border="1pt solid black"
> text-align="center">
> <fo:block>Q1</fo:block>
> </fo:table-cell>
> <fo:table-cell padding="2pt" border="1pt solid black"
> text-align="center">
> <fo:block>Q2</fo:block>
> </fo:table-cell>
> <fo:table-cell padding="2pt" border="1pt solid black"
> text-align="center">
> <fo:block>Q3</fo:block>
> </fo:table-cell>
> <fo:table-cell padding="2pt" border="1pt solid black"
> text-align="center">
> <fo:block>Q4</fo:block>
> </fo:table-cell>
> </fo:table-row>
> </fo:table-header>
> <fo:table-body>
> <xsl:for-each select="years">
> <fo:table-row>
> <fo:table-cell padding="2pt" border="1pt solid black"
> background-color="rgb(255,255,255)" text-align="center">
> <fo:block><xsl:value-of select="year"/></fo:block>
> </fo:table-cell>
> <xsl:for-each select="quarters">
> <fo:table-cell padding="2pt" border="1pt solid black"
> background-color="rgb(255,255,255)" text-align="center">
> <fo:block><xsl:value-of select="."/></fo:block>
> </fo:table-cell>
> <fo:table-cell padding="2pt" border="1pt solid black"
> background-color="rgb(255,255,255)" text-align="center">
> <fo:block><xsl:value-of
> select="requirement"/></fo:block>
> </fo:table-cell>
> <fo:table-cell padding="2pt" border="1pt solid black"
> background-color="rgb(255,255,255)" text-align="center">
> <fo:block><xsl:value-of
> select="requirement"/></fo:block>
> </fo:table-cell>
> <fo:table-cell padding="2pt" border="1pt solid black"
> background-color="rgb(255,255,255)" text-align="center">
> <fo:block><xsl:value-of
> select="requirement"/></fo:block>
> </fo:table-cell>
> </xsl:for-each>
> </fo:table-row>
> </xsl:for-each>
> </fo:table-body>
> </fo:table>
> </fo:block>
> </xsl:template>
>
>
> I am attaching a file with this which contain the required ouptut.
>
> http://old.nabble.com/file/p27430837/Table.doc Table.doc
>
>
>
> But i am not getting that output instead it throws a exception. Please let
> me know if i am missing something.
>
> The stack trace is as follows
>
> java.lang.ArrayIndexOutOfBoundsException: -2
>
> Cocoon stacktrace:
>
> java.lang.ArrayIndexOutOfBoundsException: -2
> context://prd-doc/doc2road.xsl - 7:18
>
> Failed to process pipeline
> context://prd-doc/doc2road.xsl - 7:18 [TransformerException]
> context://prd-doc/sitemap.xmap - 63:46 <map:serialize type="fo2pdf">
> context://prd-doc/sitemap.xmap - 62:51 <map:transform>
> context://prd-doc/sitemap.xmap - 61:45 <map:generate>
> context://sitemap.xmap - 1034:92 <map:mount>
>
> Any help would be greatly appreciated.
>
>
>
> Thanks in Advance
>
> Anandh
>
--
View this message in context: http://old.nabble.com/Table-Manipulation-tp27430837p27434230.html
Sent from the w3.org - www-xsl-fo mailing list archive at Nabble.com.
Received on Wednesday, 3 February 2010 10:28:30 UTC