1 <?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc d">
3 <!-- ********************************************************************
5 This file is part of the XSL DocBook Stylesheet distribution.
6 See ../README or http://cdn.docbook.org/release/xsl/current/ for
7 copyright and other information.
9 ******************************************************************** -->
11 <!-- ==================================================================== -->
13 <xsl:import href="docbook-no-doctype.xsl"/>
14 <xsl:import href="chunk-common.xsl"/>
16 <xsl:template name="chunk">
17 <xsl:param name="node" select="."/>
18 <!-- returns 1 if $node is a chunk -->
20 <xsl:variable name="id">
21 <xsl:call-template name="object.id">
22 <xsl:with-param name="object" select="$node"/>
26 <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
29 <xsl:when test="$chunks//d:tocentry[@linkend=$id]">1</xsl:when>
30 <xsl:otherwise>0</xsl:otherwise>
34 <!-- ==================================================================== -->
36 <xsl:template match="*" mode="chunk-filename">
37 <!-- returns the filename of a chunk -->
39 <xsl:variable name="id">
40 <xsl:call-template name="object.id"/>
43 <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
45 <xsl:variable name="chunk" select="$chunks//d:tocentry[@linkend=$id]"/>
46 <xsl:variable name="filename">
47 <xsl:call-template name="pi.dbhtml_filename">
48 <xsl:with-param name="node" select="$chunk"/>
53 <xsl:when test="$chunk">
54 <xsl:value-of select="$filename"/>
57 <xsl:apply-templates select="parent::*" mode="chunk-filename"/>
62 <!-- ==================================================================== -->
64 <xsl:template name="process-chunk">
65 <xsl:variable name="id">
66 <xsl:call-template name="object.id"/>
69 <xsl:variable name="chunks" select="document($chunk.toc,/)"/>
71 <xsl:variable name="chunk" select="$chunks//d:tocentry[@linkend=$id]"/>
72 <xsl:variable name="prev-id" select="($chunk/preceding::d:tocentry |$chunk/ancestor::d:tocentry)[last()]/@linkend"/>
73 <xsl:variable name="next-id" select="($chunk/following::d:tocentry |$chunk/child::d:tocentry)[1]/@linkend"/>
75 <xsl:variable name="prev" select="key('id',$prev-id)"/>
76 <xsl:variable name="next" select="key('id',$next-id)"/>
78 <xsl:variable name="ischunk">
79 <xsl:call-template name="chunk"/>
82 <xsl:variable name="chunkfn">
83 <xsl:if test="$ischunk='1'">
84 <xsl:apply-templates mode="chunk-filename" select="."/>
88 <xsl:variable name="filename">
89 <xsl:call-template name="make-relative-filename">
90 <xsl:with-param name="base.dir" select="$chunk.base.dir"/>
91 <xsl:with-param name="base.name" select="$chunkfn"/>
96 <xsl:when test="$ischunk = 0">
101 <xsl:call-template name="write.chunk">
102 <xsl:with-param name="filename" select="$filename"/>
103 <xsl:with-param name="content">
104 <xsl:call-template name="chunk-element-content">
105 <xsl:with-param name="prev" select="$prev"/>
106 <xsl:with-param name="next" select="$next"/>
109 <xsl:with-param name="quiet" select="$chunk.quietly"/>
115 <!-- ==================================================================== -->
117 <xsl:template match="d:set">
118 <xsl:call-template name="process-chunk"/>
121 <xsl:template match="d:book">
122 <xsl:call-template name="process-chunk"/>
125 <xsl:template match="d:book/d:appendix">
126 <xsl:call-template name="process-chunk"/>
129 <xsl:template match="d:book/d:glossary">
130 <xsl:call-template name="process-chunk"/>
133 <xsl:template match="d:book/d:bibliography">
134 <xsl:call-template name="process-chunk"/>
137 <xsl:template match="d:dedication" mode="dedication">
138 <xsl:call-template name="process-chunk"/>
141 <xsl:template match="d:preface|d:chapter">
142 <xsl:call-template name="process-chunk"/>
145 <xsl:template match="d:part|d:reference">
146 <xsl:call-template name="process-chunk"/>
149 <xsl:template match="d:refentry">
150 <xsl:call-template name="process-chunk"/>
153 <xsl:template match="d:colophon">
154 <xsl:call-template name="process-chunk"/>
157 <xsl:template match="d:article">
158 <xsl:call-template name="process-chunk"/>
161 <xsl:template match="d:topic">
162 <xsl:call-template name="process-chunk"/>
165 <xsl:template match="d:article/d:appendix">
166 <xsl:call-template name="process-chunk"/>
169 <xsl:template match="d:article/d:glossary">
170 <xsl:call-template name="process-chunk"/>
173 <xsl:template match="d:article/d:bibliography">
174 <xsl:call-template name="process-chunk"/>
177 <xsl:template match="d:sect1|d:sect2|d:sect3|d:sect4|d:sect5|d:section">
178 <xsl:variable name="ischunk">
179 <xsl:call-template name="chunk"/>
183 <xsl:when test="$ischunk != 0">
184 <xsl:call-template name="process-chunk"/>
192 <xsl:template match="d:setindex |d:book/d:index |d:article/d:index">
193 <!-- some implementations use completely empty index tags to indicate -->
194 <!-- where an automatically generated index should be inserted. so -->
195 <!-- if the index is completely empty, skip it. -->
196 <xsl:if test="count(*)>0 or $generate.index != '0'">
197 <xsl:call-template name="process-chunk"/>
201 <!-- ==================================================================== -->
203 <xsl:template match="/">
204 <!-- * Get a title for current doc so that we let the user -->
205 <!-- * know what document we are processing at this point. -->
206 <xsl:variable name="doc.title">
207 <xsl:call-template name="get.doc.title"/>
210 <xsl:when test="$chunk.toc = ''">
211 <xsl:message terminate="yes">
212 <xsl:text>The chunk.toc file is not set.</xsl:text>
215 <xsl:when test="$exsl.node.set.available != 0 and namespace-uri(/*) != 'http://docbook.org/ns/docbook'">
216 <xsl:call-template name="log.message">
217 <xsl:with-param name="level">Note</xsl:with-param>
218 <xsl:with-param name="source" select="$doc.title"/>
219 <xsl:with-param name="context-desc">
220 <xsl:text>namesp. add</xsl:text>
222 <xsl:with-param name="message">
223 <xsl:text>added namespace before processing</xsl:text>
226 <xsl:apply-templates select="exsl:node-set($with.namespace)"/>
228 <!-- Can't process unless namespace is correct -->
229 <xsl:when test="namespace-uri(/*) != 'http://docbook.org/ns/docbook'">
230 <xsl:message terminate="yes">
231 <xsl:text>Unable to add the namespace from DB4 document,</xsl:text>
232 <xsl:text> cannot proceed.</xsl:text>
237 <xsl:when test="$rootid != ''">
239 <xsl:when test="count(key('id',$rootid)) = 0">
240 <xsl:message terminate="yes">
241 <xsl:text>ID '</xsl:text>
242 <xsl:value-of select="$rootid"/>
243 <xsl:text>' not found in document.</xsl:text>
247 <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
248 <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
250 <xsl:if test="$collect.xref.targets != 'only'">
251 <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
252 <xsl:if test="$tex.math.in.alt != ''">
253 <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
255 <xsl:if test="$generate.manifest != 0">
256 <xsl:call-template name="generate.manifest">
257 <xsl:with-param name="node" select="key('id',$rootid)"/>
265 <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
266 <xsl:apply-templates select="/" mode="collect.targets"/>
268 <xsl:if test="$collect.xref.targets != 'only'">
269 <xsl:apply-templates select="/" mode="process.root"/>
270 <xsl:if test="$tex.math.in.alt != ''">
271 <xsl:apply-templates select="/" mode="collect.tex.math"/>
273 <xsl:if test="$generate.manifest != 0">
274 <xsl:call-template name="generate.manifest">
275 <xsl:with-param name="node" select="/"/>
285 <xsl:template match="*" mode="process.root">
286 <xsl:apply-templates select="."/>
287 <xsl:call-template name="generate.css"/>
290 <xsl:template name="make.lots">
291 <xsl:param name="toc.params" select="''"/>
292 <xsl:param name="toc"/>
294 <xsl:variable name="lots">
295 <xsl:if test="contains($toc.params, 'toc')">
296 <xsl:copy-of select="$toc"/>
299 <xsl:if test="contains($toc.params, 'figure')">
301 <xsl:when test="$chunk.separate.lots != '0'">
302 <xsl:call-template name="make.lot.chunk">
303 <xsl:with-param name="type" select="'figure'"/>
304 <xsl:with-param name="lot">
305 <xsl:call-template name="list.of.titles">
306 <xsl:with-param name="titles" select="'figure'"/>
307 <xsl:with-param name="nodes" select=".//d:figure"/>
313 <xsl:call-template name="list.of.titles">
314 <xsl:with-param name="titles" select="'figure'"/>
315 <xsl:with-param name="nodes" select=".//d:figure"/>
321 <xsl:if test="contains($toc.params, 'table')">
323 <xsl:when test="$chunk.separate.lots != '0'">
324 <xsl:call-template name="make.lot.chunk">
325 <xsl:with-param name="type" select="'table'"/>
326 <xsl:with-param name="lot">
327 <xsl:call-template name="list.of.titles">
328 <xsl:with-param name="titles" select="'table'"/>
329 <xsl:with-param name="nodes" select=".//d:table"/>
335 <xsl:call-template name="list.of.titles">
336 <xsl:with-param name="titles" select="'table'"/>
337 <xsl:with-param name="nodes" select=".//d:table"/>
343 <xsl:if test="contains($toc.params, 'example')">
345 <xsl:when test="$chunk.separate.lots != '0'">
346 <xsl:call-template name="make.lot.chunk">
347 <xsl:with-param name="type" select="'example'"/>
348 <xsl:with-param name="lot">
349 <xsl:call-template name="list.of.titles">
350 <xsl:with-param name="titles" select="'example'"/>
351 <xsl:with-param name="nodes" select=".//d:example"/>
357 <xsl:call-template name="list.of.titles">
358 <xsl:with-param name="titles" select="'example'"/>
359 <xsl:with-param name="nodes" select=".//d:example"/>
365 <xsl:if test="contains($toc.params, 'equation')">
367 <xsl:when test="$chunk.separate.lots != '0'">
368 <xsl:call-template name="make.lot.chunk">
369 <xsl:with-param name="type" select="'equation'"/>
370 <xsl:with-param name="lot">
371 <xsl:call-template name="list.of.titles">
372 <xsl:with-param name="titles" select="'equation'"/>
373 <xsl:with-param name="nodes" select=".//d:equation"/>
379 <xsl:call-template name="list.of.titles">
380 <xsl:with-param name="titles" select="'equation'"/>
381 <xsl:with-param name="nodes" select=".//d:equation"/>
387 <xsl:if test="contains($toc.params, 'procedure')">
389 <xsl:when test="$chunk.separate.lots != '0'">
390 <xsl:call-template name="make.lot.chunk">
391 <xsl:with-param name="type" select="'procedure'"/>
392 <xsl:with-param name="lot">
393 <xsl:call-template name="list.of.titles">
394 <xsl:with-param name="titles" select="'procedure'"/>
395 <xsl:with-param name="nodes" select=".//d:procedure[d:title]"/>
401 <xsl:call-template name="list.of.titles">
402 <xsl:with-param name="titles" select="'procedure'"/>
403 <xsl:with-param name="nodes" select=".//d:procedure[d:title]"/>
410 <xsl:if test="string($lots) != ''">
412 <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
413 <xsl:call-template name="write.chunk">
414 <xsl:with-param name="filename">
415 <xsl:call-template name="make-relative-filename">
416 <xsl:with-param name="base.dir" select="$chunk.base.dir"/>
417 <xsl:with-param name="base.name">
418 <xsl:call-template name="dbhtml-dir"/>
419 <xsl:apply-templates select="." mode="recursive-chunk-filename">
420 <xsl:with-param name="recursive" select="true()"/>
421 </xsl:apply-templates>
422 <xsl:text>-toc</xsl:text>
423 <xsl:value-of select="$html.ext"/>
427 <xsl:with-param name="content">
428 <xsl:call-template name="chunk-element-content">
429 <xsl:with-param name="prev" select="/d:foo"/>
430 <xsl:with-param name="next" select="/d:foo"/>
431 <xsl:with-param name="nav.context" select="'toc'"/>
432 <xsl:with-param name="content">
434 <xsl:apply-templates select="." mode="object.title.markup"/>
436 <xsl:copy-of select="$lots"/>
440 <xsl:with-param name="quiet" select="$chunk.quietly"/>
444 <xsl:copy-of select="$lots"/>
450 <xsl:template name="make.lot.chunk">
451 <xsl:param name="type" select="''"/>
452 <xsl:param name="lot"/>
454 <xsl:if test="string($lot) != ''">
455 <xsl:variable name="filename">
456 <xsl:call-template name="make-relative-filename">
457 <xsl:with-param name="base.dir" select="$chunk.base.dir"/>
458 <xsl:with-param name="base.name">
459 <xsl:call-template name="dbhtml-dir"/>
460 <xsl:value-of select="$type"/>
461 <xsl:text>-toc</xsl:text>
462 <xsl:value-of select="$html.ext"/>
467 <xsl:variable name="href">
468 <xsl:call-template name="make-relative-filename">
469 <xsl:with-param name="base.dir" select="''"/>
470 <xsl:with-param name="base.name">
471 <xsl:call-template name="dbhtml-dir"/>
472 <xsl:value-of select="$type"/>
473 <xsl:text>-toc</xsl:text>
474 <xsl:value-of select="$html.ext"/>
479 <xsl:call-template name="write.chunk">
480 <xsl:with-param name="filename" select="$filename"/>
481 <xsl:with-param name="content">
482 <xsl:call-template name="chunk-element-content">
483 <xsl:with-param name="prev" select="/d:foo"/>
484 <xsl:with-param name="next" select="/d:foo"/>
485 <xsl:with-param name="nav.context" select="'toc'"/>
486 <xsl:with-param name="content">
487 <xsl:copy-of select="$lot"/>
491 <xsl:with-param name="quiet" select="$chunk.quietly"/>
493 <!-- And output a link to this file -->
495 <xsl:attribute name="class">
496 <xsl:text>ListofTitles</xsl:text>
499 <xsl:call-template name="gentext">
500 <xsl:with-param name="key">
502 <xsl:when test="$type='table'">ListofTables</xsl:when>
503 <xsl:when test="$type='figure'">ListofFigures</xsl:when>
504 <xsl:when test="$type='equation'">ListofEquations</xsl:when>
505 <xsl:when test="$type='example'">ListofExamples</xsl:when>
506 <xsl:when test="$type='procedure'">ListofProcedures</xsl:when>
507 <xsl:otherwise>ListofUnknown</xsl:otherwise>