Jitterbug no more.
[fvwm.git] / doc / docbook-xsl / html / sections.xsl
blobcb3bf152dde36901cb687cebb6ff65866c469eef
1 <?xml version='1.0'?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 version='1.0'>
5 <!-- ********************************************************************
6 $Id: sections.xsl,v 1.1 2007/03/10 05:15:13 scott Exp $
7 ********************************************************************
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.
13 ******************************************************************** -->
15 <!-- ==================================================================== -->
17 <xsl:template match="section">
18 <xsl:variable name="depth" select="count(ancestor::section)+1"/>
20 <xsl:call-template name="id.warning"/>
22 <div>
23 <xsl:apply-templates select="." mode="class.attribute"/>
24 <xsl:call-template name="dir">
25 <xsl:with-param name="inherit" select="1"/>
26 </xsl:call-template>
27 <xsl:call-template name="language.attribute"/>
28 <xsl:call-template name="section.titlepage"/>
30 <xsl:variable name="toc.params">
31 <xsl:call-template name="find.path.params">
32 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
33 </xsl:call-template>
34 </xsl:variable>
36 <xsl:if test="contains($toc.params, 'toc')
37 and $depth &lt;= $generate.section.toc.level">
38 <xsl:call-template name="section.toc">
39 <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
40 </xsl:call-template>
41 <xsl:call-template name="section.toc.separator"/>
42 </xsl:if>
43 <xsl:apply-templates/>
44 <xsl:call-template name="process.chunk.footnotes"/>
45 </div>
46 </xsl:template>
48 <xsl:template name="section.title">
49 <!-- the context node should be the title of a section when called -->
50 <xsl:variable name="section" select="(ancestor::section
51 |ancestor::simplesect
52 |ancestor::sect1
53 |ancestor::sect2
54 |ancestor::sect3
55 |ancestor::sect4
56 |ancestor::sect5)[last()]"/>
58 <xsl:variable name="renderas">
59 <xsl:choose>
60 <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when>
61 <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when>
62 <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when>
63 <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when>
64 <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when>
65 <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
66 </xsl:choose>
67 </xsl:variable>
69 <xsl:variable name="level">
70 <xsl:choose>
71 <xsl:when test="$renderas != ''">
72 <xsl:value-of select="$renderas"/>
73 </xsl:when>
74 <xsl:otherwise>
75 <xsl:call-template name="section.level">
76 <xsl:with-param name="node" select="$section"/>
77 </xsl:call-template>
78 </xsl:otherwise>
79 </xsl:choose>
80 </xsl:variable>
82 <xsl:call-template name="section.heading">
83 <xsl:with-param name="section" select="$section"/>
84 <xsl:with-param name="level" select="$level"/>
85 <xsl:with-param name="title">
86 <xsl:apply-templates select="$section" mode="object.title.markup">
87 <xsl:with-param name="allow-anchors" select="1"/>
88 </xsl:apply-templates>
89 </xsl:with-param>
90 </xsl:call-template>
91 </xsl:template>
93 <xsl:template match="section/title
94 |section/info/title
95 |sectioninfo/title"
96 mode="titlepage.mode" priority="2">
97 <xsl:call-template name="section.title"/>
98 </xsl:template>
100 <xsl:template match="sect1">
101 <xsl:call-template name="id.warning"/>
103 <div>
104 <xsl:apply-templates select="." mode="class.attribute"/>
105 <xsl:call-template name="dir">
106 <xsl:with-param name="inherit" select="1"/>
107 </xsl:call-template>
108 <xsl:call-template name="language.attribute"/>
110 <xsl:choose>
111 <xsl:when test="@renderas = 'sect2'">
112 <xsl:call-template name="sect2.titlepage"/>
113 </xsl:when>
114 <xsl:when test="@renderas = 'sect3'">
115 <xsl:call-template name="sect3.titlepage"/>
116 </xsl:when>
117 <xsl:when test="@renderas = 'sect4'">
118 <xsl:call-template name="sect4.titlepage"/>
119 </xsl:when>
120 <xsl:when test="@renderas = 'sect5'">
121 <xsl:call-template name="sect5.titlepage"/>
122 </xsl:when>
123 <xsl:otherwise>
124 <xsl:call-template name="sect1.titlepage"/>
125 </xsl:otherwise>
126 </xsl:choose>
128 <xsl:variable name="toc.params">
129 <xsl:call-template name="find.path.params">
130 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
131 </xsl:call-template>
132 </xsl:variable>
134 <xsl:if test="contains($toc.params, 'toc')
135 and $generate.section.toc.level &gt;= 1">
136 <xsl:call-template name="section.toc">
137 <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
138 </xsl:call-template>
139 <xsl:call-template name="section.toc.separator"/>
140 </xsl:if>
141 <xsl:apply-templates/>
142 <xsl:call-template name="process.chunk.footnotes"/>
143 </div>
144 </xsl:template>
146 <xsl:template match="sect1/title
147 |sect1/info/title
148 |sect1info/title"
149 mode="titlepage.mode" priority="2">
150 <xsl:call-template name="section.title"/>
151 </xsl:template>
153 <xsl:template match="sect2">
154 <xsl:call-template name="id.warning"/>
156 <div>
157 <xsl:apply-templates select="." mode="class.attribute"/>
158 <xsl:call-template name="dir">
159 <xsl:with-param name="inherit" select="1"/>
160 </xsl:call-template>
161 <xsl:call-template name="language.attribute"/>
163 <xsl:choose>
164 <xsl:when test="@renderas = 'sect1'">
165 <xsl:call-template name="sect1.titlepage"/>
166 </xsl:when>
167 <xsl:when test="@renderas = 'sect3'">
168 <xsl:call-template name="sect3.titlepage"/>
169 </xsl:when>
170 <xsl:when test="@renderas = 'sect4'">
171 <xsl:call-template name="sect4.titlepage"/>
172 </xsl:when>
173 <xsl:when test="@renderas = 'sect5'">
174 <xsl:call-template name="sect5.titlepage"/>
175 </xsl:when>
176 <xsl:otherwise>
177 <xsl:call-template name="sect2.titlepage"/>
178 </xsl:otherwise>
179 </xsl:choose>
181 <xsl:variable name="toc.params">
182 <xsl:call-template name="find.path.params">
183 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
184 </xsl:call-template>
185 </xsl:variable>
187 <xsl:if test="contains($toc.params, 'toc')
188 and $generate.section.toc.level &gt;= 2">
189 <xsl:call-template name="section.toc">
190 <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
191 </xsl:call-template>
192 <xsl:call-template name="section.toc.separator"/>
193 </xsl:if>
194 <xsl:apply-templates/>
195 <xsl:call-template name="process.chunk.footnotes"/>
196 </div>
197 </xsl:template>
199 <xsl:template match="sect2/title
200 |sect2/info/title
201 |sect2info/title"
202 mode="titlepage.mode" priority="2">
203 <xsl:call-template name="section.title"/>
204 </xsl:template>
206 <xsl:template match="sect3">
207 <xsl:call-template name="id.warning"/>
209 <div>
210 <xsl:apply-templates select="." mode="class.attribute"/>
211 <xsl:call-template name="dir">
212 <xsl:with-param name="inherit" select="1"/>
213 </xsl:call-template>
214 <xsl:call-template name="language.attribute"/>
216 <xsl:choose>
217 <xsl:when test="@renderas = 'sect1'">
218 <xsl:call-template name="sect1.titlepage"/>
219 </xsl:when>
220 <xsl:when test="@renderas = 'sect2'">
221 <xsl:call-template name="sect2.titlepage"/>
222 </xsl:when>
223 <xsl:when test="@renderas = 'sect4'">
224 <xsl:call-template name="sect4.titlepage"/>
225 </xsl:when>
226 <xsl:when test="@renderas = 'sect5'">
227 <xsl:call-template name="sect5.titlepage"/>
228 </xsl:when>
229 <xsl:otherwise>
230 <xsl:call-template name="sect3.titlepage"/>
231 </xsl:otherwise>
232 </xsl:choose>
234 <xsl:variable name="toc.params">
235 <xsl:call-template name="find.path.params">
236 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
237 </xsl:call-template>
238 </xsl:variable>
240 <xsl:if test="contains($toc.params, 'toc')
241 and $generate.section.toc.level &gt;= 3">
242 <xsl:call-template name="section.toc">
243 <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
244 </xsl:call-template>
245 <xsl:call-template name="section.toc.separator"/>
246 </xsl:if>
247 <xsl:apply-templates/>
248 <xsl:call-template name="process.chunk.footnotes"/>
249 </div>
250 </xsl:template>
252 <xsl:template match="sect3/title
253 |sect3/info/title
254 |sect3info/title"
255 mode="titlepage.mode" priority="2">
256 <xsl:call-template name="section.title"/>
257 </xsl:template>
259 <xsl:template match="sect4">
260 <xsl:call-template name="id.warning"/>
262 <div>
263 <xsl:apply-templates select="." mode="class.attribute"/>
264 <xsl:call-template name="dir">
265 <xsl:with-param name="inherit" select="1"/>
266 </xsl:call-template>
267 <xsl:call-template name="language.attribute"/>
269 <xsl:choose>
270 <xsl:when test="@renderas = 'sect1'">
271 <xsl:call-template name="sect1.titlepage"/>
272 </xsl:when>
273 <xsl:when test="@renderas = 'sect2'">
274 <xsl:call-template name="sect2.titlepage"/>
275 </xsl:when>
276 <xsl:when test="@renderas = 'sect3'">
277 <xsl:call-template name="sect3.titlepage"/>
278 </xsl:when>
279 <xsl:when test="@renderas = 'sect5'">
280 <xsl:call-template name="sect5.titlepage"/>
281 </xsl:when>
282 <xsl:otherwise>
283 <xsl:call-template name="sect4.titlepage"/>
284 </xsl:otherwise>
285 </xsl:choose>
287 <xsl:variable name="toc.params">
288 <xsl:call-template name="find.path.params">
289 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
290 </xsl:call-template>
291 </xsl:variable>
293 <xsl:if test="contains($toc.params, 'toc')
294 and $generate.section.toc.level &gt;= 4">
295 <xsl:call-template name="section.toc">
296 <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
297 </xsl:call-template>
298 <xsl:call-template name="section.toc.separator"/>
299 </xsl:if>
300 <xsl:apply-templates/>
301 <xsl:call-template name="process.chunk.footnotes"/>
302 </div>
303 </xsl:template>
305 <xsl:template match="sect4/title
306 |sect4/info/title
307 |sect4info/title"
308 mode="titlepage.mode" priority="2">
309 <xsl:call-template name="section.title"/>
310 </xsl:template>
312 <xsl:template match="sect5">
313 <xsl:call-template name="id.warning"/>
315 <div>
316 <xsl:apply-templates select="." mode="class.attribute"/>
317 <xsl:call-template name="dir">
318 <xsl:with-param name="inherit" select="1"/>
319 </xsl:call-template>
320 <xsl:call-template name="language.attribute"/>
322 <xsl:choose>
323 <xsl:when test="@renderas = 'sect1'">
324 <xsl:call-template name="sect1.titlepage"/>
325 </xsl:when>
326 <xsl:when test="@renderas = 'sect2'">
327 <xsl:call-template name="sect2.titlepage"/>
328 </xsl:when>
329 <xsl:when test="@renderas = 'sect3'">
330 <xsl:call-template name="sect3.titlepage"/>
331 </xsl:when>
332 <xsl:when test="@renderas = 'sect4'">
333 <xsl:call-template name="sect4.titlepage"/>
334 </xsl:when>
335 <xsl:otherwise>
336 <xsl:call-template name="sect5.titlepage"/>
337 </xsl:otherwise>
338 </xsl:choose>
340 <xsl:variable name="toc.params">
341 <xsl:call-template name="find.path.params">
342 <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
343 </xsl:call-template>
344 </xsl:variable>
346 <xsl:if test="contains($toc.params, 'toc')
347 and $generate.section.toc.level &gt;= 5">
348 <xsl:call-template name="section.toc">
349 <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
350 </xsl:call-template>
351 <xsl:call-template name="section.toc.separator"/>
352 </xsl:if>
353 <xsl:apply-templates/>
354 <xsl:call-template name="process.chunk.footnotes"/>
355 </div>
356 </xsl:template>
358 <xsl:template match="sect5/title
359 |sect5/info/title
360 |sect5info/title"
361 mode="titlepage.mode" priority="2">
362 <xsl:call-template name="section.title"/>
363 </xsl:template>
365 <xsl:template match="simplesect">
366 <xsl:call-template name="id.warning"/>
368 <div>
369 <xsl:apply-templates select="." mode="class.attribute"/>
370 <xsl:call-template name="dir">
371 <xsl:with-param name="inherit" select="1"/>
372 </xsl:call-template>
373 <xsl:call-template name="language.attribute"/>
374 <xsl:call-template name="simplesect.titlepage"/>
375 <xsl:apply-templates/>
376 </div>
377 </xsl:template>
379 <xsl:template match="simplesect/title|simplesect/info/title"
380 mode="titlepage.mode" priority="2">
381 <xsl:call-template name="section.title"/>
382 </xsl:template>
384 <xsl:template match="section/title"></xsl:template>
385 <xsl:template match="section/titleabbrev"></xsl:template>
386 <xsl:template match="section/subtitle"></xsl:template>
387 <xsl:template match="sectioninfo"></xsl:template>
388 <xsl:template match="section/info"></xsl:template>
390 <xsl:template match="sect1/title"></xsl:template>
391 <xsl:template match="sect1/titleabbrev"></xsl:template>
392 <xsl:template match="sect1/subtitle"></xsl:template>
393 <xsl:template match="sect1info"></xsl:template>
394 <xsl:template match="sect1/info"></xsl:template>
396 <xsl:template match="sect2/title"></xsl:template>
397 <xsl:template match="sect2/subtitle"></xsl:template>
398 <xsl:template match="sect2/titleabbrev"></xsl:template>
399 <xsl:template match="sect2info"></xsl:template>
400 <xsl:template match="sect2/info"></xsl:template>
402 <xsl:template match="sect3/title"></xsl:template>
403 <xsl:template match="sect3/subtitle"></xsl:template>
404 <xsl:template match="sect3/titleabbrev"></xsl:template>
405 <xsl:template match="sect3info"></xsl:template>
406 <xsl:template match="sect3/info"></xsl:template>
408 <xsl:template match="sect4/title"></xsl:template>
409 <xsl:template match="sect4/subtitle"></xsl:template>
410 <xsl:template match="sect4/titleabbrev"></xsl:template>
411 <xsl:template match="sect4info"></xsl:template>
412 <xsl:template match="sect4/info"></xsl:template>
414 <xsl:template match="sect5/title"></xsl:template>
415 <xsl:template match="sect5/subtitle"></xsl:template>
416 <xsl:template match="sect5/titleabbrev"></xsl:template>
417 <xsl:template match="sect5info"></xsl:template>
418 <xsl:template match="sect5/info"></xsl:template>
420 <xsl:template match="simplesect/title"></xsl:template>
421 <xsl:template match="simplesect/subtitle"></xsl:template>
422 <xsl:template match="simplesect/titleabbrev"></xsl:template>
423 <xsl:template match="simplesect/info"></xsl:template>
425 <!-- ==================================================================== -->
427 <xsl:template name="section.heading">
428 <xsl:param name="section" select="."/>
429 <xsl:param name="level" select="1"/>
430 <xsl:param name="allow-anchors" select="1"/>
431 <xsl:param name="title"/>
432 <xsl:param name="class" select="'title'"/>
434 <xsl:variable name="id">
435 <xsl:choose>
436 <!-- if title is in an *info wrapper, get the grandparent -->
437 <xsl:when test="contains(local-name(..), 'info')">
438 <xsl:call-template name="object.id">
439 <xsl:with-param name="object" select="../.."/>
440 </xsl:call-template>
441 </xsl:when>
442 <xsl:otherwise>
443 <xsl:call-template name="object.id">
444 <xsl:with-param name="object" select=".."/>
445 </xsl:call-template>
446 </xsl:otherwise>
447 </xsl:choose>
448 </xsl:variable>
450 <!-- HTML H level is one higher than section level -->
451 <xsl:variable name="hlevel">
452 <xsl:choose>
453 <!-- highest valid HTML H level is H6; so anything nested deeper
454 than 5 levels down just becomes H6 -->
455 <xsl:when test="$level &gt; 5">6</xsl:when>
456 <xsl:otherwise>
457 <xsl:value-of select="$level + 1"/>
458 </xsl:otherwise>
459 </xsl:choose>
460 </xsl:variable>
461 <xsl:element name="h{$hlevel}">
462 <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
463 <xsl:if test="$css.decoration != '0'">
464 <xsl:if test="$hlevel&lt;3">
465 <xsl:attribute name="style">clear: both</xsl:attribute>
466 </xsl:if>
467 </xsl:if>
468 <xsl:if test="$allow-anchors != 0">
469 <xsl:call-template name="anchor">
470 <xsl:with-param name="node" select="$section"/>
471 <xsl:with-param name="conditional" select="0"/>
472 </xsl:call-template>
473 </xsl:if>
474 <xsl:copy-of select="$title"/>
475 </xsl:element>
476 </xsl:template>
478 <!-- ==================================================================== -->
480 <xsl:template match="bridgehead">
481 <xsl:variable name="container"
482 select="(ancestor::appendix
483 |ancestor::article
484 |ancestor::bibliography
485 |ancestor::chapter
486 |ancestor::glossary
487 |ancestor::glossdiv
488 |ancestor::index
489 |ancestor::partintro
490 |ancestor::preface
491 |ancestor::refsect1
492 |ancestor::refsect2
493 |ancestor::refsect3
494 |ancestor::sect1
495 |ancestor::sect2
496 |ancestor::sect3
497 |ancestor::sect4
498 |ancestor::sect5
499 |ancestor::section
500 |ancestor::setindex
501 |ancestor::simplesect)[last()]"/>
503 <xsl:variable name="clevel">
504 <xsl:choose>
505 <xsl:when test="local-name($container) = 'appendix'
506 or local-name($container) = 'chapter'
507 or local-name($container) = 'article'
508 or local-name($container) = 'bibliography'
509 or local-name($container) = 'glossary'
510 or local-name($container) = 'index'
511 or local-name($container) = 'partintro'
512 or local-name($container) = 'preface'
513 or local-name($container) = 'setindex'">1</xsl:when>
514 <xsl:when test="local-name($container) = 'glossdiv'">
515 <xsl:value-of select="count(ancestor::glossdiv)+1"/>
516 </xsl:when>
517 <xsl:when test="local-name($container) = 'sect1'
518 or local-name($container) = 'sect2'
519 or local-name($container) = 'sect3'
520 or local-name($container) = 'sect4'
521 or local-name($container) = 'sect5'
522 or local-name($container) = 'refsect1'
523 or local-name($container) = 'refsect2'
524 or local-name($container) = 'refsect3'
525 or local-name($container) = 'section'
526 or local-name($container) = 'simplesect'">
527 <xsl:variable name="slevel">
528 <xsl:call-template name="section.level">
529 <xsl:with-param name="node" select="$container"/>
530 </xsl:call-template>
531 </xsl:variable>
532 <xsl:value-of select="$slevel + 1"/>
533 </xsl:when>
534 <xsl:otherwise>1</xsl:otherwise>
535 </xsl:choose>
536 </xsl:variable>
538 <!-- HTML H level is one higher than section level -->
539 <xsl:variable name="hlevel">
540 <xsl:choose>
541 <xsl:when test="@renderas = 'sect1'">2</xsl:when>
542 <xsl:when test="@renderas = 'sect2'">3</xsl:when>
543 <xsl:when test="@renderas = 'sect3'">4</xsl:when>
544 <xsl:when test="@renderas = 'sect4'">5</xsl:when>
545 <xsl:when test="@renderas = 'sect5'">6</xsl:when>
546 <xsl:otherwise>
547 <xsl:value-of select="$clevel + 1"/>
548 </xsl:otherwise>
549 </xsl:choose>
550 </xsl:variable>
552 <xsl:element name="h{$hlevel}">
553 <xsl:call-template name="anchor">
554 <xsl:with-param name="conditional" select="0"/>
555 </xsl:call-template>
556 <xsl:apply-templates/>
557 </xsl:element>
558 </xsl:template>
560 <xsl:template match="section/subtitle" mode="titlepage.mode" priority="2">
561 <xsl:call-template name="section.subtitle"/>
562 </xsl:template>
564 <xsl:template match="simplesect/subtitle" mode="titlepage.mode" priority="2">
565 <xsl:call-template name="section.subtitle"/>
566 </xsl:template>
568 <xsl:template match="sect1/subtitle" mode="titlepage.mode" priority="2">
569 <xsl:call-template name="section.subtitle"/>
570 </xsl:template>
572 <xsl:template match="sect2/subtitle" mode="titlepage.mode" priority="2">
573 <xsl:call-template name="section.subtitle"/>
574 </xsl:template>
576 <xsl:template match="sect3/subtitle" mode="titlepage.mode" priority="2">
577 <xsl:call-template name="section.subtitle"/>
578 </xsl:template>
580 <xsl:template match="sect4/subtitle" mode="titlepage.mode" priority="2">
581 <xsl:call-template name="section.subtitle"/>
582 </xsl:template>
584 <xsl:template match="sect5/subtitle" mode="titlepage.mode" priority="2">
585 <xsl:call-template name="section.subtitle"/>
586 </xsl:template>
588 <xsl:template name="section.subtitle">
589 <!-- the context node should be the subtitle of a section when called -->
590 <xsl:variable name="section" select="(ancestor::section
591 |ancestor::simplesect
592 |ancestor::sect1
593 |ancestor::sect2
594 |ancestor::sect3
595 |ancestor::sect4
596 |ancestor::sect5)[last()]"/>
598 <xsl:variable name="level">
599 <xsl:call-template name="section.level">
600 <xsl:with-param name="node" select="$section"/>
601 </xsl:call-template>
602 </xsl:variable>
604 <xsl:call-template name="section.heading">
605 <xsl:with-param name="section" select=".."/>
606 <xsl:with-param name="allow-anchors" select="0"/>
607 <!-- subtitle heading level one higher than section level -->
608 <xsl:with-param name="level" select="$level + 1"/>
609 <xsl:with-param name="class" select="'subtitle'"/>
610 <xsl:with-param name="title">
611 <xsl:apply-templates select="$section" mode="object.subtitle.markup">
612 <xsl:with-param name="allow-anchors" select="0"/>
613 </xsl:apply-templates>
614 </xsl:with-param>
615 </xsl:call-template>
616 </xsl:template>
618 </xsl:stylesheet>