W3C home > Mailing lists > Public > www-xsl-fo@w3.org > February 2010

Re: Table Manipulation

From: Aish <aiswarya@laserwords.com>
Date: Wed, 3 Feb 2010 02:24:59 -0800 (PST)
Message-ID: <27434230.post@talk.nabble.com>
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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 3 February 2010 10:28:31 GMT