Re: Table Manipulation

Thanks Tony for your suggestion.

But i encountered an error when i try to use <xsl:for-each
select="current-group()">.

The error message which i receive is 
      javax.xml.transform.TransformerException: Could not find function:
current-group

The cocoon stacktrace is as follows

Unable to get transformer handler for
file:///home/anandh/Desktop/cocoon/cocoon-2.1.11/build/webapp/prd-doc/doc2ci.xsl
context://prd-doc/sitemap.xmap - 115:46	<map:serialize type="fo2pdf">
context://prd-doc/sitemap.xmap - 114:49	<map:transform>
context://prd-doc/sitemap.xmap - 113:45	<map:generate>
context://sitemap.xmap - 1034:92	<map:mount>


The namespace which i used is as follows

<xsl:stylesheet version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:java="http://xml.apache.org/xslt/java" exclude-result-prefixes="java"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Let me know if i am missing anything else.



Regards

Anandh



Tony Graham-3 wrote:
> 
> On Thu, Feb 04 2010 05:51:26 +0000, anandhthiyagarajan@gmail.com wrote:
>> Okay i will make you clear.
>>
>> Consider the xml
>>
>> <node>
>>     <title>
>>         <ingredients>
>>             <name>Category</name>
>>             <name>Noodles</name>
>>             <name>Pizza</name>
>>         </ingredients>
>>         <ingredients>
>>             <ingredient>
>>                 <content>Fat</content>
>>                 <description>aaaa</description>
>>             </ingredient>
>>         </ingredients>
>>         <ingredients>
>>             <ingredient>
>>                 <content>Fat</content>
>>                 <description>hgjhgk</description>
>>             </ingredient>
>>         </ingredients>
>>     </title>
>> </node>
>>
>>
>> Consider the xsl:fo
>>
>> <xsl:template match="node/title">
>>         <fo:block space-before="4mm" hyphenate="true">
>>             <fo:table table-layout="fixed" width="7in"> 
>>                 <xsl:for-each select="ingredients/name">
>>                     <fo:table-column column-width="10pt" />
> 
> Use proportional-column-width [1]:
> 
>    <fo:table-column column-width="proportional-column-width(1)" />
> 
>>                 </xsl:for-each>
>>                 <fo:table-header hyphenate="true">
>>                     <xsl:for-each select="head">
> 
> As Aish pointed out, you don't have <head> or <row> elements in your
> XML.
> 
> ...
>> I am attaching the output file
>>
>> http://old.nabble.com/file/p27448047/Table.doc Table.doc 
>>
>>
>> Hope this would be clear.
> 
> That does make it clearer, thank you.
> 
> Your XML doesn't make it easy to achieve what you want since <name> is
> separate from the rest of the information for an ingredient.
> 
> To "wrap" (or maybe "split") the table, it would be simplest if you used
> XSLT 2.0 so you could use xsl:for-each-group [2].  E.g.,:
> 
> <xsl:template match="node/title">
>   <xsl:for-each-group
>     select="ingredients[ingredient]"
>     group-starting-with="position() mod 3 = 1">
>       <fo:table>
>         <!-- There's a "CATEGORY" column in every table. -->
>         <fo:table-column column-width="proportional-column-width(1)" />
>         <xsl:for-each select="current-group()">
>           <fo:table-column column-width="proportional-column-width(1)" />
>         </xsl:for-each>
>         <fo:table-header>
>           <fo:table-row>
>             <fo:table-cell>
>               <!-- Select the "Category" name and convert to upper-case.
> -->
>             </fo:table-cell>
>             <xsl:for-each select="current-group()">
>               <fo:table-cell>
>                 <!-- Select the appropriate name based on the position
>                      of this ingredients among its siblings, not on its
>                      position in the current group, then convert to
>                      upper-case. -->
>               </fo:table-cell>
>             </xsl:for-each>
>           </fo:table-row>
>         </fo:table-header>
>         <fo:table-body>
>           <!-- "Within the sequence constructor, the context item is the
>                 initial item of the relevant group", so this makes one
>                 row for each ingredient in the first ingredients in the
>                 current group. -->
>           <xsl:for-each select="ingredient">
>             <xsl:variable name="content-number" select="position()"/>
>             <fo:table-row>
>               <fo:table-cell>
>                 <!-- value of content -->
>               </fo:table-cell>
>               <xsl:for-each select="current-group()">
>                 <fo:table-cell>
>                   <!-- value of "ingredient[$content-number]/description"
> -->
>                 </fo:table-cell>
>               </xsl:for-each>
>             <fo:table-row>
>           </xsl:for-each>
>         </fo:table-body>
>       </fo:table>
>   </xsl:for-each-group>
> </xsl:template>
> 
> Regards,
> 
> 
> Tony Graham                         Tony.Graham@MenteithConsulting.com
> Director                                  W3C XSL FO SG Invited Expert
> Menteith Consulting Ltd                               XML Guild member
> XML, XSL and XSLT consulting, programming and training
> Registered Office: 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland
> Registered in Ireland - No. 428599   http://www.menteithconsulting.com
>   --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
> xmlroff XSL Formatter                               http://xmlroff.org
> xslide Emacs mode                  http://www.menteith.com/wiki/xslide
> Unicode: A Primer                               urn:isbn:0-7645-4625-2
> 
> [1] http://www.w3.org/TR/xsl11/#d0e5961
> [2] http://www.w3.org/TR/xslt20/#grouping
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/Table-Manipulation-tp27430837p27459079.html
Sent from the w3.org - www-xsl-fo mailing list archive at Nabble.com.

Received on Thursday, 4 February 2010 20:17:25 UTC