Santanu,

your snippet is an XSLT fragment that transforms CALS tables, witch come
with docbook DTD.

This is a little off topic on this list.
you should ask your question on more appropriate list.
There is further info there:
http://docbook.sourceforge.net/

Le 18/01/2012 06:48, Santanu Dutta a écrit :
> Pascal Sancho <pascal.sancho <at> takoma.fr> writes:
> 
>>
>> Hi Santanu,
>>
>> on this list we start with XSL-FO as input, so you should explain what
>> do you expect precisely as output rendering, what do you get, and
>> provide a short XSL-FO snippet as material if taht can help (see [1]).
>>
>> Your question may also concern:
>>  - XSLT
>>  - understanding XSL-FO
>>  - etc.
>>
>> You can get further info on [Other Resources] page at [2]
>>
>> [1] http://xmlgraphics.apache.org/fop/maillist.html#fop-user-policy
>> [2] http://xmlgraphics.apache.org/fop/resources.html
>>
>> Le 17/01/2012 14:19, Santanu Dutta a écrit :
>>>
>>> Hi:
>>>
>>> I'm creating PDF files from input XML, everything works fine except some
> table-
>>> cells, having rowsep and colsep. It looks some separator lines are just
> doubled.
>>>
>>> I am new to XSL-FO and require your help. Is there anyone to help me,
> please!
>>>
>>> Santanu
>>
> 
> 
> 
> Hi:
> 
> Thanks Luis and Pascal, for your prompt reply. Here is my transform file:
> ----------------
> 
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:transform xmlns="http://www.w3.org/1999/xhtml";
> xmlns:cals="http://www.oasis-open.org/specs/tm9901";
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> xmlns:fo="http://www.w3.org/1999/XSL/Format"; exclude-result-prefixes="cals"
> version="2.0">
>     <!-- Process CALS tables, using code borrowed from Andrew Welch
> http://www.biglist.com/lists/xsl-list/archives/200202/msg00666.html-->
>     <xsl:template match="tgroup">
>         <xsl:comment>
>             <xsl:value-of select="@cols"/>
>         </xsl:comment>
>         <fo:table table-layout="fixed" border-collapse="collapse" > <!--
> border="1pt solid black" -->
>             <xsl:if test="@align">
>                 <xsl:attribute name="text-align">
>                     <xsl:value-of select="@align"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:choose>
>                 <xsl:when test="../@frame='topbot'">
>                     <xsl:attribute name="style">border-top:.5pt solid
> black;border-bottom:.5pt solid black</xsl:attribute>
>                 </xsl:when>
>                 <xsl:when test="../@frame='all'">
>                     <xsl:attribute name="border">.5pt solid
> black</xsl:attribute>
>                 </xsl:when>
>                 <xsl:otherwise>
>                     <xsl:attribute name="border">0</xsl:attribute>
>                 </xsl:otherwise>
>             </xsl:choose>
>             <xsl:variable name="colgroup">
>                 <!--    <fo:table-column><xsl:comment>colgroup</xsl:comment> 
> -->
>                 <xsl:call-template name="generate.colgroup">
>                     <xsl:with-param name="cols" select="count(colspec)"/>
>                 </xsl:call-template>
>                 <!--    </fo:table-column> -->
>             </xsl:variable>
>             <xsl:copy-of select="$colgroup"/>
>             <xsl:apply-templates/>
>         </fo:table>
>     </xsl:template>
>     <xsl:template match="colspec"/>
>     <xsl:template match="spanspec"/>
>     <xsl:template match="thead|tfoot">
>         <xsl:element name="{name(.)}">
>             <xsl:if test="@align">
>                 <xsl:attribute name="text-align">
>                     <xsl:value-of select="@align"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@char">
>                 <xsl:attribute name="char">
>                     <xsl:value-of select="@char"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@charoff">
>                 <xsl:attribute name="charoff">
>                     <xsl:value-of select="@charoff"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@valign">
>                 <xsl:attribute name="display-align">
>                     <xsl:choose>
>                         <xsl:when test="@valign = top">before</xsl:when>
>                         <xsl:when test="@valign = middle">center</xsl:when>
>                         <xsl:otherwise>auto</xsl:otherwise>
>                     </xsl:choose>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:apply-templates/>
>         </xsl:element>
>     </xsl:template>
>     <xsl:template match="tbody">
>         <fo:table-body>
>             <xsl:if test="@align">
>                 <xsl:attribute name="text-align">
>                     <xsl:value-of select="@align"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@char">
>                 <xsl:attribute name="char">
>                     <xsl:value-of select="@char"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@charoff">
>                 <xsl:attribute name="charoff">
>                     <xsl:value-of select="@charoff"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@valign">
>                 <xsl:attribute name="display-align">
>                     <xsl:choose>
>                         <xsl:when test="@valign = top">before</xsl:when>
>                         <xsl:when test="@valign = middle">center</xsl:when>
>                         <xsl:otherwise>auto</xsl:otherwise>
>                     </xsl:choose>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:apply-templates/>
>         </fo:table-body>
>     </xsl:template>
>     <xsl:template match="row">
>         <fo:table-row>
>             <xsl:if test="@rowsep='1'">
>                 <xsl:attribute name="border-bottom">.5pt solid
> black</xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@rowsep='0'">
>                 <xsl:attribute name="border-bottom">none</xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@align">
>                 <xsl:attribute name="text-align">
>                     <xsl:value-of select="@align"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@char">
>                 <xsl:attribute name="char">
>                     <xsl:value-of select="@char"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@charoff">
>                 <xsl:attribute name="charoff">
>                     <xsl:value-of select="@charoff"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@valign">
>                 <xsl:attribute name="display-align">
>                     <xsl:choose>
>                         <xsl:when test="@valign = top">before</xsl:when>
>                         <xsl:when test="@valign = middle">center</xsl:when>
>                         <xsl:otherwise>auto</xsl:otherwise>
>                     </xsl:choose>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:apply-templates/>
>         </fo:table-row>
>     </xsl:template>
>     <xsl:template match="entry/p">
>         <fo:block font-size="7pt" line-height="8pt" >
>             <xsl:if test="../@align='center'">
>                 <xsl:attribute name="text-align">center</xsl:attribute>
>             </xsl:if>
>           <xsl:if test="@align">
>                 <xsl:attribute name="text-align"><xsl:value-of 
> select="@align"/>
> </xsl:attribute>
>             </xsl:if>
>             <xsl:apply-templates/>
>         </fo:block>
>     </xsl:template>
>     <xsl:template match="thead/row/entry">
>         <xsl:call-template name="process.cell">
>             <xsl:with-param name="cellgi">fo:table-cell</xsl:with-param>
>         </xsl:call-template>
>     </xsl:template>
>     <xsl:template match="tbody/row/entry">
>         <xsl:call-template name="process.cell">
>             <xsl:with-param name="cellgi">fo:table-cell</xsl:with-param>
>         </xsl:call-template>
>     </xsl:template>
>     <xsl:template match="tfoot/row/entry">
>         <xsl:call-template name="process.cell">
>             <xsl:with-param name="cellgi">fo:table-cell</xsl:with-param>
>         </xsl:call-template>
>     </xsl:template>
>     <xsl:template name="process.cell">
>         <xsl:param name="cellgi">fo:table-cell</xsl:param>
>         <xsl:variable name="empty.cell" select="count(node()) = 0"/>
>         <xsl:variable name="entry.colnum">
>             <xsl:call-template name="entry.colnum"/>
>         </xsl:variable>
>         <xsl:if test="$entry.colnum != ''">
>             <xsl:variable name="prev.entry" select="preceding-sibling::*[1]"/>
>             <xsl:variable name="prev.ending.colnum">
>                 <xsl:choose>
>                     <xsl:when test="$prev.entry">
>                         <xsl:call-template name="entry.ending.colnum">
>                             <xsl:with-param name="entry" 
> select="$prev.entry"/>
>                         </xsl:call-template>
>                     </xsl:when>
>                     <xsl:otherwise>0</xsl:otherwise>
>                 </xsl:choose>
>             </xsl:variable>
>             <xsl:call-template name="add-empty-entries">
>                 <xsl:with-param name="number">
>                     <xsl:choose>
>                         <xsl:when test="$prev.ending.colnum = ''">0</xsl:when>
>                         <xsl:otherwise>
>                             <xsl:value-of select="$entry.colnum -
> $prev.ending.colnum - 1"/>
>                         </xsl:otherwise>
>                     </xsl:choose>
>                 </xsl:with-param>
>             </xsl:call-template>
>         </xsl:if>
>         <xsl:element name="{$cellgi}">
>             <xsl:attribute name="border-right">.25pt solid 
> black</xsl:attribute>
>             <xsl:attribute name="border-bottom">.25pt solid
> black</xsl:attribute>
>             <xsl:attribute name="margin">0mm</xsl:attribute>
>             <xsl:attribute name="padding">2pt</xsl:attribute>
>             <xsl:attribute name="font-size">7pt</xsl:attribute>
>             <xsl:attribute name="line-height">8pt</xsl:attribute>
>             <!--<xsl:if test="ancestor-or-self::*/@rowsep ='0' 
> "><xsl:attribute
> name="border-bottom">none</xsl:attribute></xsl:if>
>                 <xsl:if test="ancestor-or-self::*/@colsep ='0'  
> "><xsl:attribute
> name="border-right">none</xsl:attribute></xsl:if>-->
>             <xsl:if test="@class = 'thead'">
>                 <xsl:attribute name="color"> black </xsl:attribute>
>                 <!--    <xsl:attribute name="border">.5pt solid black
> </xsl:attribute> -->
>             </xsl:if>
>             <xsl:if test="@align">
>                 <xsl:attribute name="text-align">
>                     <xsl:value-of select="@align"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@spanname">
>                 <xsl:variable name="spanname">
>                     <xsl:value-of select="@spanname"/>
>                 </xsl:variable>
>                 <xsl:variable name="ancetre"
> select="ancestor::tgroup/spanspec[@spanname=$spanname]"/>
>                 <xsl:variable name="namest" select="$ancetre/@namest"/>
>                 <xsl:variable name="nameend" select="$ancetre/@nameend"/>
>                 <xsl:variable name="colst" select="ancestor::*
> [colspec/@colname=$namest]/colspec[@colname=$namest]/@colnum"/>
>                 <xsl:variable name="colend" select="ancestor::*
> [colspec/@colname=$nameend]/colspec[@colname=$nameend]/@colnum"/>
>                 <xsl:attribute name="number-columns-spanned">
>                     <xsl:value-of select="number($colend) - number($colst) +
> 1"/>
>                 </xsl:attribute>
>                 <!--
>                 <xsl:comment>spanname: <xsl:value-of select="@spanname"/>
> </xsl:comment>
>                 <xsl:comment>ancetre: <xsl:value-of select="$ancetre"/>
> </xsl:comment>
>                 <xsl:comment>namest: <xsl:value-of select="$namest"/>
> </xsl:comment>
>                 <xsl:comment>namend: <xsl:value-of select="$nameend"/>
> </xsl:comment>
>                 <xsl:comment>colst: <xsl:value-of select="$colst"/>
> </xsl:comment>
>                 <xsl:comment>colend: <xsl:value-of select="$colend"/>
> </xsl:comment>
>                 <xsl:comment>align: <xsl:value-of select="@align"/>
> </xsl:comment>
>                 -->
>             </xsl:if>
>             <xsl:if test="@morerows">
>                 <xsl:attribute name="number-rows-spanned">
>                     <xsl:value-of select="@morerows+1"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@namest">
>                 <xsl:attribute name="number-columns-spanned">
>                     <xsl:call-template name="calculate.colspan"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@char">
>                 <xsl:attribute name="char">
>                     <xsl:value-of select="@char"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@charoff">
>                 <xsl:attribute name="charoff">
>                     <xsl:value-of select="@charoff"/>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@valign">
>                 <xsl:attribute name="display-align">
>                     <xsl:choose>
>                         <xsl:when test="@valign = top">before</xsl:when>
>                         <xsl:when test="@valign = middle">center</xsl:when>
>                         <xsl:otherwise>auto</xsl:otherwise>
>                     </xsl:choose>
>                 </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@rowsep='1'">
>                 <xsl:attribute name="border-bottom">.5pt solid
> black</xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@rowsep='0'">
>                 <xsl:attribute name="border-bottom">none</xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@colsep='1'">
>                 <xsl:attribute name="border-right">.5pt solid
> black</xsl:attribute>
>             </xsl:if>
>             <xsl:if test="@colsep='0'">
>                 <xsl:attribute name="border-right">none</xsl:attribute>
>             </xsl:if>
>             <xsl:if test="not(preceding-sibling::*)                   and
> ancestor::row/@id">
>                 <a name="{ancestor::row/@id}"/>
>             </xsl:if>
>             <xsl:if test="@id">
>                 <a name="{@id}"/>
>             </xsl:if>
>             <xsl:choose>
>                 <xsl:when test="$empty.cell">
>                     <fo:block>
>                         <xsl:text> </xsl:text>
>                     </fo:block>
>                 </xsl:when>
>                 <xsl:otherwise>
>                     <xsl:apply-templates/>
>                 </xsl:otherwise>
>             </xsl:choose>
>         </xsl:element>
>     </xsl:template>
>     <xsl:template name="add-empty-entries">
>         <xsl:param name="number" select="'0'"/>
>         <xsl:choose>
>             <xsl:when test="$number <= 0"/>
>             <xsl:otherwise>
>                 <fo:table-cell>
> <!--<xsl:attribute name="border">.5pt solid red</xsl:attribute>-->
> <xsl:attribute name="padding">5pt</xsl:attribute> <fo:block/> </fo:table-cell>
>                 <xsl:call-template name="add-empty-entries">
>                     <xsl:with-param name="number" select="$number - 1"/>
>                 </xsl:call-template>
>             </xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
>     <xsl:template name="entry.colnum">
>         <xsl:param name="entry" select="."/>
>         <xsl:choose>
>             <xsl:when test="$entry/@colname">
>                 <xsl:variable name="colname" select="$entry/@colname"/>
>                 <xsl:variable name="colspec"
> select="$entry/ancestor::tgroup/colspec[@colname=$colname]"/>
>                 <xsl:call-template name="colspec.colnum">
>                     <xsl:with-param name="colspec" select="$colspec"/>
>                 </xsl:call-template>
>             </xsl:when>
>             <xsl:when test="$entry/@namest">
>                 <xsl:variable name="namest" select="$entry/@namest"/>
>                 <xsl:variable name="colspec"
> select="$entry/ancestor::tgroup/colspec[@colname=$namest]"/>
>                 <xsl:call-template name="colspec.colnum">
>                     <xsl:with-param name="colspec" select="$colspec"/>
>                 </xsl:call-template>
>             </xsl:when>
>             <xsl:when test="count($entry/preceding-sibling::*) = 
> 0">1</xsl:when>
>             <xsl:otherwise>
>                 <xsl:variable name="pcol">
>                     <xsl:call-template name="entry.ending.colnum">
>                         <xsl:with-param name="entry" select="$entry/preceding-
> sibling::*[1]"/>
>                     </xsl:call-template>
>                 </xsl:variable>
>                 <xsl:value-of select="$pcol + 1"/>
>             </xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
>     <xsl:template name="entry.ending.colnum">
>         <xsl:param name="entry" select="."/>
>         <xsl:choose>
>             <xsl:when test="$entry/@colname">
>                 <xsl:variable name="colname" select="$entry/@colname"/>
>                 <xsl:variable name="colspec"
> select="$entry/ancestor::tgroup/colspec[@colname=$colname]"/>
>                 <xsl:call-template name="colspec.colnum">
>                     <xsl:with-param name="colspec" select="$colspec"/>
>                 </xsl:call-template>
>             </xsl:when>
>             <xsl:when test="$entry/@nameend">
>                 <xsl:variable name="nameend" select="$entry/@nameend"/>
>                 <xsl:variable name="colspec"
> select="$entry/ancestor::tgroup/colspec[@colname=$nameend]"/>
>                 <xsl:call-template name="colspec.colnum">
>                     <xsl:with-param name="colspec" select="$colspec"/>
>                 </xsl:call-template>
>             </xsl:when>
>             <xsl:when test="count($entry/preceding-sibling::*) = 
> 0">1</xsl:when>
>             <xsl:otherwise>
>                 <xsl:variable name="pcol">
>                     <xsl:call-template name="entry.ending.colnum">
>                         <xsl:with-param name="entry" select="$entry/preceding-
> sibling::*[1]"/>
>                     </xsl:call-template>
>                 </xsl:variable>
>                 <xsl:value-of select="$pcol + 1"/>
>             </xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
>     <xsl:template name="colspec.colnum">
>         <xsl:param name="colspec" select="."/>
>         <xsl:choose>
>             <xsl:when test="$colspec/@colnum">
>                 <xsl:value-of select="$colspec/@colnum"/>
>             </xsl:when>
>             <xsl:when test="$colspec/preceding-sibling::colspec">
>                 <xsl:variable name="prec.colspec.colnum">
>                     <xsl:call-template name="colspec.colnum">
>                         <xsl:with-param name="colspec"
> select="$colspec/preceding-sibling::colspec[1]"/>
>                     </xsl:call-template>
>                 </xsl:variable>
>                 <xsl:value-of select="$prec.colspec.colnum + 1"/>
>             </xsl:when>
>             <xsl:otherwise>1</xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
>     <xsl:template name="generate.colgroup">
>         <xsl:param name="cols" select="1"/>
>         <xsl:param name="count" select="1"/>
>         <xsl:choose>
>             <xsl:when test="$count>$cols"/>
>             <xsl:otherwise>
>                 <xsl:call-template name="generate.col">
>                     <xsl:with-param name="countcol" select="$count"/>
>                 </xsl:call-template>
>                 <xsl:call-template name="generate.colgroup">
>                     <xsl:with-param name="cols" select="$cols"/>
>                     <xsl:with-param name="count" select="$count+1"/>
>                 </xsl:call-template>
>             </xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
>     <xsl:template name="generate.col">
>         <xsl:param name="countcol">1</xsl:param>
>         <xsl:param name="colspecs" select="./colspec"/>
>         <xsl:param name="count">1</xsl:param>
>         <xsl:param name="colnum">1</xsl:param>
>         <xsl:choose>
>             <xsl:when test="$count>count($colspecs)">
>                 <fo:table-column/>
>                 <xsl:comment>$colspecs</xsl:comment>
>             </xsl:when>
>             <xsl:otherwise>
>                 <xsl:variable name="colspec"
> select="$colspecs[$count=position()]"/>
>                 <xsl:variable name="colspec.colnum">
>                     <xsl:choose>
>                         <xsl:when test="$colspec/@colnum">
>                             <xsl:value-of select="$colspec/@colnum"/>
>                         </xsl:when>
>                         <xsl:otherwise>
>                             <xsl:value-of select="$colnum"/>
>                         </xsl:otherwise>
>                     </xsl:choose>
>                 </xsl:variable>
>                 <xsl:choose>
>                     <xsl:when test="$colspec.colnum=$countcol">
>                         <fo:table-column>
>                             <!--                           <xsl:attribute
> name="column-width"><xsl:value-of 
> select="$colspec/@colwidth"/></xsl:attribute>
> -->
>                             <xsl:attribute name="column-width">
>                                 <xsl:call-template name="calc.column.width">
>                                     <xsl:with-param name="colwidth">
>                                         <xsl:value-of
> select="$colspec/@colwidth"/>
>                                     </xsl:with-param>
>                                 </xsl:call-template>
>                             </xsl:attribute>
>                             <!--<xsl:comment>$countcol</xsl:comment>-->
>                             <xsl:if test="$colspec/@align">
>                                 <xsl:attribute name="text-align">
>                                     <xsl:value-of select="$colspec/@align"/>
>                                 </xsl:attribute>
>                             </xsl:if>
>                             <xsl:if test="$colspec/@char">
>                                 <xsl:attribute name="char">
>                                     <xsl:value-of select="$colspec/@char"/>
>                                 </xsl:attribute>
>                             </xsl:if>
>                             <xsl:if test="$colspec/@charoff">
>                                 <xsl:attribute name="charoff">
>                                     <xsl:value-of select="$colspec/@charoff"/>
>                                 </xsl:attribute>
>                             </xsl:if>
>                         </fo:table-column>
>                     </xsl:when>
>                     <xsl:otherwise>
>                         <xsl:call-template name="generate.col">
>                             <xsl:with-param name="countcol" 
> select="$countcol"/>
>                             <xsl:with-param name="colspecs" 
> select="$colspecs"/>
>                             <xsl:with-param name="count" select="$count+1"/>
>                             <xsl:with-param name="colnum">
>                                 <xsl:choose>
>                                     <xsl:when test="$colspec/@colnum">
>                                         <xsl:value-of 
> select="$colspec/@colnum +
> 1"/>
>                                     </xsl:when>
>                                     <xsl:otherwise>
>                                         <xsl:value-of select="$colnum + 1"/>
>                                     </xsl:otherwise>
>                                 </xsl:choose>
>                             </xsl:with-param>
>                         </xsl:call-template>
>                     </xsl:otherwise>
>                 </xsl:choose>
>             </xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
>     <xsl:template name="colspec.colwidth">
>         <!-- when this macro is called, the current context must be an entry 
> -->
>         <xsl:param name="colname"/>
>         <!-- .. = row, ../.. = thead|fo:table-body, ../../.. = tgroup -->
>         <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
>         <xsl:param name="count">1</xsl:param>
>         <xsl:choose>
>             <xsl:when test="$count>count($colspecs)"/>
>             <xsl:otherwise>
>                 <xsl:variable name="colspec"
> select="$colspecs[$count=position()]"/>
>                 <xsl:choose>
>                     <xsl:when test="$colspec/@colname=$colname">
>                         <xsl:value-of select="$colspec/@colwidth"/>
>                     </xsl:when>
>                     <xsl:otherwise>
>                         <xsl:call-template name="colspec.colwidth">
>                             <xsl:with-param name="colname" select="$colname"/>
>                             <xsl:with-param name="colspecs" 
> select="$colspecs"/>
>                             <xsl:with-param name="count" select="$count+1"/>
>                         </xsl:call-template>
>                     </xsl:otherwise>
>                 </xsl:choose>
>             </xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
>     <xsl:template name="calculate.colspan">
>         <xsl:param name="entry" select="."/>
>         <xsl:variable name="namest" select="$entry/@namest"/>
>         <xsl:variable name="nameend" select="$entry/@nameend"/>
>         <xsl:variable name="scol">
>             <xsl:call-template name="colspec.colnum">
>                 <xsl:with-param name="colspec"
> select="$entry/ancestor::tgroup/colspec[@colname=$namest]"/>
>             </xsl:call-template>
>         </xsl:variable>
>         <xsl:variable name="ecol">
>             <xsl:call-template name="colspec.colnum">
>                 <xsl:with-param name="colspec"
> select="$entry/ancestor::tgroup/colspec[@colname=$nameend]"/>
>             </xsl:call-template>
>         </xsl:variable>
>         <xsl:value-of select="$ecol - $scol + 1"/>
>     </xsl:template>
>     <xsl:template name="calc.column.width">
>         <!-- **
>             * <p>Calculate an XSL FO table column-width specification from a
>             * full relative table column-width specification.</p>
>             *
>             * <p>Table column-widths are in the following basic
>             * forms:</p>
>             *
>             * <ul>
>             * <li><b>99.99units</b>, a fixed length-specifier.</li>
>             * <li><b>99.99</b>, a fixed length-specifier without any 
> units.</li>
>             * <li><b>99.99*</b>, a relative length-specifier.</li>
>             * <li><b>99.99*+99.99units</b>, a combination of both.</li>
>             * </ul>
>             *
>             * <p>The units are points (pt), picas (pi), centimeters (cm),
>             * millimeters (mm), and inches (in). These are the same units as
> XSL,
>             * except that XSL abbreviates picas "pc" instead of "pi". If a
> length
>             * specifier has no units, the default unit (pt) is assumed.</p>
>             *
>             * <p>Relative length-specifiers are represented in XSL with the
>             * proportional-column-width() function.</p>
>             *
>             * <p>Here are some examples:</p>
>             *
>             * <ul>
>             * <li>"36pt" becomes "36pt"</li>
>             * <li>"3pi" becomes "3pc"</li>
>             * <li>"36" becomes "36pt"</li>
>             * <li>"3*" becomes "proportional-column-width(3)"</li>
>             * <li>"3*+2pi" becomes "proportional-column-width(3)+2pc"</li>
>             * <li>"1*+2" becomes "proportional-column-width(1)+2pt"</li>
>             * </ul>
>             *
>             * @param colwidth The column width specification.
>             *
>             * @returns The XSL column width specification.
>             * -->
>         <xsl:param name="colwidth">1*</xsl:param>
>         <!-- Ok, the colwidth could have any one of the following forms: -->
>         <!--        1*       = proportional width -->
>         <!--     1unit       = 1.0 units wide -->
>         <!--         1       = 1pt wide -->
>         <!--  1*+1unit       = proportional width + some fixed width -->
>         <!--      1*+1       = proportional width + some fixed width -->
>         <!-- If it has a proportional width, translate it to XSL -->
>         <xsl:if test="contains($colwidth, '*')">
>             <xsl:text>proportional-column-width(</xsl:text>
>             <xsl:value-of select="substring-before($colwidth, '*')"/>
>             <xsl:text>)</xsl:text>
>         </xsl:if>
>         <!-- Now get the non-proportional part of the specification -->
>         <xsl:variable name="width-units">
>             <xsl:choose>
>                 <xsl:when test="contains($colwidth, '*')">
>                     <xsl:value-of select="normalize-space(substring-
> after($colwidth, '*'))"/>
>                 </xsl:when>
>                 <xsl:otherwise>
>                     <xsl:value-of select="normalize-space($colwidth)"/>
>                 </xsl:otherwise>
>             </xsl:choose>
>         </xsl:variable>
>         <!-- Now the width-units could have any one of the following forms: 
> -->
>         <!--                 = <empty string> -->
>         <!--     1unit       = 1.0 units wide -->
>         <!--         1       = 1pt wide -->
>         <!-- with an optional leading sign -->
>         <!-- Get the width part by blanking out the units part and discarding 
> --
>>
>         <!-- white space. -->
>         <xsl:variable name="width" select="normalize-space(translate($width-
> units,
>             '+-0123456789.abcdefghijklmnopqrstuvwxyz',
>             '+-0123456789.'))"/>
>         <!-- Get the units part by blanking out the width part and discarding 
> --
>>
>         <!-- white space. -->
>         <xsl:variable name="units" select="normalize-space(translate($width-
> units,
>             'abcdefghijklmnopqrstuvwxyz+-0123456789.',
>             'abcdefghijklmnopqrstuvwxyz'))"/>
>         <!-- Output the width -->
>         <xsl:value-of select="$width"/>
>         <!-- Output the units, translated appropriately -->
>         <xsl:choose>
>             <xsl:when test="$units = 'pi'">pc</xsl:when>
>             <xsl:when test="$units = '' and $width != ''">pt</xsl:when>
>             <xsl:otherwise>
>                 <xsl:value-of select="$units"/>
>             </xsl:otherwise>
>         </xsl:choose>
>     </xsl:template>
> </xsl:transform>
> 
> ----------------
> My problem lies within line# 193 to 197 (look for <!--problem-block ***-->).
> 
> With this stylesheet everything works fine, except for colsep border. Viewing
> PDF in Acrobat /Foxit Reader(in any zooming ratio) shows some doubled column
> separators. I'm using fop 0.95 and oXygen editor for the transformation 
> process.
> 
> 
> Looking forward to your reply. Thanks again.
> 
> 
> 
> 
> Regards,
> Santanu
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to