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 20:27:31 -0800 (PST)
Message-ID: <27447600.post@talk.nabble.com>
To: www-xsl-fo@w3.org
Hi Anandh,

I am unable to understand your question. 

1. Did you mean wrapping text in fo:table?
      If the case is so, you can mention the width of each cell by the
property fo:table-column column-width(<fo:table-column column-width="1in"/>)
of the table. This is an inbuilt wrapping of text. In case if you need to
hyphenate words, you can use hyphenation property. Check out the site
http://www.cafeconleche.org/books/bible3/chapters/ch16.html for explanation
regarding that property.

2. Did you mean size of table?
      If the case is so, you can mention the width of the table using the
property "width". For eg:<fo:table  table-layout="fixed" width="100%" 
font-size="9pt">

Hope this helps. Let me know if you need any further clarifications

Regards
Aish


anandhthiyagarajan wrote:
> 
> Thanks a lot aish. It served exactly my purpose. Can you also suggest me
> is it possible to wrap the table in xsl:fo.
> 
> 
> 
> Thanks again
> 
> Anandh
> 
> Aish wrote:
>> 
>> 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-tp27430837p27447600.html
Sent from the w3.org - www-xsl-fo mailing list archive at Nabble.com.
Received on Thursday, 4 February 2010 04:28:44 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 4 February 2010 04:28:44 GMT