1<?xml version='1.0'?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                version='1.0'>
4
5<!-- ********************************************************************
6     $Id: titlepage.xsl,v 1.34 2006/05/21 12:25:21 kosek Exp $
7     ********************************************************************
8
9     This file is part of the XSL DocBook Stylesheet distribution.
10     See ../README or http://nwalsh.com/docbook/xsl/ for copyright
11     and other information.
12
13     ******************************************************************** -->
14
15<!-- ==================================================================== -->
16
17<xsl:attribute-set name="book.titlepage.recto.style"/>
18<xsl:attribute-set name="book.titlepage.verso.style"/>
19
20<xsl:attribute-set name="article.titlepage.recto.style"/>
21<xsl:attribute-set name="article.titlepage.verso.style"/>
22
23<xsl:attribute-set name="set.titlepage.recto.style"/>
24<xsl:attribute-set name="set.titlepage.verso.style"/>
25
26<xsl:attribute-set name="part.titlepage.recto.style"/>
27<xsl:attribute-set name="part.titlepage.verso.style"/>
28
29<xsl:attribute-set name="partintro.titlepage.recto.style"/>
30<xsl:attribute-set name="partintro.titlepage.verso.style"/>
31
32<xsl:attribute-set name="reference.titlepage.recto.style"/>
33<xsl:attribute-set name="reference.titlepage.verso.style"/>
34
35<xsl:attribute-set name="refentry.titlepage.recto.style"/>
36<xsl:attribute-set name="refentry.titlepage.verso.style"/>
37
38<xsl:attribute-set name="dedication.titlepage.recto.style"/>
39<xsl:attribute-set name="dedication.titlepage.verso.style"/>
40
41<xsl:attribute-set name="preface.titlepage.recto.style"/>
42<xsl:attribute-set name="preface.titlepage.verso.style"/>
43
44<xsl:attribute-set name="chapter.titlepage.recto.style"/>
45<xsl:attribute-set name="chapter.titlepage.verso.style"/>
46
47<xsl:attribute-set name="appendix.titlepage.recto.style"/>
48<xsl:attribute-set name="appendix.titlepage.verso.style"/>
49
50<xsl:attribute-set name="bibliography.titlepage.recto.style"/>
51<xsl:attribute-set name="bibliography.titlepage.verso.style"/>
52
53<xsl:attribute-set name="glossary.titlepage.recto.style"/>
54<xsl:attribute-set name="glossary.titlepage.verso.style"/>
55
56<xsl:attribute-set name="index.titlepage.recto.style"/>
57<xsl:attribute-set name="index.titlepage.verso.style"/>
58
59<xsl:attribute-set name="setindex.titlepage.recto.style"/>
60<xsl:attribute-set name="setindex.titlepage.verso.style"/>
61
62<xsl:attribute-set name="section.titlepage.recto.style"/>
63<xsl:attribute-set name="section.titlepage.verso.style"/>
64
65<xsl:attribute-set name="sect1.titlepage.recto.style"
66                   use-attribute-sets="section.titlepage.recto.style"/>
67<xsl:attribute-set name="sect1.titlepage.verso.style"
68                   use-attribute-sets="section.titlepage.verso.style"/>
69
70<xsl:attribute-set name="sect2.titlepage.recto.style"
71                   use-attribute-sets="section.titlepage.recto.style"/>
72<xsl:attribute-set name="sect2.titlepage.verso.style"
73                   use-attribute-sets="section.titlepage.verso.style"/>
74
75<xsl:attribute-set name="sect3.titlepage.recto.style"
76                   use-attribute-sets="section.titlepage.recto.style"/>
77<xsl:attribute-set name="sect3.titlepage.verso.style"
78                   use-attribute-sets="section.titlepage.verso.style"/>
79
80<xsl:attribute-set name="sect4.titlepage.recto.style"
81                   use-attribute-sets="section.titlepage.recto.style"/>
82<xsl:attribute-set name="sect4.titlepage.verso.style"
83                   use-attribute-sets="section.titlepage.verso.style"/>
84
85<xsl:attribute-set name="sect5.titlepage.recto.style"
86                   use-attribute-sets="section.titlepage.recto.style"/>
87<xsl:attribute-set name="sect5.titlepage.verso.style"
88                   use-attribute-sets="section.titlepage.verso.style"/>
89
90<xsl:attribute-set name="simplesect.titlepage.recto.style"
91                   use-attribute-sets="section.titlepage.recto.style"/>
92<xsl:attribute-set name="simplesect.titlepage.verso.style"
93                   use-attribute-sets="section.titlepage.verso.style"/>
94
95<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/>
96<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/>
97
98<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/>
99<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/>
100
101<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/>
102<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/>
103
104<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/>
105<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/>
106
107<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/>
108<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/>
109
110<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/>
111<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/>
112
113<!-- ==================================================================== -->
114
115<xsl:template match="*" mode="titlepage.mode">
116  <!-- if an element isn't found in this mode, try the default mode -->
117  <xsl:apply-templates select="."/>
118</xsl:template>
119
120<xsl:template match="abbrev" mode="titlepage.mode">
121  <span class="{name(.)}">
122    <xsl:apply-templates mode="titlepage.mode"/>
123    <br/>
124  </span>
125</xsl:template>
126
127<xsl:template match="abstract" mode="titlepage.mode">
128  <div class="{name(.)}">
129    <xsl:call-template name="anchor"/>
130    <xsl:call-template name="formal.object.heading">
131      <xsl:with-param name="title">
132        <xsl:apply-templates select="." mode="title.markup"/>
133      </xsl:with-param>
134    </xsl:call-template>
135    <xsl:apply-templates mode="titlepage.mode"/>
136  </div>
137</xsl:template>
138
139<xsl:template match="abstract/title" mode="titlepage.mode">
140</xsl:template>
141
142<xsl:template match="address" mode="titlepage.mode">
143  <xsl:param name="suppress-numbers" select="'0'"/>
144
145  <xsl:variable name="rtf">
146    <xsl:apply-templates mode="titlepage.mode"/>
147  </xsl:variable>
148
149  <xsl:choose>
150    <xsl:when test="$suppress-numbers = '0'
151                    and @linenumbering = 'numbered'
152                    and $use.extensions != '0'
153                    and $linenumbering.extension != '0'">
154      <div class="{name(.)}">
155        <xsl:call-template name="paragraph">
156          <xsl:with-param name="content">
157            <xsl:call-template name="number.rtf.lines">
158              <xsl:with-param name="rtf" select="$rtf"/>
159            </xsl:call-template>
160          </xsl:with-param>
161        </xsl:call-template>
162      </div>
163    </xsl:when>
164
165    <xsl:otherwise>
166      <div class="{name(.)}">
167        <xsl:call-template name="paragraph">
168          <xsl:with-param name="content">
169            <xsl:call-template name="make-verbatim">
170              <xsl:with-param name="rtf" select="$rtf"/>
171            </xsl:call-template>
172          </xsl:with-param>
173        </xsl:call-template>
174      </div>
175    </xsl:otherwise>
176  </xsl:choose>
177</xsl:template>
178
179<xsl:template match="affiliation" mode="titlepage.mode">
180  <div class="{name(.)}">
181    <xsl:apply-templates mode="titlepage.mode"/>
182  </div>
183</xsl:template>
184
185<xsl:template match="artpagenums" mode="titlepage.mode">
186  <span class="{name(.)}">
187    <xsl:apply-templates mode="titlepage.mode"/>
188    <br/>
189  </span>
190</xsl:template>
191
192<xsl:template match="author" mode="titlepage.mode">
193  <div class="{name(.)}">
194    <h3 class="{name(.)}"><xsl:call-template name="person.name"/></h3>
195    <xsl:apply-templates mode="titlepage.mode" select="./contrib"/>
196    <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
197    <xsl:apply-templates mode="titlepage.mode" select="./email"/>
198  </div>
199</xsl:template>
200
201<xsl:template match="authorblurb|personblurb" mode="titlepage.mode">
202  <div class="{name(.)}">
203    <xsl:apply-templates mode="titlepage.mode"/>
204  </div>
205</xsl:template>
206
207<xsl:template match="authorgroup" mode="titlepage.mode">
208  <div class="{name(.)}">
209    <xsl:apply-templates mode="titlepage.mode"/>
210  </div>
211</xsl:template>
212
213<xsl:template match="authorinitials" mode="titlepage.mode">
214  <span class="{name(.)}">
215    <xsl:apply-templates mode="titlepage.mode"/>
216    <br/>
217  </span>
218</xsl:template>
219
220<xsl:template match="bibliomisc" mode="titlepage.mode">
221  <xsl:apply-templates mode="titlepage.mode"/>
222</xsl:template>
223
224<xsl:template match="bibliomset" mode="titlepage.mode">
225  <xsl:apply-templates mode="titlepage.mode"/>
226</xsl:template>
227
228<xsl:template match="collab" mode="titlepage.mode">
229  <span class="{name(.)}">
230    <xsl:apply-templates mode="titlepage.mode"/>
231    <br/>
232  </span>
233</xsl:template>
234
235<xsl:template match="collabname" mode="titlepage.mode">
236  <span class="{name(.)}">
237    <xsl:apply-templates mode="titlepage.mode"/>
238  </span>
239</xsl:template>
240
241<xsl:template match="confgroup" mode="titlepage.mode">
242  <div class="{name(.)}">
243    <xsl:apply-templates mode="titlepage.mode"/>
244  </div>
245</xsl:template>
246
247<xsl:template match="confdates" mode="titlepage.mode">
248  <span class="{name(.)}">
249    <xsl:apply-templates mode="titlepage.mode"/>
250    <br/>
251  </span>
252</xsl:template>
253
254<xsl:template match="confsponsor" mode="titlepage.mode">
255  <span class="{name(.)}">
256    <xsl:apply-templates mode="titlepage.mode"/>
257    <br/>
258  </span>
259</xsl:template>
260
261<xsl:template match="conftitle" mode="titlepage.mode">
262  <span class="{name(.)}">
263    <xsl:apply-templates mode="titlepage.mode"/>
264    <br/>
265  </span>
266</xsl:template>
267
268<xsl:template match="confnum" mode="titlepage.mode">
269  <!-- suppress -->
270</xsl:template>
271
272<xsl:template match="contractnum" mode="titlepage.mode">
273  <span class="{name(.)}">
274    <xsl:apply-templates mode="titlepage.mode"/>
275    <br/>
276  </span>
277</xsl:template>
278
279<xsl:template match="contractsponsor" mode="titlepage.mode">
280  <span class="{name(.)}">
281    <xsl:apply-templates mode="titlepage.mode"/>
282    <br/>
283  </span>
284</xsl:template>
285
286<xsl:template match="contrib" mode="titlepage.mode">
287  <span class="{name(.)}">
288    <xsl:apply-templates mode="titlepage.mode"/>
289  </span>
290</xsl:template>
291
292<xsl:template match="copyright" mode="titlepage.mode">
293  <p class="{name(.)}">
294    <xsl:call-template name="gentext">
295      <xsl:with-param name="key" select="'Copyright'"/>
296    </xsl:call-template>
297    <xsl:call-template name="gentext.space"/>
298    <xsl:call-template name="dingbat">
299      <xsl:with-param name="dingbat">copyright</xsl:with-param>
300    </xsl:call-template>
301    <xsl:call-template name="gentext.space"/>
302    <xsl:call-template name="copyright.years">
303      <xsl:with-param name="years" select="year"/>
304      <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
305      <xsl:with-param name="single.year.ranges"
306                      select="$make.single.year.ranges"/>
307    </xsl:call-template>
308    <xsl:call-template name="gentext.space"/>
309    <xsl:apply-templates select="holder" mode="titlepage.mode"/>
310  </p>
311</xsl:template>
312
313<xsl:template match="year" mode="titlepage.mode">
314  <xsl:choose>
315    <xsl:when test="$show.revisionflag != 0 and @revisionflag">
316      <span class="{@revisionflag}">
317        <xsl:apply-templates mode="titlepage.mode"/>
318      </span>
319    </xsl:when>
320    <xsl:otherwise>
321      <xsl:apply-templates mode="titlepage.mode"/>
322    </xsl:otherwise>
323  </xsl:choose>
324</xsl:template>
325
326<xsl:template match="holder" mode="titlepage.mode">
327  <xsl:choose>
328    <xsl:when test="$show.revisionflag != 0 and @revisionflag">
329      <span class="{@revisionflag}">
330        <xsl:apply-templates mode="titlepage.mode"/>
331      </span>
332    </xsl:when>
333    <xsl:otherwise>
334      <xsl:apply-templates mode="titlepage.mode"/>
335    </xsl:otherwise>
336  </xsl:choose>
337  <xsl:if test="position() &lt; last()">
338    <xsl:text>, </xsl:text>
339  </xsl:if>
340</xsl:template>
341
342<xsl:template match="corpauthor" mode="titlepage.mode">
343  <h3 class="{name(.)}">
344    <xsl:apply-templates mode="titlepage.mode"/>
345  </h3>
346</xsl:template>
347
348<xsl:template match="corpcredit" mode="titlepage.mode">
349  <span class="{name(.)}">
350    <xsl:apply-templates mode="titlepage.mode"/>
351    <br/>
352  </span>
353</xsl:template>
354
355<xsl:template match="corpname" mode="titlepage.mode">
356  <span class="{name(.)}">
357    <xsl:apply-templates mode="titlepage.mode"/>
358    <br/>
359  </span>
360</xsl:template>
361
362<xsl:template match="date" mode="titlepage.mode">
363  <span class="{name(.)}">
364    <xsl:apply-templates mode="titlepage.mode"/>
365    <br/>
366  </span>
367</xsl:template>
368
369<xsl:template match="edition" mode="titlepage.mode">
370  <p class="{name(.)}">
371    <xsl:apply-templates mode="titlepage.mode"/>
372    <xsl:call-template name="gentext.space"/>
373    <xsl:call-template name="gentext">
374      <xsl:with-param name="key" select="'Edition'"/>
375    </xsl:call-template>
376  </p>
377</xsl:template>
378
379<xsl:template match="editor" mode="titlepage.mode">
380  <h3 class="{name(.)}"><xsl:call-template name="person.name"/></h3>
381</xsl:template>
382
383<xsl:template match="editor[position()=1]" mode="titlepage.mode">
384  <h4 class="editedby"><xsl:call-template name="gentext.edited.by"/></h4>
385  <h3 class="{name(.)}"><xsl:call-template name="person.name"/></h3>
386</xsl:template>
387
388<xsl:template match="email" mode="titlepage.mode">
389  <!-- use the normal e-mail handling code -->
390  <xsl:apply-templates select="."/>
391</xsl:template>
392
393<xsl:template match="firstname" mode="titlepage.mode">
394  <span class="{name(.)}">
395    <xsl:apply-templates mode="titlepage.mode"/>
396    <br/>
397  </span>
398</xsl:template>
399
400<xsl:template match="graphic" mode="titlepage.mode">
401  <!-- use the normal graphic handling code -->
402  <xsl:apply-templates select="."/>
403</xsl:template>
404
405<xsl:template match="honorific" mode="titlepage.mode">
406  <span class="{name(.)}">
407    <xsl:apply-templates mode="titlepage.mode"/>
408    <br/>
409  </span>
410</xsl:template>
411
412<xsl:template match="isbn" mode="titlepage.mode">
413  <span class="{name(.)}">
414    <xsl:apply-templates mode="titlepage.mode"/>
415    <br/>
416  </span>
417</xsl:template>
418
419<xsl:template match="issn" mode="titlepage.mode">
420  <span class="{name(.)}">
421    <xsl:apply-templates mode="titlepage.mode"/>
422    <br/>
423  </span>
424</xsl:template>
425
426<xsl:template match="biblioid" mode="titlepage.mode">
427  <span class="{name(.)}">
428    <xsl:apply-templates mode="titlepage.mode"/>
429    <br/>
430  </span>
431</xsl:template>
432
433<xsl:template match="itermset" mode="titlepage.mode">
434</xsl:template>
435
436<xsl:template match="invpartnumber" mode="titlepage.mode">
437  <span class="{name(.)}">
438    <xsl:apply-templates mode="titlepage.mode"/>
439    <br/>
440  </span>
441</xsl:template>
442
443<xsl:template match="issuenum" mode="titlepage.mode">
444  <span class="{name(.)}">
445    <xsl:apply-templates mode="titlepage.mode"/>
446    <br/>
447  </span>
448</xsl:template>
449
450<xsl:template match="jobtitle" mode="titlepage.mode">
451  <span class="{name(.)}">
452    <xsl:apply-templates mode="titlepage.mode"/>
453    <br/>
454  </span>
455</xsl:template>
456
457<xsl:template match="keywordset" mode="titlepage.mode">
458</xsl:template>
459
460<xsl:template match="legalnotice" mode="titlepage.mode">
461  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
462  <xsl:choose>
463    <xsl:when test="$generate.legalnotice.link != 0">
464      <xsl:variable name="filename">
465        <xsl:call-template name="make-relative-filename">
466          <xsl:with-param name="base.dir" select="$base.dir"/>
467	  <xsl:with-param name="base.name">
468            <xsl:apply-templates mode="chunk-filename" select="."/>
469	  </xsl:with-param>
470        </xsl:call-template>
471      </xsl:variable>
472
473      <xsl:variable name="title">
474        <xsl:apply-templates select="." mode="title.markup"/>
475      </xsl:variable>
476
477      <xsl:variable name="href">
478        <xsl:apply-templates mode="chunk-filename" select="."/>
479      </xsl:variable>
480
481      <a href="{$href}">
482        <xsl:copy-of select="$title"/>
483      </a>
484
485      <xsl:call-template name="write.chunk">
486        <xsl:with-param name="filename" select="$filename"/>
487        <xsl:with-param name="quiet" select="$chunk.quietly"/>
488        <xsl:with-param name="content">
489        <xsl:call-template name="user.preroot"/>
490          <html>
491            <head>
492              <xsl:call-template name="system.head.content"/>
493              <xsl:call-template name="head.content"/>
494              <xsl:call-template name="user.head.content"/>
495            </head>
496            <body>
497              <xsl:call-template name="body.attributes"/>
498              <div class="{local-name(.)}">
499                <xsl:apply-templates mode="titlepage.mode"/>
500              </div>
501            </body>
502          </html>
503        </xsl:with-param>
504      </xsl:call-template>
505    </xsl:when>
506    <xsl:otherwise>
507      <div class="{local-name(.)}">
508        <a name="{$id}"/>
509        <xsl:apply-templates mode="titlepage.mode"/>
510      </div>
511    </xsl:otherwise>
512  </xsl:choose>
513</xsl:template>
514
515<xsl:template match="legalnotice/title" mode="titlepage.mode">
516  <p class="legalnotice-title"><b><xsl:apply-templates/></b></p>
517</xsl:template>
518
519<xsl:template match="lineage" mode="titlepage.mode">
520  <span class="{name(.)}">
521    <xsl:apply-templates mode="titlepage.mode"/>
522    <br/>
523  </span>
524</xsl:template>
525
526<xsl:template match="modespec" mode="titlepage.mode">
527</xsl:template>
528
529<xsl:template match="orgdiv" mode="titlepage.mode">
530  <span class="{name(.)}">
531    <xsl:apply-templates mode="titlepage.mode"/>
532    <br/>
533  </span>
534</xsl:template>
535
536<xsl:template match="orgname" mode="titlepage.mode">
537  <span class="{name(.)}">
538    <xsl:apply-templates mode="titlepage.mode"/>
539    <br/>
540  </span>
541</xsl:template>
542
543<xsl:template match="othercredit" mode="titlepage.mode">
544  <xsl:variable name="contrib" select="string(contrib)"/>
545  <xsl:choose>
546    <xsl:when test="contrib">
547      <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])">
548        <xsl:call-template name="paragraph">
549          <xsl:with-param name="class" select="name(.)"/>
550          <xsl:with-param name="content">
551            <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
552            <xsl:text>: </xsl:text>
553            <xsl:call-template name="person.name"/>
554            <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
555            <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/>
556          </xsl:with-param>
557        </xsl:call-template>
558      </xsl:if>
559    </xsl:when>
560    <xsl:otherwise>
561      <xsl:call-template name="paragraph">
562        <xsl:with-param name="class" select="name(.)"/>
563        <xsl:with-param name="content">
564          <xsl:call-template name="person.name"/>
565        </xsl:with-param>
566      </xsl:call-template>
567      <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
568    </xsl:otherwise>
569  </xsl:choose>
570</xsl:template>
571
572<xsl:template match="othercredit" mode="titlepage.othercredits">
573  <xsl:text>, </xsl:text>
574  <xsl:call-template name="person.name"/>
575</xsl:template>
576
577<xsl:template match="othername" mode="titlepage.mode">
578  <span class="{name(.)}">
579    <xsl:apply-templates mode="titlepage.mode"/>
580    <br/>
581  </span>
582</xsl:template>
583
584<xsl:template match="pagenums" mode="titlepage.mode">
585  <span class="{name(.)}">
586    <xsl:apply-templates mode="titlepage.mode"/>
587    <br/>
588  </span>
589</xsl:template>
590
591<xsl:template match="printhistory" mode="titlepage.mode">
592  <div class="{name(.)}">
593    <xsl:apply-templates mode="titlepage.mode"/>
594  </div>
595</xsl:template>
596
597<xsl:template match="productname" mode="titlepage.mode">
598  <span class="{name(.)}">
599    <xsl:apply-templates mode="titlepage.mode"/>
600    <br/>
601  </span>
602</xsl:template>
603
604<xsl:template match="productnumber" mode="titlepage.mode">
605  <span class="{name(.)}">
606    <xsl:apply-templates mode="titlepage.mode"/>
607    <br/>
608  </span>
609</xsl:template>
610
611<xsl:template match="pubdate" mode="titlepage.mode">
612  <xsl:call-template name="paragraph">
613    <xsl:with-param name="class" select="name(.)"/>
614    <xsl:with-param name="content">
615      <xsl:apply-templates mode="titlepage.mode"/>
616    </xsl:with-param>
617  </xsl:call-template>
618</xsl:template>
619
620<xsl:template match="publisher" mode="titlepage.mode">
621  <xsl:call-template name="paragraph">
622    <xsl:with-param name="class" select="name(.)"/>
623    <xsl:with-param name="content">
624      <xsl:apply-templates mode="titlepage.mode"/>
625    </xsl:with-param>
626  </xsl:call-template>
627</xsl:template>
628
629<xsl:template match="publishername" mode="titlepage.mode">
630  <span class="{name(.)}">
631    <xsl:apply-templates mode="titlepage.mode"/>
632    <br/>
633  </span>
634</xsl:template>
635
636<xsl:template match="pubsnumber" mode="titlepage.mode">
637  <span class="{name(.)}">
638    <xsl:apply-templates mode="titlepage.mode"/>
639    <br/>
640  </span>
641</xsl:template>
642
643<xsl:template match="releaseinfo" mode="titlepage.mode">
644  <xsl:call-template name="paragraph">
645    <xsl:with-param name="class" select="name(.)"/>
646    <xsl:with-param name="content">
647      <xsl:apply-templates mode="titlepage.mode"/>
648    </xsl:with-param>
649  </xsl:call-template>
650</xsl:template>
651
652<xsl:template match="revhistory" mode="titlepage.mode">
653  <xsl:variable name="numcols">
654    <xsl:choose>
655      <xsl:when test=".//authorinitials|.//author">3</xsl:when>
656      <xsl:otherwise>2</xsl:otherwise>
657    </xsl:choose>
658  </xsl:variable>
659
660  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
661
662  <xsl:variable name="title">
663    <xsl:call-template name="gentext">
664      <xsl:with-param name="key">RevHistory</xsl:with-param>
665    </xsl:call-template>
666  </xsl:variable>
667
668  <xsl:variable name="contents">
669    <div class="{name(.)}">
670      <table border="1" width="100%" summary="Revision history">
671        <tr>
672          <th align="left" valign="top" colspan="{$numcols}">
673            <b>
674              <xsl:call-template name="gentext">
675                <xsl:with-param name="key" select="'RevHistory'"/>
676              </xsl:call-template>
677            </b>
678          </th>
679        </tr>
680        <xsl:apply-templates mode="titlepage.mode">
681          <xsl:with-param name="numcols" select="$numcols"/>
682        </xsl:apply-templates>
683      </table>
684    </div>
685  </xsl:variable>
686  
687  <xsl:choose>
688    <xsl:when test="$generate.revhistory.link != 0">
689      <xsl:variable name="filename">
690        <xsl:call-template name="make-relative-filename">
691          <xsl:with-param name="base.dir" select="$base.dir"/>
692          <xsl:with-param name="base.name" select="concat($id,$html.ext)"/>
693        </xsl:call-template>
694      </xsl:variable>
695
696      <a href="{concat($id,$html.ext)}">
697        <xsl:copy-of select="$title"/>
698      </a>
699
700      <xsl:call-template name="write.chunk">
701        <xsl:with-param name="filename" select="$filename"/>
702        <xsl:with-param name="quiet" select="$chunk.quietly"/>
703        <xsl:with-param name="content">
704        <xsl:call-template name="user.preroot"/>
705          <html>
706            <head>
707              <xsl:call-template name="system.head.content"/>
708              <xsl:call-template name="head.content">
709                <xsl:with-param name="title">
710                    <xsl:value-of select="$title"/>
711                    <xsl:if test="../../title">
712                        <xsl:value-of select="concat(' (', ../../title, ')')"/>
713                    </xsl:if>
714                </xsl:with-param>
715              </xsl:call-template>
716              <xsl:call-template name="user.head.content"/>
717            </head>
718            <body>
719              <xsl:call-template name="body.attributes"/>
720              <xsl:copy-of select="$contents"/>
721            </body>
722          </html>
723        </xsl:with-param>
724      </xsl:call-template>
725    </xsl:when>
726    <xsl:otherwise>
727      <xsl:copy-of select="$contents"/>
728    </xsl:otherwise>
729  </xsl:choose>
730</xsl:template>
731
732<xsl:template match="revhistory/revision" mode="titlepage.mode">
733  <xsl:param name="numcols" select="'3'"/>
734  <xsl:variable name="revnumber" select="revnumber"/>
735  <xsl:variable name="revdate"   select="date"/>
736  <xsl:variable name="revauthor" select="authorinitials|author"/>
737  <xsl:variable name="revremark" select="revremark|revdescription"/>
738  <tr>
739    <td align="left">
740      <xsl:if test="$revnumber">
741        <xsl:call-template name="gentext">
742          <xsl:with-param name="key" select="'Revision'"/>
743        </xsl:call-template>
744        <xsl:call-template name="gentext.space"/>
745        <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/>
746      </xsl:if>
747    </td>
748    <td align="left">
749      <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/>
750    </td>
751    <xsl:choose>
752      <xsl:when test="$revauthor">
753        <td align="left">
754          <xsl:for-each select="$revauthor">
755            <xsl:apply-templates select="." mode="titlepage.mode"/>
756            <xsl:if test="position() != last()">
757	      <xsl:text>, </xsl:text>
758	    </xsl:if>
759	  </xsl:for-each>
760        </td>
761      </xsl:when>
762      <xsl:when test="$numcols &gt; 2">
763        <td>&#160;</td>
764      </xsl:when>
765      <xsl:otherwise></xsl:otherwise>
766    </xsl:choose>
767  </tr>
768  <xsl:if test="$revremark">
769    <tr>
770      <td align="left" colspan="{$numcols}">
771        <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/>
772      </td>
773    </tr>
774  </xsl:if>
775</xsl:template>
776
777<xsl:template match="revision/revnumber" mode="titlepage.mode">
778  <xsl:apply-templates mode="titlepage.mode"/>
779</xsl:template>
780
781<xsl:template match="revision/date" mode="titlepage.mode">
782  <xsl:apply-templates mode="titlepage.mode"/>
783</xsl:template>
784
785<xsl:template match="revision/authorinitials" mode="titlepage.mode">
786  <xsl:apply-templates mode="titlepage.mode"/>
787</xsl:template>
788
789<xsl:template match="revision/author" mode="titlepage.mode">
790  <xsl:apply-templates mode="titlepage.mode"/>
791</xsl:template>
792
793<xsl:template match="revision/revremark" mode="titlepage.mode">
794  <xsl:apply-templates mode="titlepage.mode"/>
795</xsl:template>
796
797<xsl:template match="revision/revdescription" mode="titlepage.mode">
798  <xsl:apply-templates mode="titlepage.mode"/>
799</xsl:template>
800
801<xsl:template match="seriesvolnums" mode="titlepage.mode">
802  <span class="{name(.)}">
803    <xsl:apply-templates mode="titlepage.mode"/>
804    <br/>
805  </span>
806</xsl:template>
807
808<xsl:template match="shortaffil" mode="titlepage.mode">
809  <span class="{name(.)}">
810    <xsl:apply-templates mode="titlepage.mode"/>
811    <br/>
812  </span>
813</xsl:template>
814
815<xsl:template match="subjectset" mode="titlepage.mode">
816</xsl:template>
817
818<xsl:template match="subtitle" mode="titlepage.mode">
819  <h2 class="{name(.)}">
820    <xsl:apply-templates mode="titlepage.mode"/>
821  </h2>
822</xsl:template>
823
824<xsl:template match="surname" mode="titlepage.mode">
825  <span class="{name(.)}">
826    <xsl:apply-templates mode="titlepage.mode"/>
827    <br/>
828  </span>
829</xsl:template>
830
831<xsl:template match="title" mode="titlepage.mode">
832  <xsl:variable name="id">
833    <xsl:choose>
834      <!-- if title is in an *info wrapper, get the grandparent -->
835      <xsl:when test="contains(local-name(..), 'info')">
836        <xsl:call-template name="object.id">
837          <xsl:with-param name="object" select="../.."/>
838        </xsl:call-template>
839      </xsl:when>
840      <xsl:otherwise>
841        <xsl:call-template name="object.id">
842          <xsl:with-param name="object" select=".."/>
843        </xsl:call-template>
844      </xsl:otherwise>
845    </xsl:choose>
846  </xsl:variable>
847
848  <h1 class="{name(.)}">
849    <a name="{$id}"/>
850    <xsl:choose>
851      <xsl:when test="$show.revisionflag != 0 and @revisionflag">
852	<span class="{@revisionflag}">
853	  <xsl:apply-templates mode="titlepage.mode"/>
854	</span>
855      </xsl:when>
856      <xsl:otherwise>
857	<xsl:apply-templates mode="titlepage.mode"/>
858      </xsl:otherwise>
859    </xsl:choose>
860  </h1>
861</xsl:template>
862
863<xsl:template match="titleabbrev" mode="titlepage.mode">
864  <!-- nop; title abbreviations don't belong on the title page! -->
865</xsl:template>
866
867<xsl:template match="volumenum" mode="titlepage.mode">
868  <span class="{name(.)}">
869    <xsl:apply-templates mode="titlepage.mode"/>
870    <br/>
871  </span>
872</xsl:template>
873
874<!-- ==================================================================== -->
875
876</xsl:stylesheet>
877