|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
xmlns:exsl="http://exslt.org/common"
|
|
Packit |
e4b6da |
xmlns:m="http://docbook2x.sourceforge.net/xmlns/Man-XML"
|
|
Packit |
e4b6da |
exclude-result-prefixes="exsl"
|
|
Packit |
e4b6da |
version='1.0'>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
$Id: man-table.xsl,v 1.2 2006/04/22 19:47:18 stevecheng Exp $
|
|
Packit |
e4b6da |
********************************************************************
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
This file came from manpages/table.xsl in
|
|
Packit |
e4b6da |
the XSL DocBook Stylesheet distribution.
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
See ../../COPYING for the original copyright information.
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
This stylesheet converts DocBook tables to tbl markup.
|
|
Packit |
e4b6da |
The conversion is done in a somewhat roundabout way by
|
|
Packit |
e4b6da |
going through HTML tables first.
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
******************************************************************** -->
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:include href="man-common-table.xsl" />
|
|
Packit |
e4b6da |
<xsl:include href="man-html-table.xsl" />
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="dbhtml-attribute">
|
|
Packit |
e4b6da |
<xsl:param name="pis" />
|
|
Packit |
e4b6da |
<xsl:param name="attribute" />
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:param name="html.cellspacing" select="''" />
|
|
Packit |
e4b6da |
<xsl:param name="html.cellpadding" select="''" />
|
|
Packit |
e4b6da |
<xsl:param name="table.borders.with.css" select="0" />
|
|
Packit |
e4b6da |
<xsl:param name="default.table.width" select="''"/>
|
|
Packit |
e4b6da |
<xsl:param name="use.extensions" select="0" />
|
|
Packit |
e4b6da |
<xsl:param name="entry.propagates.style" select="1" />
|
|
Packit |
e4b6da |
<xsl:param name="show.revisionflag" select="0" />
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="anchor" />
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="copy-string">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:param name="string"/>
|
|
Packit |
e4b6da |
<xsl:param name="count" select="0"/>
|
|
Packit |
e4b6da |
<xsl:param name="result"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="$count>0">
|
|
Packit |
e4b6da |
<xsl:call-template name="copy-string">
|
|
Packit |
e4b6da |
<xsl:with-param name="string" select="$string"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="count" select="$count - 1"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="result">
|
|
Packit |
e4b6da |
<xsl:value-of select="$result"/>
|
|
Packit |
e4b6da |
<xsl:value-of select="$string"/>
|
|
Packit |
e4b6da |
</xsl:with-param>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
<xsl:value-of select="$result"/>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
<xsl:template name="trim.text">
|
|
Packit |
e4b6da |
<xsl:param name="contents" select="."/>
|
|
Packit |
e4b6da |
<xsl:variable name="contents-left-trimmed">
|
|
Packit |
e4b6da |
<xsl:call-template name="trim-left">
|
|
Packit |
e4b6da |
<xsl:with-param name="contents" select="$contents"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:variable name="contents-trimmed">
|
|
Packit |
e4b6da |
<xsl:call-template name="trim-right">
|
|
Packit |
e4b6da |
<xsl:with-param name="contents" select="$contents-left-trimmed"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:value-of select="$contents-trimmed"/>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
<xsl:template name="trim-left">
|
|
Packit |
e4b6da |
<xsl:param name="contents"/>
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="starts-with($contents,'
') or starts-with($contents,'
') or starts-with($contents,' ') or starts-with($contents,' ')">
|
|
Packit |
e4b6da |
<xsl:call-template name="trim-left">
|
|
Packit |
e4b6da |
<xsl:with-param name="contents" select="substring($contents, 2)"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
<xsl:value-of select="$contents"/>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
<xsl:template name="trim-right">
|
|
Packit |
e4b6da |
<xsl:param name="contents"/>
|
|
Packit |
e4b6da |
<xsl:variable name="last-char">
|
|
Packit |
e4b6da |
<xsl:value-of select="substring($contents, string-length($contents), 1)"/>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="($last-char = '
') or ($last-char = '
') or ($last-char = ' ') or ($last-char = ' ')">
|
|
Packit |
e4b6da |
<xsl:call-template name="trim-right">
|
|
Packit |
e4b6da |
<xsl:with-param name="contents" select="substring($contents, 1, string-length($contents) - 1)"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
<xsl:value-of select="$contents"/>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template match="m:table">
|
|
Packit |
e4b6da |
<xsl:call-template name="block-break" />
|
|
Packit |
e4b6da |
<xsl:apply-templates select="." mode="to.tbl" />
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:param name="tbl.running.header.from.thead" select="0"/>
|
|
Packit |
e4b6da |
<xsl:param name="tbl.column.separator.char">:</xsl:param>
|
|
Packit |
e4b6da |
<xsl:param name="tbl.title.font">B</xsl:param>
|
|
Packit |
e4b6da |
<xsl:param name="tbl.headings.font">B</xsl:param>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template match="m:table" mode="to.tbl">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:param name="source"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:param name="title" />
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:param name="allbox">
|
|
Packit |
e4b6da |
<xsl:if test="not(@frame = 'none') and not(@border = '0')">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>allbox </xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:param>
|
|
Packit |
e4b6da |
<xsl:param name="center">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="@align = 'center' or m:tgroup/@align = 'center'">
|
|
Packit |
e4b6da |
<xsl:text>center </xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:param>
|
|
Packit |
e4b6da |
<xsl:param name="expand">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="@pgwide = '1' or @width = '100%'">
|
|
Packit |
e4b6da |
<xsl:text>expand </xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:param>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:param name="html-table-output">
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test=".//tr">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:for-each select="descendant-or-self::table|descendant-or-self::informaltable">
|
|
Packit |
e4b6da |
<xsl:element name="{local-name(..)}">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:copy-of select="*"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
</xsl:element>
|
|
Packit |
e4b6da |
</xsl:for-each>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:apply-templates/>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</xsl:param>
|
|
Packit |
e4b6da |
<xsl:param name="contents" select="exsl:node-set($html-table-output)"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
* templates (further below) to generate the actual tbl(1) markup, -->
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:for-each select="$contents//table">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="$title != '' or parent::td">
|
|
Packit |
e4b6da |
<xsl:text>.PP
</xsl:text>
|
|
Packit |
e4b6da |
<xsl:text>.</xsl:text>
|
|
Packit |
e4b6da |
<xsl:value-of select="$tbl.title.font"/>
|
|
Packit |
e4b6da |
<xsl:text> </xsl:text>
|
|
Packit |
e4b6da |
<xsl:if test="parent::td">
|
|
Packit |
e4b6da |
<xsl:text>*[nested table]</xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
<xsl:value-of select="normalize-space($title)"/>
|
|
Packit |
e4b6da |
<xsl:text>
</xsl:text>
|
|
Packit |
e4b6da |
<xsl:text>.sp -1n
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>.TS</xsl:text>
|
|
Packit |
e4b6da |
<xsl:if test="thead and $tbl.running.header.from.thead">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text> H</xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
<xsl:text>
</xsl:text>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:variable name="options-line">
|
|
Packit |
e4b6da |
<xsl:value-of select="$allbox"/>
|
|
Packit |
e4b6da |
<xsl:value-of select="$center"/>
|
|
Packit |
e4b6da |
<xsl:value-of select="$expand"/>
|
|
Packit |
e4b6da |
<xsl:text>tab(</xsl:text>
|
|
Packit |
e4b6da |
<xsl:value-of select="$tbl.column.separator.char"/>
|
|
Packit |
e4b6da |
<xsl:text>)</xsl:text>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:if test="normalize-space($options-line) != ''">
|
|
Packit |
e4b6da |
<xsl:value-of select="normalize-space($options-line)"/>
|
|
Packit |
e4b6da |
<xsl:text>;
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="thead">
|
|
Packit |
e4b6da |
<xsl:call-template name="output.rows">
|
|
Packit |
e4b6da |
<xsl:with-param name="rows" select="thead/tr"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
<xsl:text>
</xsl:text>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="$tbl.running.header.from.thead">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>.TH
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>.T&
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:variable name="rows-set">
|
|
Packit |
e4b6da |
<xsl:copy-of select="tbody/tr|tr"/>
|
|
Packit |
e4b6da |
<xsl:copy-of select="tfoot/tr"/>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:call-template name="output.rows">
|
|
Packit |
e4b6da |
<xsl:with-param name="source" select="$source"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="rows" select="exsl:node-set($rows-set)"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>
</xsl:text>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>.TE
</xsl:text>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>.sp
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:for-each>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="output.rows">
|
|
Packit |
e4b6da |
<xsl:param name="source"/>
|
|
Packit |
e4b6da |
<xsl:param name="rows"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:variable name="cells-list">
|
|
Packit |
e4b6da |
<xsl:call-template name="build.cell.list">
|
|
Packit |
e4b6da |
<xsl:with-param name="source" select="$source"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="rows" select="$rows"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:variable name="cells" select="exsl:node-set($cells-list)"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:call-template name="create.table.format">
|
|
Packit |
e4b6da |
<xsl:with-param name="cells" select="$cells"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:for-each select="$cells/cell">
|
|
Packit |
e4b6da |
<xsl:call-template name="output.cell"/>
|
|
Packit |
e4b6da |
</xsl:for-each>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="output.cell">
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
not(preceding-sibling::cell)">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:value-of select="$tbl.column.separator.char"/>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="@type = '^'">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="@colspan and @colspan > 1">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:call-template name="copy-string">
|
|
Packit |
e4b6da |
<xsl:with-param name="string" select="$tbl.column.separator.char"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="count">
|
|
Packit |
e4b6da |
<xsl:value-of select="@colspan - 1"/>
|
|
Packit |
e4b6da |
</xsl:with-param>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>T{
</xsl:text>
|
|
Packit |
e4b6da |
<xsl:copy-of select="."/>
|
|
Packit |
e4b6da |
<xsl:text>
T}</xsl:text>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="build.cell.list">
|
|
Packit |
e4b6da |
<xsl:param name="source"/>
|
|
Packit |
e4b6da |
<xsl:param name="rows"/>
|
|
Packit |
e4b6da |
<xsl:param name="cell-data-unsorted">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:apply-templates select="$rows" mode="cell.list">
|
|
Packit |
e4b6da |
<xsl:with-param name="source" select="$source"/>
|
|
Packit |
e4b6da |
</xsl:apply-templates>
|
|
Packit |
e4b6da |
</xsl:param>
|
|
Packit |
e4b6da |
<xsl:param name="cell-data-sorted">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:for-each select="exsl:node-set($cell-data-unsorted)/cell">
|
|
Packit |
e4b6da |
<xsl:sort select="@row"/>
|
|
Packit |
e4b6da |
<xsl:sort select="@slot"/>
|
|
Packit |
e4b6da |
<xsl:copy-of select="."/>
|
|
Packit |
e4b6da |
</xsl:for-each>
|
|
Packit |
e4b6da |
</xsl:param>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:copy-of select="$cell-data-sorted"/>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template match="tr" mode="cell.list">
|
|
Packit |
e4b6da |
<xsl:param name="source"/>
|
|
Packit |
e4b6da |
<xsl:variable name="row">
|
|
Packit |
e4b6da |
<xsl:value-of select="count(preceding-sibling::tr) + 1"/>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:for-each select="td|th">
|
|
Packit |
e4b6da |
<xsl:call-template name="cell">
|
|
Packit |
e4b6da |
<xsl:with-param name="source" select="$source"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="row" select="$row"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:with-param name="class" select="name(.)"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:for-each>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="cell">
|
|
Packit |
e4b6da |
<xsl:param name="source"/>
|
|
Packit |
e4b6da |
<xsl:param name="row"/>
|
|
Packit |
e4b6da |
<xsl:param name="class"/>
|
|
Packit |
e4b6da |
<xsl:param name="slot">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:value-of select="position()"/>
|
|
Packit |
e4b6da |
</xsl:param>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
row="{$row}"
|
|
Packit |
e4b6da |
slot="{$slot}"
|
|
Packit |
e4b6da |
class="{$class}"
|
|
Packit |
e4b6da |
colspan="{@colspan}"
|
|
Packit |
e4b6da |
align="{@align}"
|
|
Packit |
e4b6da |
valign="{@valign}"
|
|
Packit |
e4b6da |
>
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test=".//tr">
|
|
Packit |
e4b6da |
<xsl:call-template name="log.message">
|
|
Packit |
e4b6da |
<xsl:with-param name="level">Warn</xsl:with-param>
|
|
Packit |
e4b6da |
<xsl:with-param name="source" select="$source"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="message">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
>tbl convert : Extracted a nested table</xsl:text>
|
|
Packit |
e4b6da |
</xsl:with-param>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
<xsl:text>[\fInested table\fR]*
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:variable name="contents">
|
|
Packit |
e4b6da |
<xsl:apply-templates/>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:call-template name="trim.text">
|
|
Packit |
e4b6da |
<xsl:with-param name="contents" select="$contents"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</cell>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="@rowspan and @rowspan > 0">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:variable name="colspan-offset">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
select="sum(preceding-sibling::td[@colspan != ''
|
|
Packit |
e4b6da |
and @colspan > 1]/@colspan) -
|
|
Packit |
e4b6da |
count(preceding-sibling::td[@colspan != ''
|
|
Packit |
e4b6da |
and @colspan > 1]/@colspan)"/>
|
|
Packit |
e4b6da |
</xsl:variable>
|
|
Packit |
e4b6da |
<xsl:call-template name="create.dummy.cells">
|
|
Packit |
e4b6da |
<xsl:with-param name="row" select="$row + 1"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:with-param name="slot" select="$slot + $colspan-offset"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="colspan" select="@colspan"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="rowspan" select="@rowspan"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="create.dummy.cells">
|
|
Packit |
e4b6da |
<xsl:param name="row"/>
|
|
Packit |
e4b6da |
<xsl:param name="slot"/>
|
|
Packit |
e4b6da |
<xsl:param name="colspan"/>
|
|
Packit |
e4b6da |
<xsl:param name="rowspan"/>
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="$rowspan > 1">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<cell row="{$row}" slot="{$slot}" type="^" colspan="{@colspan}"/>
|
|
Packit |
e4b6da |
<xsl:call-template name="create.dummy.cells">
|
|
Packit |
e4b6da |
<xsl:with-param name="row" select="$row + 1"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="slot" select="$slot"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="colspan" select="$colspan"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="rowspan" select="$rowspan - 1"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="create.table.format">
|
|
Packit |
e4b6da |
<xsl:param name="cells"/>
|
|
Packit |
e4b6da |
<xsl:apply-templates mode="table.format" select="$cells"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>.</xsl:text>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template match="cell" mode="table.format">
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="preceding-sibling::cell[1]/@row != @row">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>
</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="position() != 1">
|
|
Packit |
e4b6da |
<xsl:text> </xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="@type = '^'">
|
|
Packit |
e4b6da |
<xsl:text>^</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:when test="@align = 'center'">
|
|
Packit |
e4b6da |
<xsl:text>c</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:when test="@align = 'right'">
|
|
Packit |
e4b6da |
<xsl:text>r</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:when test="@align = 'char'">
|
|
Packit |
e4b6da |
<xsl:text>n</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>l</xsl:text>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="@valign = 'top'">
|
|
Packit |
e4b6da |
<xsl:text>t</xsl:text>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
<xsl:if test="@class = 'th'">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:value-of select="$tbl.headings.font"/>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:if test="@colspan > 1">
|
|
Packit |
e4b6da |
<xsl:call-template name="process.colspan">
|
|
Packit |
e4b6da |
<xsl:with-param name="colspan" select="@colspan - 1"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="type" select="@type"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template name="process.colspan">
|
|
Packit |
e4b6da |
<xsl:param name="colspan"/>
|
|
Packit |
e4b6da |
<xsl:param name="type"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text> </xsl:text>
|
|
Packit |
e4b6da |
<xsl:choose>
|
|
Packit |
e4b6da |
<xsl:when test="$type = '^'">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>^</xsl:text>
|
|
Packit |
e4b6da |
</xsl:when>
|
|
Packit |
e4b6da |
<xsl:otherwise>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:text>s</xsl:text>
|
|
Packit |
e4b6da |
</xsl:otherwise>
|
|
Packit |
e4b6da |
</xsl:choose>
|
|
Packit |
e4b6da |
<xsl:if test="$colspan > 1">
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:call-template name="process.colspan">
|
|
Packit |
e4b6da |
<xsl:with-param name="colspan" select="$colspan - 1"/>
|
|
Packit |
e4b6da |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
e4b6da |
</xsl:call-template>
|
|
Packit |
e4b6da |
</xsl:if>
|
|
Packit |
e4b6da |
</xsl:template>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
<xsl:template match="colgroup"/>
|
|
Packit |
e4b6da |
<xsl:template match="col"/>
|
|
Packit |
e4b6da |
|
|
Packit |
e4b6da |
</xsl:stylesheet>
|