source: clfs-sysroot/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/htmltbl.xsl @ a18aefd

Last change on this file since a18aefd was a18aefd, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Added lfs-xsl stylesheets.

  • Property mode set to 100644
File size: 7.4 KB
Line 
1<?xml version="1.0"?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                xmlns:fo="http://www.w3.org/1999/XSL/Format"
4                version="1.0">
5
6<!-- ********************************************************************
7     $Id$
8     ********************************************************************
9
10     This file is part of the XSL DocBook Stylesheet distribution.
11     See ../README or http://docbook.sf.net/release/xsl/current/ for
12     copyright and other information.
13
14     ******************************************************************** -->
15
16<!-- ==================================================================== -->
17
18<xsl:attribute-set name="th.style">
19  <xsl:attribute name="font-weight">bold</xsl:attribute>
20</xsl:attribute-set>
21
22<!-- Outputs an fo:table only, not the caption -->
23<xsl:template match="table|informaltable" mode="htmlTable">
24
25  <xsl:variable name="numcols">
26    <xsl:call-template name="widest-html-row">
27      <xsl:with-param name="rows" select=".//tr"/>
28    </xsl:call-template>
29  </xsl:variable>
30
31  <xsl:variable name="prop-columns"
32                select=".//col[contains(@width, '%')] |
33                        .//colgroup[contains(@width, '%')]"/>
34
35  <xsl:variable name="table.width">
36    <xsl:call-template name="table.width"/>
37  </xsl:variable>
38
39  <fo:table xsl:use-attribute-sets="table.table.properties">
40    <xsl:choose>
41      <xsl:when test="$fop.extensions != 0 or
42                      $passivetex.extensions != 0">
43        <xsl:attribute name="table-layout">fixed</xsl:attribute>
44      </xsl:when>
45    </xsl:choose>
46    <xsl:attribute name="width">
47      <xsl:choose>
48        <xsl:when test="@width">
49          <xsl:value-of select="@width"/>
50        </xsl:when>
51        <xsl:when test="$table.width">
52          <xsl:value-of select="$table.width"/>
53        </xsl:when>
54        <xsl:otherwise>100%</xsl:otherwise>
55      </xsl:choose>
56    </xsl:attribute>
57    <xsl:call-template name="make-html-table-columns">
58      <xsl:with-param name="count" select="$numcols"/>
59    </xsl:call-template>
60    <xsl:apply-templates select="thead" mode="htmlTable"/>
61    <xsl:apply-templates select="tfoot" mode="htmlTable"/>
62    <xsl:choose>
63      <xsl:when test="tbody">
64        <xsl:apply-templates select="tbody" mode="htmlTable"/>
65      </xsl:when>
66      <xsl:otherwise>
67        <fo:table-body start-indent="0pt" end-indent="0pt">
68          <xsl:apply-templates select="tr" mode="htmlTable"/>
69        </fo:table-body>
70      </xsl:otherwise>
71    </xsl:choose>
72  </fo:table>
73
74</xsl:template>
75
76<xsl:template match="caption" mode="htmlTable">
77  <!-- Handled by formal.object.heading -->
78</xsl:template>
79
80<xsl:template name="widest-html-row">
81  <xsl:param name="rows" select="''"/>
82  <xsl:param name="count" select="0"/>
83  <xsl:choose>
84    <xsl:when test="count($rows) = 0">
85      <xsl:value-of select="$count"/>
86    </xsl:when>
87    <xsl:otherwise>
88      <xsl:choose>
89        <xsl:when test="$count &gt; count($rows[1]/*)">
90          <xsl:call-template name="widest-html-row">
91            <xsl:with-param name="rows" select="$rows[position() &gt; 1]"/>
92            <xsl:with-param name="count" select="$count"/>
93          </xsl:call-template>
94        </xsl:when>
95        <xsl:otherwise>
96          <xsl:call-template name="widest-html-row">
97            <xsl:with-param name="rows" select="$rows[position() &gt; 1]"/>
98            <xsl:with-param name="count" select="count($rows[1]/*)"/>
99          </xsl:call-template>
100        </xsl:otherwise>
101      </xsl:choose>
102    </xsl:otherwise>
103  </xsl:choose>
104</xsl:template>
105
106<xsl:template name="make-html-table-columns">
107  <xsl:param name="count" select="0"/>
108  <xsl:param name="number" select="1"/>
109
110  <xsl:choose>
111    <xsl:when test="col|colgroup/col">
112      <xsl:for-each select="col|colgroup/col">
113        <fo:table-column>
114          <xsl:attribute name="column-number">
115            <xsl:number from="table|informaltable" level="any" format="1"/>
116          </xsl:attribute>
117          <xsl:if test="@width">
118            <xsl:attribute name="column-width">
119              <xsl:choose>
120                <xsl:when test="$fop.extensions != 0 and
121                                contains(@width, '%')">
122                  <xsl:value-of select="concat('proportional-column-width(',
123                                               substring-before(@width, '%'),
124                                               ')')"/>
125                </xsl:when>
126                <xsl:otherwise>
127                  <xsl:value-of select="@width"/>
128                </xsl:otherwise>
129              </xsl:choose>
130            </xsl:attribute>
131          </xsl:if>
132        </fo:table-column>
133      </xsl:for-each>
134    </xsl:when>
135    <xsl:when test="$fop.extensions != 0">
136      <xsl:if test="$number &lt;= $count">
137        <fo:table-column column-number="{$number}"
138                         column-width="{6.5 div $count}in"/>
139        <xsl:call-template name="make-html-table-columns">
140          <xsl:with-param name="count" select="$count"/>
141          <xsl:with-param name="number" select="$number + 1"/>
142        </xsl:call-template>
143      </xsl:if>
144    </xsl:when>
145  </xsl:choose>
146</xsl:template>
147
148<xsl:template match="tbody" mode="htmlTable">
149  <fo:table-body border-bottom-width="0.25pt"
150                 border-bottom-style="solid"
151                 border-bottom-color="black"
152                 start-indent="0pt"
153                 end-indent="0pt">
154    <xsl:apply-templates mode="htmlTable"/>
155  </fo:table-body>
156</xsl:template>
157
158<xsl:template match="td" mode="htmlTable">
159  <xsl:variable name="bgcolor">
160    <xsl:call-template name="pi.dbfo_bgcolor"/>
161  </xsl:variable>
162  <fo:table-cell xsl:use-attribute-sets="table.cell.padding">
163    <xsl:call-template name="table.cell.properties">
164      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/>
165      <xsl:with-param name="rowsep.inherit" select="0"/>
166      <xsl:with-param name="colsep.inherit" select="0"/>
167    </xsl:call-template>
168    <fo:block>
169      <xsl:call-template name="table.cell.block.properties"/>
170      <xsl:apply-templates/>
171    </fo:block>
172  </fo:table-cell>
173</xsl:template>
174
175<xsl:template match="tfoot" mode="htmlTable">
176  <fo:table-footer start-indent="0pt"
177                   end-indent="0pt">
178    <xsl:apply-templates mode="htmlTable"/>
179  </fo:table-footer>
180</xsl:template>
181
182<xsl:template match="th" mode="htmlTable">
183  <xsl:variable name="bgcolor">
184    <xsl:call-template name="pi.dbfo_bgcolor"/>
185  </xsl:variable>
186  <fo:table-cell xsl:use-attribute-sets="th.style table.cell.padding">
187    <xsl:call-template name="table.cell.properties">
188      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/>
189      <xsl:with-param name="rowsep.inherit" select="0"/>
190      <xsl:with-param name="colsep.inherit" select="0"/>
191    </xsl:call-template>
192    <fo:block>
193      <xsl:call-template name="table.cell.block.properties"/>
194      <xsl:apply-templates/>
195    </fo:block>
196  </fo:table-cell>
197</xsl:template>
198
199<xsl:template match="thead" mode="htmlTable">
200  <fo:table-header border-bottom-width="0.25pt"
201                   border-bottom-style="solid"
202                   border-bottom-color="black"
203                   start-indent="0pt"
204                   end-indent="0pt"
205                   font-weight="bold">
206    <xsl:apply-templates mode="htmlTable"/>
207  </fo:table-header>
208</xsl:template>
209
210<xsl:template match="tr" mode="htmlTable">
211  <fo:table-row>
212    <xsl:call-template name="table.row.properties"/>
213    <xsl:apply-templates mode="htmlTable"/>
214  </fo:table-row>
215</xsl:template>
216
217</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.