Hi Andrew:
I am outputing to both XHTML and XSL:FO. I need only a subset of the
cals table implemented. The two features I describe below are critical
and have to be implemented. I am not sure how to start it. Her eis a
snippet of the transformation that I have written for the table: This
does not include colwidth and namest.
For XSL:FO:
----------------------------------------------------------------------------------------------------------
<xsl:template match="table">
<fo:block space-before="6pt"
space-before.conditionality="retain">
<xsl:apply-templates select="tgroup"/>
</fo:block>
<fo:block space-before="6pt"
space-before.conditionality="retain"/>
</xsl:template>
<xsl:template match="tgroup">
<fo:table keep-together.within-page="always" text-align="left"
border="1pt solid black">
<xsl:call-template name="set_columns">
<xsl:with-param name="count" select="@cols"/>
<xsl:with-param name="columns" select="@cols"/>
</xsl:call-template>
<fo:table-header>
<fo:table-row line-height="12pt"
font-size="11pt"
font-weight="bold" background-color="#FFFFFF">
<xsl:apply-templates select="colspec"/>
</fo:table-row>
</fo:table-header>
<xsl:apply-templates select="thead"/>
<xsl:apply-templates select="tbody"/>
</fo:table>
</xsl:template>
<xsl:template match="colspec">
<fo:table-cell border-right-style="solid"
border-bottom-style="solid" border-width="1pt"
border-right-color="white" padding-start="4pt" padding-top="3pt"
padding-bottom="3pt" display-align="before">
<fo:block>
<fo:inline color="white">
<xsl:value-of select="@colname"/>
</fo:inline>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="thead">
<fo:table-body>
<xsl:apply-templates select="row"/>
</fo:table-body>
</xsl:template>
<xsl:template match="tbody">
<fo:table-body>
<xsl:apply-templates select="row"/>
</fo:table-body>
</xsl:template>
<xsl:template match="row">
<fo:table-row line-height="12pt" font-size="11pt"
background-color="#FFFFFF">
<xsl:apply-templates select="entry/text/para"/>
</fo:table-row>
</xsl:template>
<xsl:template match="entry/text/para">
<fo:table-cell start-indent="0pt" text-align="left"
border-width="1pt" padding-top="3pt" padding-bottom="3pt"
border-top-style="solid" border-bottom-style="solid"
border-right-style="solid" border-left-style="solid">
<xsl:apply-templates select="line"/>
<xsl:if test="not(line)">
<fo:block text-align="left">
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</fo:table-cell>
</xsl:template>
<xsl:template name="set_columns">
<xsl:param name="count"/>
<xsl:param name="columns"/>
<xsl:if test="$count !=0">
<xsl:call-template name="set_columns">
<xsl:with-param name="count" select="$count
-1"/>
<xsl:with-param name="columns"
select="$columns"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
-----------------------------------------------------------------------------
For XHTML:
<xsl:template match="table">
<table align="center" width="90%" border="1pt solid black">
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="tbody">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="row">
<TR>
<xsl:apply-templates/>
</TR>
</xsl:template>
<xsl:template match="entry">
<TD>
<xsl:apply-templates/>
</TD>
</xsl:template>
<xsl:template match="thead/row/entry/text/para">
<br/>
<th align="center" valign="top" rowspan="0.5" colspan="1"
nowrap="nowrap">
<P>
<xsl:apply-templates/>
</P>
</th>
</xsl:template>
<xsl:template match="row">
<TR align="left" valign="top">
<P>
<xsl:apply-templates/>
</P>
</TR>
</xsl:template>
<xsl:template match="thead">
<xsl:element name="{name(.)}">
<xsl:if test="@align">
<xsl:attribute name="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="valign"><xsl:value-of
select="@valign"/></xsl:attribute>
</xsl:if>
</xsl:element>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="tbody">
<tbody>
<xsl:if test="@align">
<xsl:attribute name="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="valign"><xsl:value-of
select="@valign"/></xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</tbody>
</xsl:template>
On 5/4/06, andrew welch <andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com> wrote:
On 5/4/06, Tech Savvy <tecsavvy(_at_)gmail(_dot_)com> wrote:
> Hi:
>
> I did look at the archive and at all the examples. I am actually
> having a hard time implementing the cals table solution.
>
> Here is what I need to do:
> 1) I have a table which is in cals table format:
>
> <table>
> <tgroup cols="5">
> <colspec colname="c1" colwidth="1.35in">
> </colspec>
> <colspec colname="c2" colwidth="1in">
> </colspec>
> <colspec colname="c3" colwidth="0.75in">
> </colspec>
> <colspec colname="c4" colwidth="1in">
> </colspec>
> <colspec colname="c5" colwidth="0.9in">
> </colspec>
> <tbody>
> <row>
> <entry nameend="4" namest="c3">
> <text>
> <para> Text1 </para>
> </text>
> </entry>
> </row>
> </tbody>
> </tgroup>
> </table>
>
> I need a style sheet (xslt and xslfo) in which
> 1)the <td> width is set to the colwidth of cals table and
> 2) I need to know how to handle nameest and nameend on the style
> sheet. My understanding is that this defines the col span. Is that a
> correct understanding? If so, the "text1" should span two columns.
Implementing a cals table stylesheet is no mean feat, and you seem to
be at the very early stages. I would get your problem defined first -
do you need to implement the whole of cals or a subset? Are you
outputting to both XHTML and XSL:FO? It could be sufficient to use
the Oasis table stylesheets in docbook.
It's a massive task as the cals standard is so loose - its certainly
not something to undertake lightly. For example, in some
circumstances to correctly work out the row and col spans you need to
normlize the table first - possible but pretty much a nightmare. I
don't think there's a stylesheet out there that fully implements the
spec.
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--