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]
