root/docs/docbook-xsl/fo/formal.xsl

Revision 23dea7e00df87480acb58bb3398283c2bb227949, 27.0 kB (checked in by Theo Schlossnagle <jesus@omniti.com>, 7 years ago)

pull docs into master

  • Property mode set to 100644
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: formal.xsl,v 1.48 2005/05/16 08:26:08 bobstayton Exp $
8      ********************************************************************
9
10      This file is part of the XSL DocBook Stylesheet distribution.
11      See ../README or http://nwalsh.com/docbook/xsl/ for copyright
12      and other information.
13
14      ******************************************************************** -->
15
16 <xsl:template name="formal.object">
17   <xsl:param name="placement" select="'before'"/>
18
19   <xsl:variable name="id">
20     <xsl:call-template name="object.id"/>
21   </xsl:variable>
22
23   <xsl:variable name="content">
24     <xsl:if test="$placement = 'before'">
25       <xsl:call-template name="formal.object.heading">
26         <xsl:with-param name="placement" select="$placement"/>
27       </xsl:call-template>
28     </xsl:if>
29     <xsl:apply-templates/>
30     <xsl:if test="$placement != 'before'">
31       <xsl:call-template name="formal.object.heading">
32         <xsl:with-param name="placement" select="$placement"/>
33       </xsl:call-template>
34     </xsl:if>
35   </xsl:variable>
36
37   <xsl:variable name="keep.together">
38     <xsl:call-template name="dbfo-attribute">
39       <xsl:with-param name="pis"
40                       select="processing-instruction('dbfo')"/>
41       <xsl:with-param name="attribute" select="'keep-together'"/>
42     </xsl:call-template>
43   </xsl:variable>
44
45   <xsl:choose>
46     <xsl:when test="self::figure">
47       <fo:block id="{$id}"
48                 xsl:use-attribute-sets="figure.properties">
49         <xsl:if test="$keep.together != ''">
50           <xsl:attribute name="keep-together.within-column"><xsl:value-of
51                           select="$keep.together"/></xsl:attribute>
52         </xsl:if>
53         <xsl:copy-of select="$content"/>
54       </fo:block>
55     </xsl:when>
56     <xsl:when test="self::example">
57       <fo:block id="{$id}"
58                 xsl:use-attribute-sets="example.properties">
59         <xsl:if test="$keep.together != ''">
60           <xsl:attribute name="keep-together.within-column"><xsl:value-of
61                           select="$keep.together"/></xsl:attribute>
62         </xsl:if>
63         <xsl:copy-of select="$content"/>
64       </fo:block>
65     </xsl:when>
66     <xsl:when test="self::equation">
67       <fo:block id="{$id}"
68                 xsl:use-attribute-sets="equation.properties">
69         <xsl:if test="$keep.together != ''">
70           <xsl:attribute name="keep-together.within-column"><xsl:value-of
71                           select="$keep.together"/></xsl:attribute>
72         </xsl:if>
73         <xsl:copy-of select="$content"/>
74       </fo:block>
75     </xsl:when>
76     <xsl:when test="self::table">
77       <fo:block id="{$id}"
78                 xsl:use-attribute-sets="table.properties">
79         <xsl:if test="$keep.together != ''">
80           <xsl:attribute name="keep-together.within-column"><xsl:value-of
81                           select="$keep.together"/></xsl:attribute>
82         </xsl:if>
83         <xsl:copy-of select="$content"/>
84       </fo:block>
85     </xsl:when>
86     <xsl:when test="self::procedure">
87       <fo:block id="{$id}"
88                 xsl:use-attribute-sets="procedure.properties">
89         <xsl:if test="$keep.together != ''">
90           <xsl:attribute name="keep-together.within-column"><xsl:value-of
91                           select="$keep.together"/></xsl:attribute>
92         </xsl:if>
93         <xsl:copy-of select="$content"/>
94       </fo:block>
95     </xsl:when>
96     <xsl:otherwise>
97       <fo:block id="{$id}"
98                 xsl:use-attribute-sets="formal.object.properties">
99         <xsl:if test="$keep.together != ''">
100           <xsl:attribute name="keep-together.within-column"><xsl:value-of
101                           select="$keep.together"/></xsl:attribute>
102         </xsl:if>
103         <xsl:copy-of select="$content"/>
104       </fo:block>
105     </xsl:otherwise>
106   </xsl:choose>
107 </xsl:template>
108
109 <xsl:template name="formal.object.heading">
110   <xsl:param name="object" select="."/>
111   <xsl:param name="placement" select="'before'"/>
112
113   <fo:block xsl:use-attribute-sets="formal.title.properties">
114     <xsl:choose>
115       <xsl:when test="$placement = 'before'">
116         <xsl:attribute
117                name="keep-with-next.within-column">always</xsl:attribute>
118       </xsl:when>
119       <xsl:otherwise>
120         <xsl:attribute
121                name="keep-with-previous.within-column">always</xsl:attribute>
122       </xsl:otherwise>
123     </xsl:choose>
124     <xsl:apply-templates select="$object" mode="object.title.markup">
125       <xsl:with-param name="allow-anchors" select="1"/>
126     </xsl:apply-templates>
127   </fo:block>
128 </xsl:template>
129
130 <xsl:template name="informal.object">
131   <xsl:variable name="id">
132     <xsl:call-template name="object.id"/>
133   </xsl:variable>
134
135   <xsl:choose>
136     <xsl:when test="local-name(.) = 'equation'">
137       <fo:block id="{$id}"
138                 xsl:use-attribute-sets="equation.properties">
139         <xsl:apply-templates/>
140       </fo:block>
141     </xsl:when>
142     <xsl:when test="local-name(.) = 'procedure'">
143       <fo:block id="{$id}"
144                 xsl:use-attribute-sets="procedure.properties">
145         <xsl:apply-templates/>
146       </fo:block>
147     </xsl:when>
148     <xsl:when test="local-name(.) = 'informalfigure'">
149       <fo:block id="{$id}"
150                 xsl:use-attribute-sets="informalfigure.properties">
151         <xsl:apply-templates/>
152       </fo:block>
153     </xsl:when>
154     <xsl:when test="local-name(.) = 'informaltable'">
155       <fo:block id="{$id}"
156                 xsl:use-attribute-sets="informaltable.properties">
157         <xsl:apply-templates/>
158       </fo:block>
159     </xsl:when>
160     <xsl:when test="local-name(.) = 'informalexample'">
161       <fo:block id="{$id}"
162                 xsl:use-attribute-sets="informalexample.properties">
163         <xsl:apply-templates/>
164       </fo:block>
165     </xsl:when>
166     <xsl:when test="local-name(.) = 'informalequation'">
167       <fo:block id="{$id}"
168                 xsl:use-attribute-sets="informalequation.properties">
169         <xsl:apply-templates/>
170       </fo:block>
171     </xsl:when>
172     <xsl:otherwise>
173       <fo:block id="{$id}" xsl:use-attribute-sets="informal.object.properties">
174         <xsl:apply-templates/>
175       </fo:block>
176     </xsl:otherwise>
177   </xsl:choose>
178 </xsl:template>
179
180 <xsl:template name="semiformal.object">
181   <xsl:param name="placement" select="'before'"/>
182   <xsl:choose>
183     <xsl:when test="./title">
184       <xsl:call-template name="formal.object">
185         <xsl:with-param name="placement" select="$placement"/>
186       </xsl:call-template>
187     </xsl:when>
188     <xsl:otherwise>
189       <xsl:call-template name="informal.object"/>
190     </xsl:otherwise>
191   </xsl:choose>
192 </xsl:template>
193
194 <xsl:template match="figure">
195   <xsl:variable name="param.placement"
196                 select="substring-after(normalize-space($formal.title.placement),
197                                         concat(local-name(.), ' '))"/>
198
199   <xsl:variable name="placement">
200     <xsl:choose>
201       <xsl:when test="contains($param.placement, ' ')">
202         <xsl:value-of select="substring-before($param.placement, ' ')"/>
203       </xsl:when>
204       <xsl:when test="$param.placement = ''">before</xsl:when>
205       <xsl:otherwise>
206         <xsl:value-of select="$param.placement"/>
207       </xsl:otherwise>
208     </xsl:choose>
209   </xsl:variable>
210
211   <xsl:variable name="figure">
212     <xsl:call-template name="formal.object">
213       <xsl:with-param name="placement" select="$placement"/>
214     </xsl:call-template>
215   </xsl:variable>
216
217   <xsl:choose>
218     <xsl:when test="(@float and @float != '0') or @floatstyle != ''">
219       <fo:float>
220         <xsl:attribute name="float">
221           <xsl:choose>
222             <xsl:when test="@floatstyle != ''">
223               <xsl:value-of select="@floatstyle"/>
224             </xsl:when>
225             <xsl:when test="@float = '1'">
226               <xsl:value-of select="$default.float.class"/>
227             </xsl:when>
228             <xsl:otherwise>
229               <xsl:value-of select="@float"/>
230             </xsl:otherwise>
231           </xsl:choose>
232         </xsl:attribute>
233         <xsl:copy-of select="$figure"/>
234       </fo:float>
235     </xsl:when>
236     <xsl:otherwise>
237       <xsl:copy-of select="$figure"/>
238     </xsl:otherwise>
239   </xsl:choose>
240 </xsl:template>
241
242 <xsl:template match="example">
243   <xsl:variable name="param.placement"
244                 select="substring-after(normalize-space($formal.title.placement),
245                                         concat(local-name(.), ' '))"/>
246
247   <xsl:variable name="placement">
248     <xsl:choose>
249       <xsl:when test="contains($param.placement, ' ')">
250         <xsl:value-of select="substring-before($param.placement, ' ')"/>
251       </xsl:when>
252       <xsl:when test="$param.placement = ''">before</xsl:when>
253       <xsl:otherwise>
254         <xsl:value-of select="$param.placement"/>
255       </xsl:otherwise>
256     </xsl:choose>
257   </xsl:variable>
258
259   <!-- Get align value from internal mediaobject -->
260   <xsl:variable name="align">
261     <xsl:if test="mediaobject|mediaobjectco">
262       <xsl:variable name="olist" select="mediaobject/imageobject
263                      |mediaobjectco/imageobjectco
264                      |mediaobject/videoobject
265                      |mediaobject/audioobject
266                      |mediaobject/textobject"/>
267
268       <xsl:variable name="object.index">
269         <xsl:call-template name="select.mediaobject.index">
270           <xsl:with-param name="olist" select="$olist"/>
271           <xsl:with-param name="count" select="1"/>
272         </xsl:call-template>
273       </xsl:variable>
274
275       <xsl:variable name="object" select="$olist[position() = $object.index]"/>
276
277       <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/>
278     </xsl:if>
279   </xsl:variable>
280
281   <xsl:choose>
282     <xsl:when test="$align != ''">
283       <fo:block>
284           <xsl:attribute name="text-align">
285             <xsl:value-of select="$align"/>
286           </xsl:attribute>
287         <xsl:call-template name="formal.object">
288           <xsl:with-param name="placement" select="$placement"/>
289         </xsl:call-template>
290       </fo:block>
291     </xsl:when>
292     <xsl:otherwise>
293       <xsl:call-template name="formal.object">
294         <xsl:with-param name="placement" select="$placement"/>
295       </xsl:call-template>
296     </xsl:otherwise>
297   </xsl:choose>
298
299 </xsl:template>
300
301 <xsl:template name="table.frame">
302   <xsl:variable name="frame">
303     <xsl:choose>
304       <xsl:when test="../@frame">
305         <xsl:value-of select="../@frame"/>
306       </xsl:when>
307       <xsl:otherwise>all</xsl:otherwise>
308     </xsl:choose>
309   </xsl:variable>
310
311   <xsl:choose>
312     <xsl:when test="$frame='all'">
313       <xsl:attribute name="border-left-style">
314         <xsl:value-of select="$table.frame.border.style"/>
315       </xsl:attribute>
316       <xsl:attribute name="border-right-style">
317         <xsl:value-of select="$table.frame.border.style"/>
318       </xsl:attribute>
319       <xsl:attribute name="border-top-style">
320         <xsl:value-of select="$table.frame.border.style"/>
321       </xsl:attribute>
322       <xsl:attribute name="border-bottom-style">
323         <xsl:value-of select="$table.frame.border.style"/>
324       </xsl:attribute>
325       <xsl:attribute name="border-left-width">
326         <xsl:value-of select="$table.frame.border.thickness"/>
327       </xsl:attribute>
328       <xsl:attribute name="border-right-width">
329         <xsl:value-of select="$table.frame.border.thickness"/>
330       </xsl:attribute>
331       <xsl:attribute name="border-top-width">
332         <xsl:value-of select="$table.frame.border.thickness"/>
333       </xsl:attribute>
334       <xsl:attribute name="border-bottom-width">
335         <xsl:value-of select="$table.frame.border.thickness"/>
336       </xsl:attribute>
337       <xsl:attribute name="border-left-color">
338         <xsl:value-of select="$table.frame.border.color"/>
339       </xsl:attribute>
340       <xsl:attribute name="border-right-color">
341         <xsl:value-of select="$table.frame.border.color"/>
342       </xsl:attribute>
343       <xsl:attribute name="border-top-color">
344         <xsl:value-of select="$table.frame.border.color"/>
345       </xsl:attribute>
346       <xsl:attribute name="border-bottom-color">
347         <xsl:value-of select="$table.frame.border.color"/>
348       </xsl:attribute>
349     </xsl:when>
350     <xsl:when test="$frame='bottom'">
351       <xsl:attribute name="border-left-style">none</xsl:attribute>
352       <xsl:attribute name="border-right-style">none</xsl:attribute>
353       <xsl:attribute name="border-top-style">none</xsl:attribute>
354       <xsl:attribute name="border-bottom-style">
355         <xsl:value-of select="$table.frame.border.style"/>
356       </xsl:attribute>
357       <xsl:attribute name="border-bottom-width">
358         <xsl:value-of select="$table.frame.border.thickness"/>
359       </xsl:attribute>
360       <xsl:attribute name="border-bottom-color">
361         <xsl:value-of select="$table.frame.border.color"/>
362       </xsl:attribute>
363     </xsl:when>
364     <xsl:when test="$frame='sides'">
365       <xsl:attribute name="border-left-style">
366         <xsl:value-of select="$table.frame.border.style"/>
367       </xsl:attribute>
368       <xsl:attribute name="border-right-style">
369         <xsl:value-of select="$table.frame.border.style"/>
370       </xsl:attribute>
371       <xsl:attribute name="border-top-style">none</xsl:attribute>
372       <xsl:attribute name="border-bottom-style">none</xsl:attribute>
373       <xsl:attribute name="border-left-width">
374         <xsl:value-of select="$table.frame.border.thickness"/>
375       </xsl:attribute>
376       <xsl:attribute name="border-right-width">
377         <xsl:value-of select="$table.frame.border.thickness"/>
378       </xsl:attribute>
379       <xsl:attribute name="border-left-color">
380         <xsl:value-of select="$table.frame.border.color"/>
381       </xsl:attribute>
382       <xsl:attribute name="border-right-color">
383         <xsl:value-of select="$table.frame.border.color"/>
384       </xsl:attribute>
385     </xsl:when>
386     <xsl:when test="$frame='top'">
387       <xsl:attribute name="border-left-style">none</xsl:attribute>
388       <xsl:attribute name="border-right-style">none</xsl:attribute>
389       <xsl:attribute name="border-top-style">
390         <xsl:value-of select="$table.frame.border.style"/>
391       </xsl:attribute>
392       <xsl:attribute name="border-bottom-style">none</xsl:attribute>
393       <xsl:attribute name="border-top-width">
394         <xsl:value-of select="$table.frame.border.thickness"/>
395       </xsl:attribute>
396       <xsl:attribute name="border-top-color">
397         <xsl:value-of select="$table.frame.border.color"/>
398       </xsl:attribute>
399     </xsl:when>
400     <xsl:when test="$frame='topbot'">
401       <xsl:attribute name="border-left-style">none</xsl:attribute>
402       <xsl:attribute name="border-right-style">none</xsl:attribute>
403       <xsl:attribute name="border-top-style">
404         <xsl:value-of select="$table.frame.border.style"/>
405       </xsl:attribute>
406       <xsl:attribute name="border-bottom-style">
407         <xsl:value-of select="$table.frame.border.style"/>
408       </xsl:attribute>
409       <xsl:attribute name="border-top-width">
410         <xsl:value-of select="$table.frame.border.thickness"/>
411       </xsl:attribute>
412       <xsl:attribute name="border-bottom-width">
413         <xsl:value-of select="$table.frame.border.thickness"/>
414       </xsl:attribute>
415       <xsl:attribute name="border-top-color">
416         <xsl:value-of select="$table.frame.border.color"/>
417       </xsl:attribute>
418       <xsl:attribute name="border-bottom-color">
419         <xsl:value-of select="$table.frame.border.color"/>
420       </xsl:attribute>
421     </xsl:when>
422     <xsl:when test="$frame='none'">
423       <xsl:attribute name="border-left-style">none</xsl:attribute>
424       <xsl:attribute name="border-right-style">none</xsl:attribute>
425       <xsl:attribute name="border-top-style">none</xsl:attribute>
426       <xsl:attribute name="border-bottom-style">none</xsl:attribute>
427     </xsl:when>
428     <xsl:otherwise>
429       <xsl:message>
430         <xsl:text>Impossible frame on table: </xsl:text>
431         <xsl:value-of select="$frame"/>
432       </xsl:message>
433       <xsl:attribute name="border-left-style">none</xsl:attribute>
434       <xsl:attribute name="border-right-style">none</xsl:attribute>
435       <xsl:attribute name="border-top-style">none</xsl:attribute>
436       <xsl:attribute name="border-bottom-style">none</xsl:attribute>
437     </xsl:otherwise>
438   </xsl:choose>
439 </xsl:template>
440
441 <xsl:template match="table">
442   <xsl:choose>
443     <xsl:when test="tgroup|mediaobject|graphic">
444       <xsl:call-template name="calsTable"/>
445     </xsl:when>
446     <xsl:otherwise>
447       <xsl:apply-templates select="." mode="htmlTable"/>
448     </xsl:otherwise>
449   </xsl:choose>
450 </xsl:template>
451
452 <xsl:template name="calsTable">
453   <xsl:if test="tgroup/tbody/tr
454                 |tgroup/thead/tr
455                 |tgroup/tfoot/tr">
456     <xsl:message terminate="yes">Broken table: tr descendent of CALS Table.</xsl:message>
457   </xsl:if>
458
459   <xsl:variable name="id">
460     <xsl:call-template name="object.id"/>
461   </xsl:variable>
462
463   <xsl:variable name="param.placement"
464                 select="substring-after(normalize-space($formal.title.placement),
465                                         concat(local-name(.), ' '))"/>
466
467   <xsl:variable name="placement">
468     <xsl:choose>
469       <xsl:when test="contains($param.placement, ' ')">
470         <xsl:value-of select="substring-before($param.placement, ' ')"/>
471       </xsl:when>
472       <xsl:when test="$param.placement = ''">before</xsl:when>
473       <xsl:otherwise>
474         <xsl:value-of select="$param.placement"/>
475       </xsl:otherwise>
476     </xsl:choose>
477   </xsl:variable>
478
479   <xsl:variable name="keep.together">
480     <xsl:call-template name="dbfo-attribute">
481       <xsl:with-param name="pis"
482                       select="processing-instruction('dbfo')"/>
483       <xsl:with-param name="attribute" select="'keep-together'"/>
484     </xsl:call-template>
485   </xsl:variable>
486
487   <xsl:variable name="table.content">
488     <fo:block id="{$id}"
489               xsl:use-attribute-sets="table.properties">
490
491       <xsl:if test="$keep.together != ''">
492         <xsl:attribute name="keep-together.within-column">
493           <xsl:value-of select="$keep.together"/>
494         </xsl:attribute>
495       </xsl:if>
496
497       <xsl:if test="$placement = 'before'">
498         <xsl:call-template name="formal.object.heading">
499           <xsl:with-param name="placement" select="$placement"/>
500         </xsl:call-template>
501       </xsl:if>
502
503       <xsl:for-each select="tgroup">
504         <xsl:variable name="prop-columns"
505                       select=".//colspec[contains(@colwidth, '*')]"/>
506         <fo:table xsl:use-attribute-sets="table.table.properties">
507           <xsl:call-template name="table.frame"/>
508           <xsl:if test="following-sibling::tgroup">
509             <xsl:attribute name="border-bottom-width">0pt</xsl:attribute>
510             <xsl:attribute name="border-bottom-style">none</xsl:attribute>
511             <xsl:attribute name="padding-bottom">0pt</xsl:attribute>
512             <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
513             <xsl:attribute name="space-after">0pt</xsl:attribute>
514             <xsl:attribute name="space-after.minimum">0pt</xsl:attribute>
515             <xsl:attribute name="space-after.optimum">0pt</xsl:attribute>
516             <xsl:attribute name="space-after.maximum">0pt</xsl:attribute>
517           </xsl:if>
518           <xsl:if test="preceding-sibling::tgroup">
519             <xsl:attribute name="border-top-width">0pt</xsl:attribute>
520             <xsl:attribute name="border-top-style">none</xsl:attribute>
521             <xsl:attribute name="padding-top">0pt</xsl:attribute>
522             <xsl:attribute name="margin-top">0pt</xsl:attribute>
523             <xsl:attribute name="space-before">0pt</xsl:attribute>
524             <xsl:attribute name="space-before.minimum">0pt</xsl:attribute>
525             <xsl:attribute name="space-before.optimum">0pt</xsl:attribute>
526             <xsl:attribute name="space-before.maximum">0pt</xsl:attribute>
527           </xsl:if>
528           <xsl:if test="count($prop-columns) != 0 or
529                         $fop.extensions != 0 or
530                         $passivetex.extensions != 0">
531             <xsl:attribute name="table-layout">fixed</xsl:attribute>
532           </xsl:if>
533           <xsl:apply-templates select="."/>
534         </fo:table>
535       </xsl:for-each>
536
537       <xsl:if test="$placement != 'before'">
538         <xsl:call-template name="formal.object.heading">
539           <xsl:with-param name="placement" select="$placement"/>
540         </xsl:call-template>
541       </xsl:if>
542     </fo:block>
543   </xsl:variable>
544
545   <xsl:variable name="footnotes">
546     <xsl:if test=".//footnote">
547       <fo:block font-family="{$body.fontset}"
548                 font-size="{$footnote.font.size}"
549                 keep-with-previous.within-column="always">
550         <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
551       </fo:block>
552     </xsl:if>
553   </xsl:variable>
554
555   <xsl:choose>
556     <xsl:when test="@orient='land' and
557                     $fop.extensions = 0 and
558                     $passivetex.extensions = 0" >
559       <fo:block-container reference-orientation="90"
560             xsl:use-attribute-sets="list.block.spacing">
561         <xsl:attribute name="width">
562           <xsl:call-template name="table.width"/>
563         </xsl:attribute>
564         <fo:block>
565           <!-- Such spans won't work in most FO processors since it does
566                not follow the XSL spec, which says it must appear on
567                an element that is a direct child of fo:flow.
568                Some processors relax that requirement, however. -->
569           <xsl:attribute name="span">
570             <xsl:choose>
571               <xsl:when test="@pgwide=1">all</xsl:when>
572               <xsl:otherwise>none</xsl:otherwise>
573             </xsl:choose>
574           </xsl:attribute>
575           <xsl:copy-of select="$table.content"/>
576           <xsl:copy-of select="$footnotes"/>
577         </fo:block>
578       </fo:block-container>
579     </xsl:when>
580     <xsl:otherwise>
581       <fo:block>
582         <xsl:attribute name="span">
583           <xsl:choose>
584             <xsl:when test="@pgwide=1">all</xsl:when>
585             <xsl:otherwise>none</xsl:otherwise>
586           </xsl:choose>
587         </xsl:attribute>
588         <xsl:copy-of select="$table.content"/>
589         <xsl:copy-of select="$footnotes"/>
590       </fo:block>
591     </xsl:otherwise>
592   </xsl:choose>
593 </xsl:template>
594
595 <xsl:template match="equation">
596   <xsl:variable name="param.placement"
597                 select="substring-after(normalize-space($formal.title.placement),
598                                         concat(local-name(.), ' '))"/>
599
600   <xsl:variable name="placement">
601     <xsl:choose>
602       <xsl:when test="contains($param.placement, ' ')">
603         <xsl:value-of select="substring-before($param.placement, ' ')"/>
604       </xsl:when>
605       <xsl:when test="$param.placement = ''">before</xsl:when>
606       <xsl:otherwise>
607         <xsl:value-of select="$param.placement"/>
608       </xsl:otherwise>
609     </xsl:choose>
610   </xsl:variable>
611
612   <xsl:call-template name="semiformal.object">
613     <xsl:with-param name="placement" select="$placement"/>
614   </xsl:call-template>
615 </xsl:template>
616
617 <xsl:template match="figure/title"></xsl:template>
618 <xsl:template match="figure/titleabbrev"></xsl:template>
619 <xsl:template match="table/title"></xsl:template>
620 <xsl:template match="table/titleabbrev"></xsl:template>
621 <xsl:template match="table/textobject"></xsl:template>
622 <xsl:template match="example/title"></xsl:template>
623 <xsl:template match="example/titleabbrev"></xsl:template>
624 <xsl:template match="equation/title"></xsl:template>
625 <xsl:template match="equation/titleabbrev"></xsl:template>
626
627 <xsl:template match="informalfigure">
628   <xsl:call-template name="informal.object"/>
629 </xsl:template>
630
631 <xsl:template match="informalexample">
632   <xsl:call-template name="informal.object"/>
633 </xsl:template>
634
635 <xsl:template match="informaltable">
636   <xsl:choose>
637     <xsl:when test="tgroup|mediaobject|graphic">
638       <xsl:call-template name="informalCalsTable"/>
639     </xsl:when>
640     <xsl:otherwise>
641       <xsl:apply-templates select="." mode="htmlTable"/>
642     </xsl:otherwise>
643   </xsl:choose>
644 </xsl:template>
645
646 <xsl:template name="informalCalsTable">
647   <xsl:variable name="id">
648     <xsl:call-template name="object.id"/>
649   </xsl:variable>
650
651   <xsl:variable name="table.content">
652     <xsl:for-each select="tgroup">
653       <xsl:variable name="prop-columns"
654                     select=".//colspec[contains(@colwidth, '*')]"/>
655       <fo:block xsl:use-attribute-sets="informaltable.properties">
656         <fo:table xsl:use-attribute-sets="table.table.properties">
657           <xsl:call-template name="table.frame"/>
658           <xsl:if test="following-sibling::tgroup">
659             <xsl:attribute name="border-bottom-width">0pt</xsl:attribute>
660             <xsl:attribute name="border-bottom-style">none</xsl:attribute>
661             <xsl:attribute name="padding-bottom">0pt</xsl:attribute>
662             <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
663             <xsl:attribute name="space-after">0pt</xsl:attribute>
664             <xsl:attribute name="space-after.minimum">0pt</xsl:attribute>
665             <xsl:attribute name="space-after.optimum">0pt</xsl:attribute>
666             <xsl:attribute name="space-after.maximum">0pt</xsl:attribute>
667           </xsl:if>
668           <xsl:if test="preceding-sibling::tgroup">
669             <xsl:attribute name="border-top-width">0pt</xsl:attribute>
670             <xsl:attribute name="border-top-style">none</xsl:attribute>
671             <xsl:attribute name="padding-top">0pt</xsl:attribute>
672             <xsl:attribute name="margin-top">0pt</xsl:attribute>
673             <xsl:attribute name="space-before">0pt</xsl:attribute>
674             <xsl:attribute name="space-before.minimum">0pt</xsl:attribute>
675             <xsl:attribute name="space-before.optimum">0pt</xsl:attribute>
676             <xsl:attribute name="space-before.maximum">0pt</xsl:attribute>
677           </xsl:if>
678           <xsl:if test="count($prop-columns) != 0 or
679                         $fop.extensions != 0 or
680                         $passivetex.extensions != 0">
681             <xsl:attribute name="table-layout">fixed</xsl:attribute>
682           </xsl:if>
683           <xsl:apply-templates select="."/>
684         </fo:table>
685       </fo:block>
686     </xsl:for-each>
687   </xsl:variable>
688
689   <xsl:variable name="footnotes">
690     <xsl:if test=".//footnote">
691       <fo:block font-family="{$body.fontset}"
692                 font-size="{$footnote.font.size}"
693                 keep-with-previous.within-column="always">
694         <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
695       </fo:block>
696     </xsl:if>
697   </xsl:variable>
698
699   <xsl:choose>
700     <xsl:when test="@orient='land'">
701       <fo:block-container reference-orientation="90">
702         <fo:block id="{$id}">
703           <xsl:attribute name="span">
704             <xsl:choose>
705               <xsl:when test="@pgwide=1">all</xsl:when>
706               <xsl:otherwise>none</xsl:otherwise>
707             </xsl:choose>
708           </xsl:attribute>
709           <xsl:copy-of select="$table.content"/>
710           <xsl:copy-of select="$footnotes"/>
711         </fo:block>
712       </fo:block-container>
713     </xsl:when>
714     <xsl:otherwise>
715       <fo:block id="{$id}">
716         <xsl:attribute name="span">
717           <xsl:choose>
718             <xsl:when test="@pgwide=1">all</xsl:when>
719             <xsl:otherwise>none</xsl:otherwise>
720           </xsl:choose>
721         </xsl:attribute>
722         <xsl:copy-of select="$table.content"/>
723         <xsl:copy-of select="$footnotes"/>
724       </fo:block>
725     </xsl:otherwise>
726   </xsl:choose>
727 </xsl:template>
728
729 <xsl:template match="informaltable/textobject"></xsl:template>
730
731 <xsl:template match="informalequation">
732   <xsl:call-template name="informal.object"/>
733 </xsl:template>
734
735 </xsl:stylesheet>
Note: See TracBrowser for help on using the browser.