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$
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:template match="section">
18  <xsl:variable name="id">
19    <xsl:call-template name="object.id"/>
20  </xsl:variable>
21
22  <div class="{name(.)}">
23    <a name="{$id}"/>
24    <xsl:call-template name="section.titlepage"/>
25    <xsl:if test="$generate.section.toc != '0'
26                  or refentry">
27      <xsl:call-template name="section.toc"/>
28    </xsl:if>
29    <xsl:apply-templates/>
30    <xsl:call-template name="process.chunk.footnotes"/>
31  </div>
32</xsl:template>
33
34<xsl:template name="section.title">
35  <!-- the context node should be the title of a section when called -->
36  <xsl:variable name="section" select="(ancestor::section
37                                        |ancestor::simplesect
38                                        |ancestor::sect1
39                                        |ancestor::sect2
40                                        |ancestor::sect3
41                                        |ancestor::sect4
42                                        |ancestor::sect5)[last()]"/>
43
44  <xsl:variable name="level">
45    <xsl:call-template name="section.level">
46      <xsl:with-param name="node" select="$section"/>
47    </xsl:call-template>
48  </xsl:variable>
49
50  <xsl:call-template name="section.heading">
51    <xsl:with-param name="section" select=".."/>
52    <xsl:with-param name="level" select="$level"/>
53    <xsl:with-param name="title">
54      <xsl:apply-templates select="$section" mode="object.title.markup"/>
55    </xsl:with-param>
56  </xsl:call-template>
57</xsl:template>
58
59<xsl:template match="title" mode="section.titlepage.recto.mode">
60  <xsl:call-template name="section.title"/>
61</xsl:template>
62
63<xsl:template match="x-title" mode="section.titlepage.recto.mode">
64  <xsl:variable name="section" select="(ancestor::section
65                                        |ancestor::simplesect
66                                        |ancestor::sect1
67                                        |ancestor::sect2
68                                        |ancestor::sect3
69                                        |ancestor::sect4
70                                        |ancestor::sect5)[last()]"/>
71
72  <xsl:variable name="level">
73    <xsl:call-template name="section.level">
74      <xsl:with-param name="node" select="$section"/>
75    </xsl:call-template>
76  </xsl:variable>
77
78  <xsl:message>Level: <xsl:value-of select="$level"/>: <xsl:value-of select="."/></xsl:message>
79
80  <xsl:element name="h{$level}">
81    <xsl:attribute name="class">title</xsl:attribute>
82    <xsl:if test="$css.decoration != '0'">
83      <xsl:if test="$level&lt;3">
84        <xsl:attribute name="style">clear: both</xsl:attribute>
85      </xsl:if>
86    </xsl:if>
87    <a>
88      <xsl:attribute name="name">
89        <xsl:call-template name="object.id">
90          <xsl:with-param name="object" select="$section"/>
91        </xsl:call-template>
92      </xsl:attribute>
93    </a>
94    <xsl:apply-templates select="$section" mode="object.title.markup"/>
95  </xsl:element>
96</xsl:template>
97
98<xsl:template match="sect1">
99  <xsl:variable name="id">
100    <xsl:call-template name="object.id"/>
101  </xsl:variable>
102
103  <div class="{name(.)}">
104    <a name="{$id}"/>
105    <xsl:call-template name="sect1.titlepage"/>
106    <xsl:if test="$generate.section.toc != '0'
107                  or refentry">
108      <xsl:call-template name="section.toc"/>
109    </xsl:if>
110    <xsl:apply-templates/>
111    <xsl:call-template name="process.chunk.footnotes"/>
112  </div>
113</xsl:template>
114
115<xsl:template match="title" mode="sect1.titlepage.recto.mode">
116  <xsl:call-template name="section.title"/>
117</xsl:template>
118
119<xsl:template match="sect2">
120  <xsl:variable name="id">
121    <xsl:call-template name="object.id"/>
122  </xsl:variable>
123
124  <div class="{name(.)}">
125    <a name="{$id}"/>
126    <xsl:call-template name="sect2.titlepage"/>
127    <xsl:if test="$generate.section.toc != '0'
128                  or refentry">
129      <xsl:call-template name="section.toc"/>
130    </xsl:if>
131    <xsl:apply-templates/>
132  </div>
133</xsl:template>
134
135<xsl:template match="title" mode="sect2.titlepage.recto.mode">
136  <xsl:call-template name="section.title"/>
137</xsl:template>
138
139<xsl:template match="sect3">
140  <xsl:variable name="id">
141    <xsl:call-template name="object.id"/>
142  </xsl:variable>
143
144  <div class="{name(.)}">
145    <a name="{$id}"/>
146    <xsl:call-template name="sect3.titlepage"/>
147
148    <xsl:if test="$generate.section.toc != '0'
149                  or refentry">
150      <xsl:call-template name="section.toc"/>
151    </xsl:if>
152    <xsl:apply-templates/>
153  </div>
154</xsl:template>
155
156<xsl:template match="title" mode="sect3.titlepage.recto.mode">
157  <xsl:call-template name="section.title"/>
158</xsl:template>
159
160<xsl:template match="sect4">
161  <xsl:variable name="id">
162    <xsl:call-template name="object.id"/>
163  </xsl:variable>
164
165  <div class="{name(.)}">
166    <a name="{$id}"/>
167    <xsl:call-template name="sect4.titlepage"/>
168    <xsl:if test="$generate.section.toc != '0'
169                  or refentry">
170      <xsl:call-template name="section.toc"/>
171    </xsl:if>
172    <xsl:apply-templates/>
173  </div>
174</xsl:template>
175
176<xsl:template match="title" mode="sect4.titlepage.recto.mode">
177  <xsl:call-template name="section.title"/>
178</xsl:template>
179
180<xsl:template match="sect5">
181  <xsl:variable name="id">
182    <xsl:call-template name="object.id"/>
183  </xsl:variable>
184
185  <div class="{name(.)}">
186    <a name="{$id}"/>
187    <xsl:call-template name="sect5.titlepage"/>
188    <xsl:if test="$generate.section.toc != '0'
189                  or refentry">
190      <xsl:call-template name="section.toc"/>
191    </xsl:if>
192    <xsl:apply-templates/>
193  </div>
194</xsl:template>
195
196<xsl:template match="title" mode="sect5.titlepage.recto.mode">
197  <xsl:call-template name="section.title"/>
198</xsl:template>
199
200<xsl:template match="simplesect">
201  <xsl:variable name="id">
202    <xsl:call-template name="object.id"/>
203  </xsl:variable>
204
205  <div class="{name(.)}">
206    <a name="{$id}"/>
207    <xsl:call-template name="simplesect.titlepage"/>
208    <xsl:apply-templates/>
209  </div>
210</xsl:template>
211
212<xsl:template match="title" mode="simplesect.titlepage.recto.mode">
213  <xsl:call-template name="section.title"/>
214</xsl:template>
215
216<xsl:template match="section/title"></xsl:template>
217<xsl:template match="section/subtitle"></xsl:template>
218<xsl:template match="sectioninfo"></xsl:template>
219
220<xsl:template match="sect1/title"></xsl:template>
221<xsl:template match="sect1/subtitle"></xsl:template>
222<xsl:template match="sect1info"></xsl:template>
223
224<xsl:template match="sect2/title"></xsl:template>
225<xsl:template match="sect2/subtitle"></xsl:template>
226<xsl:template match="sect2info"></xsl:template>
227
228<xsl:template match="sect3/title"></xsl:template>
229<xsl:template match="sect3/subtitle"></xsl:template>
230<xsl:template match="sect3info"></xsl:template>
231
232<xsl:template match="sect4/title"></xsl:template>
233<xsl:template match="sect4/subtitle"></xsl:template>
234<xsl:template match="sect4info"></xsl:template>
235
236<xsl:template match="sect5/title"></xsl:template>
237<xsl:template match="sect5/subtitle"></xsl:template>
238<xsl:template match="sect5info"></xsl:template>
239
240<xsl:template match="simplesect/title"></xsl:template>
241<xsl:template match="simplesect/subtitle"></xsl:template>
242
243<!-- ==================================================================== -->
244
245<xsl:template name="section.heading">
246  <xsl:param name="section" select="."/>
247  <xsl:param name="level" select="'1'"/>
248  <xsl:param name="title"/>
249  <xsl:element name="h{$level}">
250    <xsl:attribute name="class">title</xsl:attribute>
251    <xsl:if test="$css.decoration != '0'">
252      <xsl:if test="$level&lt;3">
253        <xsl:attribute name="style">clear: both</xsl:attribute>
254      </xsl:if>
255    </xsl:if>
256    <a>
257      <xsl:attribute name="name">
258        <xsl:call-template name="object.id">
259          <xsl:with-param name="object" select="$section"/>
260        </xsl:call-template>
261      </xsl:attribute>
262    </a>
263    <xsl:copy-of select="$title"/>
264  </xsl:element>
265</xsl:template>
266
267<!-- ==================================================================== -->
268
269<xsl:template match="bridgehead">
270  <xsl:variable name="container"
271                select="(ancestor::appendix
272                        |ancestor::article
273                        |ancestor::bibliography
274                        |ancestor::chapter
275                        |ancestor::glossary
276                        |ancestor::glossdiv
277                        |ancestor::index
278                        |ancestor::partintro
279                        |ancestor::preface
280                        |ancestor::refsect1
281                        |ancestor::refsect2
282                        |ancestor::refsect3
283                        |ancestor::sect1
284                        |ancestor::sect2
285                        |ancestor::sect3
286                        |ancestor::sect4
287                        |ancestor::sect5
288                        |ancestor::section
289                        |ancestor::setindex
290                        |ancestor::simplesect)[last()]"/>
291
292  <xsl:variable name="clevel">
293    <xsl:choose>
294      <xsl:when test="local-name($container) = 'appendix'
295                      or local-name($container) = 'chapter'
296                      or local-name($container) = 'article'
297                      or local-name($container) = 'bibliography'
298                      or local-name($container) = 'glossary'
299                      or local-name($container) = 'index'
300                      or local-name($container) = 'partintro'
301                      or local-name($container) = 'preface'
302                      or local-name($container) = 'setindex'">2</xsl:when>
303      <xsl:when test="local-name($container) = 'glossdiv'">
304        <xsl:value-of select="count(ancestor::glossdiv)+2"/>
305      </xsl:when>
306      <xsl:when test="local-name($container) = 'sect1'
307                      or local-name($container) = 'sect2'
308                      or local-name($container) = 'sect3'
309                      or local-name($container) = 'sect4'
310                      or local-name($container) = 'sect5'
311                      or local-name($container) = 'refsect1'
312                      or local-name($container) = 'refsect2'
313                      or local-name($container) = 'refsect3'
314                      or local-name($container) = 'section'
315                      or local-name($container) = 'simplesect'">
316        <xsl:variable name="slevel">
317          <xsl:call-template name="section.level">
318            <xsl:with-param name="node" select="$container"/>
319          </xsl:call-template>
320        </xsl:variable>
321        <xsl:value-of select="$slevel + 1"/>
322      </xsl:when>
323      <xsl:otherwise>2</xsl:otherwise>
324    </xsl:choose>
325  </xsl:variable>
326
327  <xsl:variable name="level">
328    <xsl:choose>
329      <xsl:when test="@renderas = 'sect1'">2</xsl:when>
330      <xsl:when test="@renderas = 'sect2'">3</xsl:when>
331      <xsl:when test="@renderas = 'sect3'">4</xsl:when>
332      <xsl:when test="@renderas = 'sect4'">5</xsl:when>
333      <xsl:when test="@renderas = 'sect5'">6</xsl:when>
334      <xsl:otherwise>
335        <xsl:value-of select="$clevel"/>
336      </xsl:otherwise>
337    </xsl:choose>
338  </xsl:variable>
339
340  <xsl:element name="h{$level}">
341    <xsl:apply-templates/>
342  </xsl:element>
343</xsl:template>
344
345</xsl:stylesheet>
346
347