Imported Upstream version 1.77.1
[platform/upstream/docbook-xsl.git] / fo / titlepage.xsl
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: titlepage.xsl 9286 2012-04-19 10:10:58Z bobstayton $
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="book.titlepage.recto.style">
19   <xsl:attribute name="font-family">
20     <xsl:value-of select="$title.fontset"/>
21   </xsl:attribute>
22   <xsl:attribute name="font-weight">bold</xsl:attribute>
23   <xsl:attribute name="font-size">12pt</xsl:attribute>
24   <xsl:attribute name="text-align">center</xsl:attribute>
25 </xsl:attribute-set>
26
27 <xsl:attribute-set name="book.titlepage.verso.style">
28   <xsl:attribute name="font-size">10pt</xsl:attribute>
29 </xsl:attribute-set>
30
31 <xsl:attribute-set name="article.titlepage.recto.style"/>
32 <xsl:attribute-set name="article.titlepage.verso.style"/>
33
34 <xsl:attribute-set name="set.titlepage.recto.style"/>
35 <xsl:attribute-set name="set.titlepage.verso.style"/>
36
37 <xsl:attribute-set name="part.titlepage.recto.style">
38   <xsl:attribute name="text-align">center</xsl:attribute>
39 </xsl:attribute-set>
40
41 <xsl:attribute-set name="part.titlepage.verso.style"/>
42
43 <xsl:attribute-set name="partintro.titlepage.recto.style"/>
44 <xsl:attribute-set name="partintro.titlepage.verso.style"/>
45
46 <xsl:attribute-set name="reference.titlepage.recto.style"/>
47 <xsl:attribute-set name="reference.titlepage.verso.style"/>
48
49 <xsl:attribute-set name="dedication.titlepage.recto.style"/>
50 <xsl:attribute-set name="dedication.titlepage.verso.style"/>
51
52 <xsl:attribute-set name="acknowledgements.titlepage.recto.style"/>
53 <xsl:attribute-set name="acknowledgements.titlepage.verso.style"/>
54
55 <xsl:attribute-set name="preface.titlepage.recto.style"/>
56 <xsl:attribute-set name="preface.titlepage.verso.style"/>
57
58 <xsl:attribute-set name="chapter.titlepage.recto.style"/>
59 <xsl:attribute-set name="chapter.titlepage.verso.style"/>
60
61 <xsl:attribute-set name="appendix.titlepage.recto.style"/>
62 <xsl:attribute-set name="appendix.titlepage.verso.style"/>
63
64 <xsl:attribute-set name="bibliography.titlepage.recto.style"/>
65 <xsl:attribute-set name="bibliography.titlepage.verso.style"/>
66
67 <xsl:attribute-set name="bibliodiv.titlepage.recto.style"/>
68 <xsl:attribute-set name="bibliodiv.titlepage.verso.style"/>
69
70 <xsl:attribute-set name="glossary.titlepage.recto.style"/>
71 <xsl:attribute-set name="glossary.titlepage.verso.style"/>
72
73 <xsl:attribute-set name="glossdiv.titlepage.recto.style"/>
74 <xsl:attribute-set name="glossdiv.titlepage.verso.style"/>
75
76 <xsl:attribute-set name="index.titlepage.recto.style"/>
77 <xsl:attribute-set name="index.titlepage.verso.style"/>
78
79 <xsl:attribute-set name="setindex.titlepage.recto.style"/>
80 <xsl:attribute-set name="setindex.titlepage.verso.style"/>
81
82 <xsl:attribute-set name="indexdiv.titlepage.recto.style"/>
83 <xsl:attribute-set name="indexdiv.titlepage.verso.style"/>
84
85 <xsl:attribute-set name="colophon.titlepage.recto.style"/>
86 <xsl:attribute-set name="colophon.titlepage.verso.style"/>
87
88 <xsl:attribute-set name="sidebar.titlepage.recto.style"/>
89 <xsl:attribute-set name="sidebar.titlepage.verso.style"/>
90
91 <xsl:attribute-set name="qandaset.titlepage.recto.style"/>
92 <xsl:attribute-set name="qandaset.titlepage.verso.style"/>
93
94 <xsl:attribute-set name="section.titlepage.recto.style">
95   <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
96 </xsl:attribute-set>
97
98 <xsl:attribute-set name="section.titlepage.verso.style">
99   <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
100   <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
101 </xsl:attribute-set>
102
103 <xsl:attribute-set name="sect1.titlepage.recto.style"
104                    use-attribute-sets="section.titlepage.recto.style"/>
105 <xsl:attribute-set name="sect1.titlepage.verso.style"
106                    use-attribute-sets="section.titlepage.verso.style"/>
107
108 <xsl:attribute-set name="sect2.titlepage.recto.style"
109                    use-attribute-sets="section.titlepage.recto.style"/>
110 <xsl:attribute-set name="sect2.titlepage.verso.style"
111                    use-attribute-sets="section.titlepage.verso.style"/>
112
113 <xsl:attribute-set name="sect3.titlepage.recto.style"
114                    use-attribute-sets="section.titlepage.recto.style"/>
115 <xsl:attribute-set name="sect3.titlepage.verso.style"
116                    use-attribute-sets="section.titlepage.verso.style"/>
117
118 <xsl:attribute-set name="sect4.titlepage.recto.style"
119                    use-attribute-sets="section.titlepage.recto.style"/>
120 <xsl:attribute-set name="sect4.titlepage.verso.style"
121                    use-attribute-sets="section.titlepage.verso.style"/>
122
123 <xsl:attribute-set name="sect5.titlepage.recto.style"
124                    use-attribute-sets="section.titlepage.recto.style"/>
125 <xsl:attribute-set name="sect5.titlepage.verso.style"
126                    use-attribute-sets="section.titlepage.verso.style"/>
127
128 <xsl:attribute-set name="simplesect.titlepage.recto.style"
129                    use-attribute-sets="section.titlepage.recto.style"/>
130 <xsl:attribute-set name="simplesect.titlepage.verso.style"
131                    use-attribute-sets="section.titlepage.verso.style"/>
132
133 <xsl:attribute-set name="topic.titlepage.recto.style"/>
134 <xsl:attribute-set name="topic.titlepage.verso.style"/>
135
136 <xsl:attribute-set name="refnamediv.titlepage.recto.style"
137                    use-attribute-sets="section.titlepage.recto.style"/>
138 <xsl:attribute-set name="refnamediv.titlepage.verso.style"
139                    use-attribute-sets="section.titlepage.verso.style"/>
140
141 <xsl:attribute-set name="refsynopsisdiv.titlepage.recto.style"
142                    use-attribute-sets="section.titlepage.recto.style"/>
143 <xsl:attribute-set name="refsynopsisdiv.titlepage.verso.style"
144                    use-attribute-sets="section.titlepage.verso.style"/>
145
146 <xsl:attribute-set name="refsection.titlepage.recto.style"
147                    use-attribute-sets="section.titlepage.recto.style"/>
148 <xsl:attribute-set name="refsection.titlepage.verso.style"
149                    use-attribute-sets="section.titlepage.verso.style"/>
150
151 <xsl:attribute-set name="refsect1.titlepage.recto.style"
152                    use-attribute-sets="section.titlepage.recto.style"/>
153 <xsl:attribute-set name="refsect1.titlepage.verso.style"
154                    use-attribute-sets="section.titlepage.verso.style"/>
155
156 <xsl:attribute-set name="refsect2.titlepage.recto.style"
157                    use-attribute-sets="section.titlepage.recto.style"/>
158 <xsl:attribute-set name="refsect2.titlepage.verso.style"
159                    use-attribute-sets="section.titlepage.verso.style"/>
160
161 <xsl:attribute-set name="refsect3.titlepage.recto.style"
162                    use-attribute-sets="section.titlepage.recto.style"/>
163 <xsl:attribute-set name="refsect3.titlepage.verso.style"
164                    use-attribute-sets="section.titlepage.verso.style"/>
165
166 <xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
167 <xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
168
169 <xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
170 <xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
171
172 <xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
173 <xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
174
175 <xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
176 <xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
177
178 <xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
179 <xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
180
181 <xsl:attribute-set name="list.of.procedures.titlepage.recto.style"/>
182 <xsl:attribute-set name="list.of.procedures.contents.titlepage.verso.style"/>
183
184 <xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
185 <xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
186
187 <xsl:attribute-set name="component.list.of.tables.titlepage.recto.style"/>
188 <xsl:attribute-set name="component.list.of.tables.contents.titlepage.verso.style"/>
189
190 <xsl:attribute-set name="component.list.of.figures.titlepage.recto.style"/>
191 <xsl:attribute-set name="component.list.of.figures.contents.titlepage.verso.style"/>
192
193 <xsl:attribute-set name="component.list.of.equations.titlepage.recto.style"/>
194 <xsl:attribute-set name="component.list.of.equations.contents.titlepage.verso.style"/>
195
196 <xsl:attribute-set name="component.list.of.examples.titlepage.recto.style"/>
197 <xsl:attribute-set name="component.list.of.examples.contents.titlepage.verso.style"/>
198
199 <xsl:attribute-set name="component.list.of.procedures.titlepage.recto.style"/>
200 <xsl:attribute-set name="component.list.of.procedures.contents.titlepage.verso.style"/>
201
202 <xsl:attribute-set name="component.list.of.unknowns.titlepage.recto.style"/>
203 <xsl:attribute-set name="component.list.of.unknowns.contents.titlepage.verso.style"/>
204
205 <!-- ==================================================================== -->
206
207 <xsl:template match="*" mode="titlepage.mode">
208   <!-- if an element isn't found in this mode, try the default mode -->
209   <xsl:apply-templates select="."/>
210 </xsl:template>
211
212 <xsl:template match="abbrev" mode="titlepage.mode">
213   <xsl:apply-templates mode="titlepage.mode"/>
214 </xsl:template>
215
216 <xsl:template match="abstract" mode="titlepage.mode">
217   <fo:block xsl:use-attribute-sets="abstract.properties">
218     <fo:block xsl:use-attribute-sets="abstract.title.properties">
219       <xsl:choose>
220         <xsl:when test="title|info/title">
221           <xsl:apply-templates select="title|info/title"/>
222         </xsl:when>
223         <xsl:otherwise>
224           <xsl:call-template name="gentext">
225             <xsl:with-param name="key" select="'Abstract'"/>
226           </xsl:call-template>
227         </xsl:otherwise>
228       </xsl:choose>
229     </fo:block>
230     <xsl:apply-templates select="*[not(self::title)]" mode="titlepage.mode"/>
231   </fo:block>
232 </xsl:template>
233
234 <xsl:template match="abstract/title" mode="titlepage.mode"/>
235
236 <xsl:template match="abstract/title" mode="titlepage.abstract.title.mode">
237   <xsl:apply-templates mode="titlepage.mode"/>
238 </xsl:template>
239
240 <xsl:template match="address" mode="titlepage.mode">
241   <!-- use the normal address handling code -->
242   <xsl:apply-templates select="."/>
243 </xsl:template>
244
245 <xsl:template match="affiliation" mode="titlepage.mode">
246   <fo:block>
247     <xsl:apply-templates mode="titlepage.mode"/>
248   </fo:block>
249 </xsl:template>
250
251 <xsl:template match="artpagenums" mode="titlepage.mode">
252   <xsl:apply-templates mode="titlepage.mode"/>
253 </xsl:template>
254
255 <xsl:template match="author" mode="titlepage.mode">
256   <fo:block>
257     <xsl:call-template name="anchor"/>
258     <xsl:choose>
259       <xsl:when test="orgname">
260         <xsl:apply-templates/>
261       </xsl:when>
262       <xsl:otherwise>
263         <xsl:call-template name="person.name"/>
264         <xsl:if test="affiliation/orgname">
265           <xsl:text>, </xsl:text>
266           <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/>
267         </xsl:if>
268         <xsl:if test="email|affiliation/address/email">
269           <xsl:text> </xsl:text>
270           <xsl:apply-templates select="(email|affiliation/address/email)[1]"/>
271         </xsl:if>
272       </xsl:otherwise>
273     </xsl:choose>
274   </fo:block>
275 </xsl:template>
276
277 <xsl:template match="authorblurb" mode="titlepage.mode">
278   <xsl:apply-templates mode="titlepage.mode"/>
279 </xsl:template>
280
281 <xsl:template match="authorgroup" mode="titlepage.mode">
282   <fo:wrapper>
283     <xsl:call-template name="anchor"/>
284     <xsl:apply-templates mode="titlepage.mode"/>
285   </fo:wrapper>
286 </xsl:template>
287
288 <xsl:template match="authorinitials" mode="titlepage.mode">
289   <xsl:apply-templates mode="titlepage.mode"/>
290 </xsl:template>
291
292 <xsl:template match="bibliomisc" mode="titlepage.mode">
293   <xsl:apply-templates mode="titlepage.mode"/>
294 </xsl:template>
295
296 <xsl:template match="bibliomset" mode="titlepage.mode">
297   <xsl:apply-templates mode="titlepage.mode"/>
298 </xsl:template>
299
300 <xsl:template match="collab" mode="titlepage.mode">
301   <xsl:apply-templates mode="titlepage.mode"/>
302 </xsl:template>
303
304 <xsl:template match="collabname" mode="titlepage.mode">
305   <xsl:apply-templates mode="titlepage.mode"/>
306 </xsl:template>
307
308 <xsl:template match="confgroup" mode="titlepage.mode">
309   <fo:block>
310     <xsl:apply-templates mode="titlepage.mode"/>
311   </fo:block>
312 </xsl:template>
313
314 <xsl:template match="confdates" mode="titlepage.mode">
315   <fo:block>
316     <xsl:apply-templates mode="titlepage.mode"/>
317   </fo:block>
318 </xsl:template>
319
320 <xsl:template match="conftitle" mode="titlepage.mode">
321   <fo:block>
322     <xsl:apply-templates mode="titlepage.mode"/>
323   </fo:block>
324 </xsl:template>
325
326 <xsl:template match="confnum" mode="titlepage.mode">
327   <!-- suppress -->
328 </xsl:template>
329
330 <xsl:template match="contractnum" mode="titlepage.mode">
331   <xsl:apply-templates mode="titlepage.mode"/>
332 </xsl:template>
333
334 <xsl:template match="contractsponsor" mode="titlepage.mode">
335   <xsl:apply-templates mode="titlepage.mode"/>
336 </xsl:template>
337
338 <xsl:template match="contrib" mode="titlepage.mode">
339   <xsl:apply-templates mode="titlepage.mode"/>
340 </xsl:template>
341
342 <xsl:template match="copyright" mode="titlepage.mode">
343   <xsl:call-template name="gentext">
344     <xsl:with-param name="key" select="'Copyright'"/>
345   </xsl:call-template>
346   <xsl:call-template name="gentext.space"/>
347   <xsl:call-template name="dingbat">
348     <xsl:with-param name="dingbat">copyright</xsl:with-param>
349   </xsl:call-template>
350   <xsl:call-template name="gentext.space"/>
351   <xsl:call-template name="copyright.years">
352     <xsl:with-param name="years" select="year"/>
353     <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
354     <xsl:with-param name="single.year.ranges"
355                     select="$make.single.year.ranges"/>
356   </xsl:call-template>
357   <xsl:call-template name="gentext.space"/>
358   <xsl:apply-templates select="holder" mode="titlepage.mode"/>
359 </xsl:template>
360
361 <xsl:template match="year" mode="titlepage.mode">
362   <xsl:apply-templates/>
363 </xsl:template>
364
365 <xsl:template match="holder" mode="titlepage.mode">
366   <xsl:apply-templates/>
367   <xsl:if test="position() &lt; last()">
368     <xsl:text>, </xsl:text>
369   </xsl:if>
370 </xsl:template>
371
372 <xsl:template match="corpauthor" mode="titlepage.mode">
373   <xsl:apply-templates mode="titlepage.mode"/>
374 </xsl:template>
375
376 <xsl:template match="corpcredit" mode="titlepage.mode">
377   <xsl:apply-templates mode="titlepage.mode"/>
378 </xsl:template>
379
380 <xsl:template match="corpname" mode="titlepage.mode">
381   <xsl:apply-templates mode="titlepage.mode"/>
382 </xsl:template>
383
384 <xsl:template match="date" mode="titlepage.mode">
385   <xsl:apply-templates mode="titlepage.mode"/>
386 </xsl:template>
387
388 <xsl:template match="edition" mode="titlepage.mode">
389   <xsl:apply-templates mode="titlepage.mode"/>
390   <xsl:call-template name="gentext.space"/>
391   <xsl:call-template name="gentext">
392     <xsl:with-param name="key" select="'Edition'"/>
393   </xsl:call-template>
394 </xsl:template>
395
396 <xsl:template match="editor" mode="titlepage.mode">
397   <!-- The first editor is dealt with in the following template,
398        which in turn displays all editors of the same mode. -->
399 </xsl:template>
400
401 <xsl:template match="editor[1]" priority="2" mode="titlepage.mode">
402   <xsl:call-template name="gentext.edited.by"/>
403   <xsl:call-template name="gentext.space"/>
404   <xsl:call-template name="person.name.list">
405     <xsl:with-param name="person.list" select="../editor"/>
406   </xsl:call-template>
407 </xsl:template>
408
409 <xsl:template match="firstname" mode="titlepage.mode">
410   <xsl:apply-templates mode="titlepage.mode"/>
411 </xsl:template>
412
413 <xsl:template match="graphic" mode="titlepage.mode">
414   <!-- use the normal graphic handling code -->
415   <xsl:apply-templates select="."/>
416 </xsl:template>
417
418 <xsl:template match="honorific" mode="titlepage.mode">
419   <xsl:apply-templates mode="titlepage.mode"/>
420 </xsl:template>
421
422 <xsl:template match="isbn" mode="titlepage.mode">
423   <xsl:apply-templates mode="titlepage.mode"/>
424 </xsl:template>
425
426 <xsl:template match="issn" mode="titlepage.mode">
427   <xsl:apply-templates mode="titlepage.mode"/>
428 </xsl:template>
429
430 <xsl:template match="biblioid" mode="titlepage.mode">
431   <xsl:apply-templates mode="titlepage.mode"/>
432 </xsl:template>
433
434 <xsl:template match="itermset" mode="titlepage.mode">
435   <xsl:apply-templates select="indexterm"/>
436 </xsl:template>
437
438 <xsl:template match="invpartnumber" mode="titlepage.mode">
439   <xsl:apply-templates mode="titlepage.mode"/>
440 </xsl:template>
441
442 <xsl:template match="issuenum" mode="titlepage.mode">
443   <xsl:apply-templates mode="titlepage.mode"/>
444 </xsl:template>
445
446 <xsl:template match="jobtitle" mode="titlepage.mode">
447   <fo:block>
448     <xsl:apply-templates mode="titlepage.mode"/>
449   </fo:block>
450 </xsl:template>
451
452 <xsl:template match="keywordset" mode="titlepage.mode">
453 </xsl:template>
454
455 <xsl:template match="legalnotice" mode="titlepage.mode">
456
457   <xsl:variable name="id">
458     <xsl:call-template name="object.id"/>
459   </xsl:variable>
460
461   <fo:block id="{$id}">
462     <xsl:if test="title"> <!-- FIXME: add param for using default title? -->
463       <xsl:call-template name="formal.object.heading"/>
464     </xsl:if>
465     <xsl:apply-templates mode="titlepage.mode"/>
466   </fo:block>
467 </xsl:template>
468
469 <xsl:template match="legalnotice/title" mode="titlepage.mode">
470 </xsl:template>
471
472 <xsl:template match="lineage" mode="titlepage.mode">
473   <xsl:apply-templates mode="titlepage.mode"/>
474 </xsl:template>
475
476 <xsl:template match="modespec" mode="titlepage.mode">
477   <!-- discard -->
478 </xsl:template>
479
480 <xsl:template match="orgdiv" mode="titlepage.mode">
481   <xsl:if test="preceding-sibling::*[1][self::orgname]">
482     <xsl:text> </xsl:text>
483   </xsl:if>
484   <xsl:apply-templates mode="titlepage.mode"/>
485 </xsl:template>
486
487 <xsl:template match="orgname" mode="titlepage.mode">
488   <xsl:apply-templates mode="titlepage.mode"/>
489 </xsl:template>
490
491 <xsl:template match="othercredit" mode="titlepage.mode">
492   <xsl:variable name="contrib" select="string(contrib)"/>
493   <xsl:choose>
494     <xsl:when test="contrib">
495       <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
496         <fo:block>
497           <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
498           <xsl:text>: </xsl:text>
499           <xsl:call-template name="person.name"/>
500           <xsl:apply-templates mode="titlepage.mode" select="affiliation"/>
501           <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
502         </fo:block>
503       </xsl:if>
504     </xsl:when>
505     <xsl:otherwise>
506       <fo:block><xsl:call-template name="person.name"/></fo:block>
507       <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
508     </xsl:otherwise>
509   </xsl:choose>
510 </xsl:template>
511
512 <xsl:template match="othercredit" mode="titlepage.othercredits">
513   <xsl:text>, </xsl:text>
514   <xsl:call-template name="person.name"/>
515 </xsl:template>
516
517 <xsl:template match="othername" mode="titlepage.mode">
518   <xsl:apply-templates mode="titlepage.mode"/>
519 </xsl:template>
520
521 <xsl:template match="pagenums" mode="titlepage.mode">
522   <xsl:apply-templates mode="titlepage.mode"/>
523 </xsl:template>
524
525 <xsl:template match="printhistory" mode="titlepage.mode">
526   <xsl:apply-templates mode="titlepage.mode"/>
527 </xsl:template>
528
529 <xsl:template match="productname" mode="titlepage.mode">
530   <xsl:apply-templates mode="titlepage.mode"/>
531 </xsl:template>
532
533 <xsl:template match="productnumber" mode="titlepage.mode">
534   <xsl:apply-templates mode="titlepage.mode"/>
535 </xsl:template>
536
537 <xsl:template match="pubdate" mode="titlepage.mode">
538   <xsl:apply-templates mode="titlepage.mode"/>
539 </xsl:template>
540
541 <xsl:template match="publisher" mode="titlepage.mode">
542   <fo:block>
543     <xsl:apply-templates mode="titlepage.mode"/>
544   </fo:block>
545 </xsl:template>
546
547 <xsl:template match="publishername" mode="titlepage.mode">
548   <xsl:apply-templates mode="titlepage.mode"/>
549 </xsl:template>
550
551 <xsl:template match="pubsnumber" mode="titlepage.mode">
552   <xsl:apply-templates mode="titlepage.mode"/>
553 </xsl:template>
554
555 <xsl:template match="releaseinfo" mode="titlepage.mode">
556   <xsl:apply-templates mode="titlepage.mode"/>
557 </xsl:template>
558
559 <xsl:template match="revhistory" mode="titlepage.mode">
560
561   <xsl:variable name="explicit.table.width">
562     <xsl:call-template name="pi.dbfo_table-width"/>
563   </xsl:variable>
564
565   <xsl:variable name="table.width">
566     <xsl:choose>
567       <xsl:when test="$explicit.table.width != ''">
568         <xsl:value-of select="$explicit.table.width"/>
569       </xsl:when>
570       <xsl:when test="$default.table.width = ''">
571         <xsl:text>100%</xsl:text>
572       </xsl:when>
573       <xsl:otherwise>
574         <xsl:value-of select="$default.table.width"/>
575       </xsl:otherwise>
576     </xsl:choose>
577   </xsl:variable>
578
579  <fo:table table-layout="fixed" width="{$table.width}" xsl:use-attribute-sets="revhistory.table.properties">
580     <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>
581     <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>
582     <fo:table-column column-number="3" column-width="proportional-column-width(1)"/>
583     <fo:table-body start-indent="0pt" end-indent="0pt">
584       <fo:table-row>
585         <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">
586           <fo:block xsl:use-attribute-sets="revhistory.title.properties">
587             <xsl:choose>
588               <xsl:when test="title|info/title">
589                 <xsl:apply-templates select="title|info/title" mode="titlepage.mode"/>
590               </xsl:when>
591               <xsl:otherwise>
592                 <xsl:call-template name="gentext">
593                   <xsl:with-param name="key" select="'RevHistory'"/>
594                 </xsl:call-template>
595               </xsl:otherwise>
596             </xsl:choose>
597           </fo:block>
598         </fo:table-cell>
599       </fo:table-row>
600       <xsl:apply-templates select="*[not(self::title)]" mode="titlepage.mode"/>
601     </fo:table-body>
602   </fo:table>
603
604 </xsl:template>
605
606
607 <xsl:template match="revhistory/revision" mode="titlepage.mode">
608   <xsl:variable name="revnumber" select="revnumber"/>
609   <xsl:variable name="revdate"   select="date"/>
610   <xsl:variable name="revauthor" select="authorinitials|author"/>
611   <xsl:variable name="revremark" select="revremark|revdescription"/>
612   <fo:table-row>
613     <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
614       <fo:block>
615         <xsl:if test="$revnumber">
616           <xsl:call-template name="gentext">
617             <xsl:with-param name="key" select="'Revision'"/>
618           </xsl:call-template>
619           <xsl:call-template name="gentext.space"/>
620           <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
621         </xsl:if>
622       </fo:block>
623     </fo:table-cell>
624     <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
625       <fo:block>
626         <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
627       </fo:block>
628     </fo:table-cell>
629     <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">
630       <fo:block>
631         <xsl:for-each select="$revauthor">
632           <xsl:apply-templates select="." mode="titlepage.mode"/>
633           <xsl:if test="position() != last()">
634             <xsl:text>, </xsl:text>
635           </xsl:if>
636         </xsl:for-each>
637       </fo:block>
638     </fo:table-cell>
639   </fo:table-row>
640   <xsl:if test="$revremark">
641     <fo:table-row>
642       <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">
643         <fo:block>
644           <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
645         </fo:block>
646       </fo:table-cell>
647     </fo:table-row>
648   </xsl:if>
649 </xsl:template>
650
651 <xsl:template match="revision/revnumber" mode="titlepage.mode">
652   <xsl:apply-templates mode="titlepage.mode"/>
653 </xsl:template>
654
655 <xsl:template match="revision/date" mode="titlepage.mode">
656   <xsl:apply-templates mode="titlepage.mode"/>
657 </xsl:template>
658
659 <xsl:template match="revision/authorinitials" mode="titlepage.mode">
660   <xsl:apply-templates mode="titlepage.mode"/>
661 </xsl:template>
662
663 <xsl:template match="revision/author" mode="titlepage.mode">
664   <xsl:apply-templates mode="titlepage.mode"/>
665 </xsl:template>
666
667 <xsl:template match="revision/revremark" mode="titlepage.mode">
668   <xsl:apply-templates mode="titlepage.mode"/>
669 </xsl:template>
670
671 <xsl:template match="revision/revdescription" mode="titlepage.mode">
672   <xsl:apply-templates mode="titlepage.mode"/>
673 </xsl:template>
674
675 <xsl:template match="seriesvolnums" mode="titlepage.mode">
676   <xsl:apply-templates mode="titlepage.mode"/>
677 </xsl:template>
678
679 <xsl:template match="shortaffil" mode="titlepage.mode">
680   <xsl:apply-templates mode="titlepage.mode"/>
681 </xsl:template>
682
683 <xsl:template match="subjectset" mode="titlepage.mode">
684   <!-- discard -->
685 </xsl:template>
686
687 <xsl:template match="subtitle" mode="titlepage.mode">
688   <xsl:apply-templates mode="titlepage.mode"/>
689 </xsl:template>
690
691 <xsl:template match="surname" mode="titlepage.mode">
692   <xsl:apply-templates mode="titlepage.mode"/>
693 </xsl:template>
694
695 <xsl:template match="title" mode="titlepage.mode">
696   <xsl:apply-templates mode="titlepage.mode"/>
697 </xsl:template>
698
699 <xsl:template match="titleabbrev" mode="titlepage.mode">
700   <xsl:apply-templates mode="titlepage.mode"/>
701 </xsl:template>
702
703 <xsl:template match="volumenum" mode="titlepage.mode">
704   <xsl:apply-templates mode="titlepage.mode"/>
705 </xsl:template>
706
707 <!-- ==================================================================== -->
708 <!-- Book templates -->
709
710 <!-- Note: these templates cannot use *.titlepage.recto.mode or
711      *.titlepage.verso.mode. If they do then subsequent use of a custom
712      titlepage.templates.xml file will not work correctly. -->
713
714 <!-- book recto -->
715
716 <xsl:template match="bookinfo/authorgroup|book/info/authorgroup"
717               mode="titlepage.mode" priority="2">
718   <fo:block>
719     <xsl:call-template name="anchor"/>
720     <xsl:apply-templates mode="titlepage.mode"/>
721   </fo:block>
722 </xsl:template>
723
724 <!-- book verso -->
725
726 <xsl:template name="book.verso.title">
727   <fo:block>
728     <xsl:apply-templates mode="titlepage.mode"/>
729
730     <xsl:if test="following-sibling::subtitle
731                   |following-sibling::info/subtitle
732                   |following-sibling::bookinfo/subtitle">
733       <xsl:text>: </xsl:text>
734
735       <xsl:apply-templates select="(following-sibling::subtitle
736                                    |following-sibling::info/subtitle
737                                    |following-sibling::bookinfo/subtitle)[1]"
738                            mode="book.verso.subtitle.mode"/>
739     </xsl:if>
740   </fo:block>
741 </xsl:template>
742
743 <xsl:template match="subtitle" mode="book.verso.subtitle.mode">
744   <xsl:apply-templates mode="titlepage.mode"/>
745   <xsl:if test="following-sibling::subtitle">
746     <xsl:text>: </xsl:text>
747     <xsl:apply-templates select="following-sibling::subtitle[1]"
748                          mode="book.verso.subtitle.mode"/>
749   </xsl:if>
750 </xsl:template>
751
752 <xsl:template name="verso.authorgroup">
753   <fo:block>
754     <xsl:call-template name="gentext">
755       <xsl:with-param name="key" select="'by'"/>
756     </xsl:call-template>
757     <xsl:text> </xsl:text>
758     <xsl:call-template name="person.name.list">
759       <xsl:with-param name="person.list" select="author|corpauthor|editor"/>
760     </xsl:call-template>
761   </fo:block>
762   <xsl:apply-templates select="othercredit" mode="titlepage.mode"/>
763 </xsl:template>
764
765 <xsl:template match="bookinfo/author|book/info/author"
766               mode="titlepage.mode" priority="2">
767   <fo:block>
768     <xsl:call-template name="person.name"/>
769   </fo:block>
770 </xsl:template>
771
772 <xsl:template match="bookinfo/corpauthor|book/info/corpauthor"
773               mode="titlepage.mode" priority="2">
774   <fo:block>
775     <xsl:apply-templates/>
776   </fo:block>
777 </xsl:template>
778
779 <xsl:template match="bookinfo/pubdate|book/info/pubdate"
780               mode="titlepage.mode" priority="2">
781   <fo:block>
782     <xsl:call-template name="gentext">
783       <xsl:with-param name="key" select="'pubdate'"/>
784     </xsl:call-template>
785     <xsl:text> </xsl:text>
786     <xsl:apply-templates mode="titlepage.mode"/>
787   </fo:block>
788 </xsl:template>
789
790 <!-- ==================================================================== -->
791
792 </xsl:stylesheet>