source: BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/division.xsl@ c115ef0

Last change on this file since c115ef0 was 67300de, checked in by Joe Ciccone <jciccone@…>, 16 years ago

Create a clfs-1.1 branch in preperation for a RC.

  • Property mode set to 100644
File size: 22.6 KB
Line 
1<?xml version='1.0'?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:fo="http://www.w3.org/1999/XSL/Format"
4 xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
5 version='1.0'>
6
7<!-- ********************************************************************
8 $Id$
9 ********************************************************************
10
11 This file is part of the XSL DocBook Stylesheet distribution.
12 See ../README or http://docbook.sf.net/release/xsl/current/ for
13 copyright and other information.
14
15 ******************************************************************** -->
16
17<!-- ==================================================================== -->
18
19<xsl:template name="division.title">
20 <xsl:param name="node" select="."/>
21 <xsl:variable name="id">
22 <xsl:call-template name="object.id">
23 <xsl:with-param name="object" select="$node"/>
24 </xsl:call-template>
25 </xsl:variable>
26 <xsl:variable name="title">
27 <xsl:apply-templates select="$node" mode="object.title.markup"/>
28 </xsl:variable>
29
30 <xsl:if test="$passivetex.extensions != 0">
31 <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"
32 fotex-bookmark-level="1"
33 fotex-bookmark-label="{$id}">
34 <xsl:value-of select="$title"/>
35 </fotex:bookmark>
36 </xsl:if>
37
38 <fo:block keep-with-next.within-column="always"
39 hyphenate="false">
40 <xsl:if test="$axf.extensions != 0">
41 <xsl:attribute name="axf:outline-level">
42 <xsl:choose>
43 <xsl:when test="count($node/ancestor::*) > 0">
44 <xsl:value-of select="count($node/ancestor::*)"/>
45 </xsl:when>
46 <xsl:otherwise>1</xsl:otherwise>
47 </xsl:choose>
48 </xsl:attribute>
49 <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
50 <xsl:attribute name="axf:outline-title">
51 <xsl:value-of select="normalize-space($title)"/>
52 </xsl:attribute>
53 </xsl:if>
54 <xsl:copy-of select="$title"/>
55 </fo:block>
56</xsl:template>
57
58<!-- ==================================================================== -->
59
60<xsl:template match="set">
61 <xsl:variable name="id">
62 <xsl:call-template name="object.id"/>
63 </xsl:variable>
64
65 <xsl:variable name="preamble"
66 select="*[not(self::book or self::setindex)]"/>
67
68 <xsl:variable name="content" select="book|setindex"/>
69
70 <xsl:variable name="titlepage-master-reference">
71 <xsl:call-template name="select.pagemaster">
72 <xsl:with-param name="pageclass" select="'titlepage'"/>
73 </xsl:call-template>
74 </xsl:variable>
75
76 <xsl:variable name="lot-master-reference">
77 <xsl:call-template name="select.pagemaster">
78 <xsl:with-param name="pageclass" select="'lot'"/>
79 </xsl:call-template>
80 </xsl:variable>
81
82 <xsl:if test="$preamble">
83 <fo:page-sequence hyphenate="{$hyphenate}"
84 master-reference="{$titlepage-master-reference}">
85 <xsl:attribute name="language">
86 <xsl:call-template name="l10n.language"/>
87 </xsl:attribute>
88 <xsl:attribute name="format">
89 <xsl:call-template name="page.number.format">
90 <xsl:with-param name="master-reference"
91 select="$titlepage-master-reference"/>
92 </xsl:call-template>
93 </xsl:attribute>
94
95 <xsl:attribute name="initial-page-number">
96 <xsl:call-template name="initial.page.number">
97 <xsl:with-param name="master-reference"
98 select="$titlepage-master-reference"/>
99 </xsl:call-template>
100 </xsl:attribute>
101
102 <xsl:attribute name="force-page-count">
103 <xsl:call-template name="force.page.count">
104 <xsl:with-param name="master-reference"
105 select="$titlepage-master-reference"/>
106 </xsl:call-template>
107 </xsl:attribute>
108
109 <xsl:attribute name="hyphenation-character">
110 <xsl:call-template name="gentext">
111 <xsl:with-param name="key" select="'hyphenation-character'"/>
112 </xsl:call-template>
113 </xsl:attribute>
114 <xsl:attribute name="hyphenation-push-character-count">
115 <xsl:call-template name="gentext">
116 <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
117 </xsl:call-template>
118 </xsl:attribute>
119 <xsl:attribute name="hyphenation-remain-character-count">
120 <xsl:call-template name="gentext">
121 <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
122 </xsl:call-template>
123 </xsl:attribute>
124
125 <xsl:apply-templates select="." mode="running.head.mode">
126 <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
127 </xsl:apply-templates>
128
129 <xsl:apply-templates select="." mode="running.foot.mode">
130 <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
131 </xsl:apply-templates>
132
133 <fo:flow flow-name="xsl-region-body">
134 <xsl:call-template name="set.flow.properties">
135 <xsl:with-param name="element" select="local-name(.)"/>
136 <xsl:with-param name="master-reference"
137 select="$titlepage-master-reference"/>
138 </xsl:call-template>
139
140 <fo:block id="{$id}">
141 <xsl:call-template name="set.titlepage"/>
142 </fo:block>
143 </fo:flow>
144 </fo:page-sequence>
145 </xsl:if>
146
147 <xsl:variable name="toc.params">
148 <xsl:call-template name="find.path.params">
149 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
150 </xsl:call-template>
151 </xsl:variable>
152
153 <xsl:if test="contains($toc.params, 'toc')">
154 <fo:page-sequence hyphenate="{$hyphenate}"
155 master-reference="{$lot-master-reference}">
156 <xsl:attribute name="language">
157 <xsl:call-template name="l10n.language"/>
158 </xsl:attribute>
159 <xsl:attribute name="format">
160 <xsl:call-template name="page.number.format">
161 <xsl:with-param name="element" select="'toc'"/>
162 <xsl:with-param name="master-reference"
163 select="$lot-master-reference"/>
164 </xsl:call-template>
165 </xsl:attribute>
166 <xsl:attribute name="initial-page-number">
167 <xsl:call-template name="initial.page.number">
168 <xsl:with-param name="master-reference"
169 select="$lot-master-reference"/>
170 </xsl:call-template>
171 </xsl:attribute>
172 <xsl:attribute name="force-page-count">
173 <xsl:call-template name="force.page.count">
174 <xsl:with-param name="master-reference"
175 select="$lot-master-reference"/>
176 </xsl:call-template>
177 </xsl:attribute>
178
179 <xsl:attribute name="hyphenation-character">
180 <xsl:call-template name="gentext">
181 <xsl:with-param name="key" select="'hyphenation-character'"/>
182 </xsl:call-template>
183 </xsl:attribute>
184 <xsl:attribute name="hyphenation-push-character-count">
185 <xsl:call-template name="gentext">
186 <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
187 </xsl:call-template>
188 </xsl:attribute>
189 <xsl:attribute name="hyphenation-remain-character-count">
190 <xsl:call-template name="gentext">
191 <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
192 </xsl:call-template>
193 </xsl:attribute>
194
195 <xsl:apply-templates select="." mode="running.head.mode">
196 <xsl:with-param name="master-reference" select="$lot-master-reference"/>
197 </xsl:apply-templates>
198
199 <xsl:apply-templates select="." mode="running.foot.mode">
200 <xsl:with-param name="master-reference" select="$lot-master-reference"/>
201 </xsl:apply-templates>
202
203 <fo:flow flow-name="xsl-region-body">
204 <xsl:call-template name="set.flow.properties">
205 <xsl:with-param name="element" select="local-name(.)"/>
206 <xsl:with-param name="master-reference"
207 select="$lot-master-reference"/>
208 </xsl:call-template>
209
210 <xsl:call-template name="set.toc"/>
211 </fo:flow>
212 </fo:page-sequence>
213 </xsl:if>
214
215 <xsl:apply-templates select="$content"/>
216</xsl:template>
217
218<xsl:template match="set/setinfo"></xsl:template>
219<xsl:template match="set/title"></xsl:template>
220<xsl:template match="set/subtitle"></xsl:template>
221<xsl:template match="set/titleabbrev"></xsl:template>
222
223<!-- ==================================================================== -->
224
225<xsl:template match="book">
226 <xsl:variable name="id">
227 <xsl:call-template name="object.id"/>
228 </xsl:variable>
229
230 <xsl:variable name="preamble"
231 select="title|subtitle|titleabbrev|bookinfo|info"/>
232
233 <xsl:variable name="content"
234 select="node()[not(self::title or self::subtitle
235 or self::titleabbrev
236 or self::info
237 or self::bookinfo)]"/>
238
239 <xsl:variable name="titlepage-master-reference">
240 <xsl:call-template name="select.pagemaster">
241 <xsl:with-param name="pageclass" select="'titlepage'"/>
242 </xsl:call-template>
243 </xsl:variable>
244
245 <xsl:call-template name="front.cover"/>
246
247 <xsl:if test="$preamble">
248 <xsl:call-template name="page.sequence">
249 <xsl:with-param name="master-reference"
250 select="$titlepage-master-reference"/>
251 <xsl:with-param name="content">
252 <fo:block id="{$id}">
253 <xsl:call-template name="book.titlepage"/>
254 </fo:block>
255 </xsl:with-param>
256 </xsl:call-template>
257 </xsl:if>
258
259 <xsl:apply-templates select="dedication" mode="dedication"/>
260
261 <xsl:call-template name="make.book.tocs"/>
262
263 <xsl:apply-templates select="$content"/>
264
265 <xsl:call-template name="back.cover"/>
266
267</xsl:template>
268
269<xsl:template match="book/bookinfo"></xsl:template>
270<xsl:template match="book/info"></xsl:template>
271<xsl:template match="book/title"></xsl:template>
272<xsl:template match="book/subtitle"></xsl:template>
273<xsl:template match="book/titleabbrev"></xsl:template>
274
275<!-- Placeholder templates -->
276<xsl:template name="front.cover"/>
277<xsl:template name="back.cover"/>
278
279<!-- ================================================================= -->
280<xsl:template name="make.book.tocs">
281
282 <xsl:variable name="lot-master-reference">
283 <xsl:call-template name="select.pagemaster">
284 <xsl:with-param name="pageclass" select="'lot'"/>
285 </xsl:call-template>
286 </xsl:variable>
287
288 <xsl:variable name="toc.params">
289 <xsl:call-template name="find.path.params">
290 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
291 </xsl:call-template>
292 </xsl:variable>
293
294 <xsl:if test="contains($toc.params, 'toc')">
295 <xsl:call-template name="page.sequence">
296 <xsl:with-param name="master-reference"
297 select="$lot-master-reference"/>
298 <xsl:with-param name="element" select="'toc'"/>
299 <xsl:with-param name="gentext-key" select="'TableofContents'"/>
300 <xsl:with-param name="content">
301 <xsl:call-template name="division.toc">
302 <xsl:with-param name="toc.title.p"
303 select="contains($toc.params, 'title')"/>
304 </xsl:call-template>
305 </xsl:with-param>
306 </xsl:call-template>
307 </xsl:if>
308
309 <xsl:if test="contains($toc.params,'figure') and .//figure">
310 <xsl:call-template name="page.sequence">
311 <xsl:with-param name="master-reference"
312 select="$lot-master-reference"/>
313 <xsl:with-param name="element" select="'toc'"/>
314 <xsl:with-param name="gentext-key" select="'ListofFigures'"/>
315 <xsl:with-param name="content">
316 <xsl:call-template name="list.of.titles">
317 <xsl:with-param name="titles" select="'figure'"/>
318 <xsl:with-param name="nodes" select=".//figure"/>
319 </xsl:call-template>
320 </xsl:with-param>
321 </xsl:call-template>
322 </xsl:if>
323
324 <xsl:if test="contains($toc.params,'table') and .//table">
325 <xsl:call-template name="page.sequence">
326 <xsl:with-param name="master-reference"
327 select="$lot-master-reference"/>
328 <xsl:with-param name="element" select="'toc'"/>
329 <xsl:with-param name="gentext-key" select="'ListofTables'"/>
330 <xsl:with-param name="content">
331 <xsl:call-template name="list.of.titles">
332 <xsl:with-param name="titles" select="'table'"/>
333 <xsl:with-param name="nodes" select=".//table"/>
334 </xsl:call-template>
335 </xsl:with-param>
336 </xsl:call-template>
337 </xsl:if>
338
339 <xsl:if test="contains($toc.params,'example') and .//example">
340 <xsl:call-template name="page.sequence">
341 <xsl:with-param name="master-reference"
342 select="$lot-master-reference"/>
343 <xsl:with-param name="element" select="'toc'"/>
344 <xsl:with-param name="gentext-key" select="'ListofExample'"/>
345 <xsl:with-param name="content">
346 <xsl:call-template name="list.of.titles">
347 <xsl:with-param name="titles" select="'example'"/>
348 <xsl:with-param name="nodes" select=".//example"/>
349 </xsl:call-template>
350 </xsl:with-param>
351 </xsl:call-template>
352 </xsl:if>
353
354 <xsl:if test="contains($toc.params,'equation') and
355 .//equation[title or info/title]">
356 <xsl:call-template name="page.sequence">
357 <xsl:with-param name="master-reference"
358 select="$lot-master-reference"/>
359 <xsl:with-param name="element" select="'toc'"/>
360 <xsl:with-param name="gentext-key" select="'ListofEquations'"/>
361 <xsl:with-param name="content">
362 <xsl:call-template name="list.of.titles">
363 <xsl:with-param name="titles" select="'equation'"/>
364 <xsl:with-param name="nodes"
365 select=".//equation[title or info/title]"/>
366 </xsl:call-template>
367 </xsl:with-param>
368 </xsl:call-template>
369 </xsl:if>
370
371 <xsl:if test="contains($toc.params,'procedure') and
372 .//procedure[title or info/title]">
373 <xsl:call-template name="page.sequence">
374 <xsl:with-param name="master-reference"
375 select="$lot-master-reference"/>
376 <xsl:with-param name="element" select="'toc'"/>
377 <xsl:with-param name="gentext-key" select="'ListofProcedures'"/>
378 <xsl:with-param name="content">
379 <xsl:call-template name="list.of.titles">
380 <xsl:with-param name="titles" select="'procedure'"/>
381 <xsl:with-param name="nodes"
382 select=".//procedure[title or info/title]"/>
383 </xsl:call-template>
384 </xsl:with-param>
385 </xsl:call-template>
386 </xsl:if>
387</xsl:template>
388<!-- ==================================================================== -->
389
390<xsl:template match="part">
391 <xsl:if test="not(partintro)">
392 <xsl:apply-templates select="." mode="part.titlepage.mode"/>
393 <xsl:call-template name="generate.part.toc"/>
394 </xsl:if>
395 <xsl:apply-templates/>
396</xsl:template>
397
398<xsl:template match="part" mode="part.titlepage.mode">
399 <!-- done this way to force the context node to be the part -->
400 <xsl:param name="additional.content"/>
401
402 <xsl:variable name="id">
403 <xsl:call-template name="object.id"/>
404 </xsl:variable>
405
406 <xsl:variable name="titlepage-master-reference">
407 <xsl:call-template name="select.pagemaster">
408 <xsl:with-param name="pageclass" select="'titlepage'"/>
409 </xsl:call-template>
410 </xsl:variable>
411
412 <fo:page-sequence hyphenate="{$hyphenate}"
413 master-reference="{$titlepage-master-reference}">
414 <xsl:attribute name="language">
415 <xsl:call-template name="l10n.language"/>
416 </xsl:attribute>
417 <xsl:attribute name="format">
418 <xsl:call-template name="page.number.format">
419 <xsl:with-param name="master-reference"
420 select="$titlepage-master-reference"/>
421 </xsl:call-template>
422 </xsl:attribute>
423
424 <xsl:attribute name="initial-page-number">
425 <xsl:call-template name="initial.page.number">
426 <xsl:with-param name="master-reference"
427 select="$titlepage-master-reference"/>
428 </xsl:call-template>
429 </xsl:attribute>
430
431 <xsl:attribute name="force-page-count">
432 <xsl:call-template name="force.page.count">
433 <xsl:with-param name="master-reference"
434 select="$titlepage-master-reference"/>
435 </xsl:call-template>
436 </xsl:attribute>
437
438 <xsl:attribute name="hyphenation-character">
439 <xsl:call-template name="gentext">
440 <xsl:with-param name="key" select="'hyphenation-character'"/>
441 </xsl:call-template>
442 </xsl:attribute>
443 <xsl:attribute name="hyphenation-push-character-count">
444 <xsl:call-template name="gentext">
445 <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
446 </xsl:call-template>
447 </xsl:attribute>
448 <xsl:attribute name="hyphenation-remain-character-count">
449 <xsl:call-template name="gentext">
450 <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
451 </xsl:call-template>
452 </xsl:attribute>
453
454 <xsl:apply-templates select="." mode="running.head.mode">
455 <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
456 </xsl:apply-templates>
457
458 <xsl:apply-templates select="." mode="running.foot.mode">
459 <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
460 </xsl:apply-templates>
461
462 <fo:flow flow-name="xsl-region-body">
463 <xsl:call-template name="set.flow.properties">
464 <xsl:with-param name="element" select="local-name(.)"/>
465 <xsl:with-param name="master-reference"
466 select="$titlepage-master-reference"/>
467 </xsl:call-template>
468
469 <fo:block id="{$id}">
470 <xsl:call-template name="part.titlepage"/>
471 </fo:block>
472 <xsl:copy-of select="$additional.content"/>
473 </fo:flow>
474 </fo:page-sequence>
475</xsl:template>
476
477<xsl:template match="part/docinfo|partinfo"></xsl:template>
478<xsl:template match="part/info"></xsl:template>
479<xsl:template match="part/title"></xsl:template>
480<xsl:template match="part/subtitle"></xsl:template>
481<xsl:template match="part/titleabbrev"></xsl:template>
482
483<!-- ==================================================================== -->
484
485<xsl:template name="generate.part.toc">
486 <xsl:param name="part" select="."/>
487
488 <xsl:variable name="lot-master-reference">
489 <xsl:call-template name="select.pagemaster">
490 <xsl:with-param name="pageclass" select="'lot'"/>
491 </xsl:call-template>
492 </xsl:variable>
493
494 <xsl:variable name="toc.params">
495 <xsl:call-template name="find.path.params">
496 <xsl:with-param name="node" select="$part"/>
497 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
498 </xsl:call-template>
499 </xsl:variable>
500
501 <xsl:variable name="nodes" select="reference|
502 preface|
503 chapter|
504 appendix|
505 article|
506 bibliography|
507 glossary|
508 index"/>
509
510 <xsl:if test="count($nodes) &gt; 0 and contains($toc.params, 'toc')">
511 <fo:page-sequence hyphenate="{$hyphenate}"
512 master-reference="{$lot-master-reference}">
513 <xsl:attribute name="language">
514 <xsl:call-template name="l10n.language"/>
515 </xsl:attribute>
516 <xsl:attribute name="format">
517 <xsl:call-template name="page.number.format">
518 <xsl:with-param name="element" select="'toc'"/>
519 <xsl:with-param name="master-reference"
520 select="$lot-master-reference"/>
521 </xsl:call-template>
522 </xsl:attribute>
523 <xsl:attribute name="initial-page-number">
524 <xsl:call-template name="initial.page.number">
525 <xsl:with-param name="element" select="'toc'"/>
526 <xsl:with-param name="master-reference"
527 select="$lot-master-reference"/>
528 </xsl:call-template>
529 </xsl:attribute>
530 <xsl:attribute name="force-page-count">
531 <xsl:call-template name="force.page.count">
532 <xsl:with-param name="master-reference"
533 select="$lot-master-reference"/>
534 </xsl:call-template>
535 </xsl:attribute>
536
537 <xsl:attribute name="hyphenation-character">
538 <xsl:call-template name="gentext">
539 <xsl:with-param name="key" select="'hyphenation-character'"/>
540 </xsl:call-template>
541 </xsl:attribute>
542 <xsl:attribute name="hyphenation-push-character-count">
543 <xsl:call-template name="gentext">
544 <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
545 </xsl:call-template>
546 </xsl:attribute>
547 <xsl:attribute name="hyphenation-remain-character-count">
548 <xsl:call-template name="gentext">
549 <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
550 </xsl:call-template>
551 </xsl:attribute>
552
553 <xsl:apply-templates select="$part" mode="running.head.mode">
554 <xsl:with-param name="master-reference" select="$lot-master-reference"/>
555 </xsl:apply-templates>
556
557 <xsl:apply-templates select="$part" mode="running.foot.mode">
558 <xsl:with-param name="master-reference" select="$lot-master-reference"/>
559 </xsl:apply-templates>
560
561 <fo:flow flow-name="xsl-region-body">
562 <xsl:call-template name="set.flow.properties">
563 <xsl:with-param name="element" select="local-name(.)"/>
564 <xsl:with-param name="master-reference"
565 select="$lot-master-reference"/>
566 </xsl:call-template>
567
568 <xsl:call-template name="division.toc">
569 <xsl:with-param name="toc-context" select="$part"/>
570 <xsl:with-param name="toc.title.p"
571 select="contains($toc.params, 'title')"/>
572 </xsl:call-template>
573
574 </fo:flow>
575 </fo:page-sequence>
576 </xsl:if>
577</xsl:template>
578
579<!-- ==================================================================== -->
580
581<xsl:template match="part/partintro">
582 <xsl:apply-templates select=".." mode="part.titlepage.mode">
583 <xsl:with-param name="additional.content">
584 <xsl:if test="title">
585 <xsl:call-template name="partintro.titlepage"/>
586 </xsl:if>
587 <xsl:apply-templates/>
588 </xsl:with-param>
589 </xsl:apply-templates>
590
591 <xsl:call-template name="generate.part.toc">
592 <xsl:with-param name="part" select=".."/>
593 </xsl:call-template>
594</xsl:template>
595
596<xsl:template match="partintro/title"></xsl:template>
597<xsl:template match="partintro/subtitle"></xsl:template>
598<xsl:template match="partintro/titleabbrev"></xsl:template>
599
600<!-- ==================================================================== -->
601
602<xsl:template match="book" mode="division.number">
603 <xsl:number from="set" count="book" format="1."/>
604</xsl:template>
605
606<xsl:template match="part" mode="division.number">
607 <xsl:number from="book" count="part" format="I."/>
608</xsl:template>
609
610</xsl:stylesheet>
611
Note: See TracBrowser for help on using the repository browser.