- From: Aish <aiswarya@laserwords.com>
- Date: Thu, 4 Feb 2010 01:43:51 -0800 (PST)
- To: www-xsl-fo@w3.org
Hey Anandh, I am not sure whether it can be achieved or not.. But your XML doesn't have elements such as "row" and "head". Just try with "keep-with-next" property of fo:table-row(am not sure it works). Regards Aish anandhthiyagarajan 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" /> > </xsl:for-each> > <fo:table-header hyphenate="true"> > <xsl:for-each select="head"> > <fo:table-row> > <xsl:for-each select="ingredients/name"> > <fo:table-cell border="thin black ridge" > padding="4pt" font-size="10pt" letter-spacing="0.8pt" color="white" > background-color="rgb(39,64,139)" > font-weight="bold" > font-family="Verdana" text-align="center"> > <fo:block> > <xsl:value-of select="."/> > </fo:block> > </fo:table-cell> > </xsl:for-each> > </fo:table-row> > </xsl:for-each> > </fo:table-header> > <fo:table-body hyphenate="true"> > <xsl:for-each select="row"> > <fo:table-row> > <xsl:for-each select="ingredients/ingredient"> > <fo:table-cell border="thin black ridge" > padding="4pt" font-size="10pt" color="black" > letter-spacing="1pt" font-family="Verdana" > text-align="center"> > <fo:block> > <xsl:value-of select="."/> > </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 the output file > > http://old.nabble.com/file/p27448047/Table.doc Table.doc > > > Hope this would be clear. > > > Thanks > > Anandh > > > > > Aish wrote: >> >> 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-tp27430837p27450029.html Sent from the w3.org - www-xsl-fo mailing list archive at Nabble.com.
Received on Thursday, 4 February 2010 09:45:19 UTC