source: trunk/Distribution/XSL/fo/glossary.xsl@ 2

Last change on this file since 2 was 2, checked in by jkacer, 18 years ago

Added all DocBook Framework stuff:

  • DocBook DTD
  • Transformation software FOP 0.20.5 and Saxon 6
  • XSL styles
  • Rexx scripts

Also added some WarpIN-related stuff for creation of WarpIN installation packages.
This state corresponds to version 1.0.0 from November 2005, just slightly modified to carry versioning information (Rexx scripts).

File size: 34.0 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 version='1.0'>
5
6<!-- ********************************************************************
7 $Id: glossary.xsl,v 1.30 2005/05/13 17:17:00 bobstayton Exp $
8 ********************************************************************
9
10 This file is part of the XSL DocBook Stylesheet distribution.
11 See ../README or http://nwalsh.com/docbook/xsl/ for copyright
12 and other information.
13
14 ******************************************************************** -->
15
16<!-- ==================================================================== -->
17
18<xsl:template match="glossary">
19 <xsl:call-template name="make-glossary"/>
20</xsl:template>
21
22<xsl:template match="glossdiv/title"/>
23<xsl:template match="glossdiv/subtitle"/>
24<xsl:template match="glossdiv/titleabbrev"/>
25
26<!-- ==================================================================== -->
27
28<xsl:template name="make-glossary">
29 <xsl:param name="divs" select="glossdiv"/>
30 <xsl:param name="entries" select="glossentry"/>
31 <xsl:param name="preamble" select="*[not(self::title
32 or self::subtitle
33 or self::glossdiv
34 or self::glossentry)]"/>
35
36 <xsl:variable name="id">
37 <xsl:call-template name="object.id"/>
38 </xsl:variable>
39
40 <xsl:variable name="presentation">
41 <xsl:call-template name="dbfo-attribute">
42 <xsl:with-param name="pis"
43 select="processing-instruction('dbfo')"/>
44 <xsl:with-param name="attribute" select="'glossary-presentation'"/>
45 </xsl:call-template>
46 </xsl:variable>
47
48 <xsl:variable name="term-width">
49 <xsl:call-template name="dbfo-attribute">
50 <xsl:with-param name="pis"
51 select="processing-instruction('dbfo')"/>
52 <xsl:with-param name="attribute" select="'glossterm-width'"/>
53 </xsl:call-template>
54 </xsl:variable>
55
56 <xsl:variable name="width">
57 <xsl:choose>
58 <xsl:when test="$term-width = ''">
59 <xsl:value-of select="$glossterm.width"/>
60 </xsl:when>
61 <xsl:otherwise>
62 <xsl:value-of select="$term-width"/>
63 </xsl:otherwise>
64 </xsl:choose>
65 </xsl:variable>
66
67 <fo:block id="{$id}">
68 <xsl:call-template name="glossary.titlepage"/>
69 </fo:block>
70
71 <xsl:if test="$preamble">
72 <xsl:apply-templates select="$preamble"/>
73 </xsl:if>
74
75 <xsl:choose>
76 <xsl:when test="$presentation = 'list'">
77 <xsl:apply-templates select="$divs" mode="glossary.as.list">
78 <xsl:with-param name="width" select="$width"/>
79 </xsl:apply-templates>
80 <xsl:if test="$entries">
81 <fo:list-block provisional-distance-between-starts="{$width}"
82 provisional-label-separation="{$glossterm.separation}"
83 xsl:use-attribute-sets="normal.para.spacing">
84 <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
85 </fo:list-block>
86 </xsl:if>
87 </xsl:when>
88 <xsl:when test="$presentation = 'blocks'">
89 <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
90 <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
91 </xsl:when>
92 <xsl:when test="$glossary.as.blocks != 0">
93 <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
94 <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
95 </xsl:when>
96 <xsl:otherwise>
97 <xsl:apply-templates select="$divs" mode="glossary.as.list">
98 <xsl:with-param name="width" select="$width"/>
99 </xsl:apply-templates>
100 <xsl:if test="$entries">
101 <fo:list-block provisional-distance-between-starts="{$width}"
102 provisional-label-separation="{$glossterm.separation}"
103 xsl:use-attribute-sets="normal.para.spacing">
104 <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
105 </fo:list-block>
106 </xsl:if>
107 </xsl:otherwise>
108 </xsl:choose>
109</xsl:template>
110
111<xsl:template match="book/glossary|part/glossary|/glossary" priority="2">
112 <xsl:variable name="id">
113 <xsl:call-template name="object.id"/>
114 </xsl:variable>
115
116 <xsl:variable name="master-reference">
117 <xsl:call-template name="select.pagemaster"/>
118 </xsl:variable>
119
120 <fo:page-sequence hyphenate="{$hyphenate}"
121 master-reference="{$master-reference}">
122 <xsl:attribute name="language">
123 <xsl:call-template name="l10n.language"/>
124 </xsl:attribute>
125 <xsl:attribute name="format">
126 <xsl:call-template name="page.number.format">
127 <xsl:with-param name="master-reference" select="$master-reference"/>
128 </xsl:call-template>
129 </xsl:attribute>
130
131 <xsl:attribute name="initial-page-number">
132 <xsl:call-template name="initial.page.number">
133 <xsl:with-param name="master-reference" select="$master-reference"/>
134 </xsl:call-template>
135 </xsl:attribute>
136
137 <xsl:attribute name="force-page-count">
138 <xsl:call-template name="force.page.count">
139 <xsl:with-param name="master-reference" select="$master-reference"/>
140 </xsl:call-template>
141 </xsl:attribute>
142
143 <xsl:attribute name="hyphenation-character">
144 <xsl:call-template name="gentext">
145 <xsl:with-param name="key" select="'hyphenation-character'"/>
146 </xsl:call-template>
147 </xsl:attribute>
148 <xsl:attribute name="hyphenation-push-character-count">
149 <xsl:call-template name="gentext">
150 <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
151 </xsl:call-template>
152 </xsl:attribute>
153 <xsl:attribute name="hyphenation-remain-character-count">
154 <xsl:call-template name="gentext">
155 <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
156 </xsl:call-template>
157 </xsl:attribute>
158
159 <xsl:apply-templates select="." mode="running.head.mode">
160 <xsl:with-param name="master-reference" select="$master-reference"/>
161 </xsl:apply-templates>
162 <xsl:apply-templates select="." mode="running.foot.mode">
163 <xsl:with-param name="master-reference" select="$master-reference"/>
164 </xsl:apply-templates>
165
166 <fo:flow flow-name="xsl-region-body">
167 <xsl:call-template name="set.flow.properties">
168 <xsl:with-param name="element" select="local-name(.)"/>
169 <xsl:with-param name="master-reference" select="$master-reference"/>
170 </xsl:call-template>
171
172 <xsl:call-template name="make-glossary"/>
173 </fo:flow>
174 </fo:page-sequence>
175</xsl:template>
176
177<xsl:template match="glossary/glossaryinfo"></xsl:template>
178<xsl:template match="glossary/title"></xsl:template>
179<xsl:template match="glossary/subtitle"></xsl:template>
180<xsl:template match="glossary/titleabbrev"></xsl:template>
181
182<!-- ==================================================================== -->
183
184<xsl:template match="glosslist">
185 <xsl:variable name="presentation">
186 <xsl:call-template name="dbfo-attribute">
187 <xsl:with-param name="pis"
188 select="processing-instruction('dbfo')"/>
189 <xsl:with-param name="attribute" select="'glosslist-presentation'"/>
190 </xsl:call-template>
191 </xsl:variable>
192
193 <xsl:variable name="term-width">
194 <xsl:call-template name="dbfo-attribute">
195 <xsl:with-param name="pis"
196 select="processing-instruction('dbfo')"/>
197 <xsl:with-param name="attribute" select="'glossterm-width'"/>
198 </xsl:call-template>
199 </xsl:variable>
200
201 <xsl:variable name="width">
202 <xsl:choose>
203 <xsl:when test="$term-width = ''">
204 <xsl:value-of select="$glossterm.width"/>
205 </xsl:when>
206 <xsl:otherwise>
207 <xsl:value-of select="$term-width"/>
208 </xsl:otherwise>
209 </xsl:choose>
210 </xsl:variable>
211
212 <xsl:if test="title">
213 <xsl:apply-templates select="title" mode="list.title.mode"/>
214 </xsl:if>
215
216 <xsl:choose>
217 <xsl:when test="$presentation = 'list'">
218 <fo:list-block provisional-distance-between-starts="{$width}"
219 provisional-label-separation="{$glossterm.separation}"
220 xsl:use-attribute-sets="normal.para.spacing">
221 <xsl:apply-templates mode="glossary.as.list" select="glossentry"/>
222 </fo:list-block>
223 </xsl:when>
224 <xsl:when test="$presentation = 'blocks'">
225 <xsl:apply-templates mode="glossary.as.blocks" select="glossentry"/>
226 </xsl:when>
227 <xsl:when test="$glosslist.as.blocks != 0">
228 <xsl:apply-templates mode="glossary.as.blocks" select="glossentry"/>
229 </xsl:when>
230 <xsl:otherwise>
231 <fo:list-block provisional-distance-between-starts="{$width}"
232 provisional-label-separation="{$glossterm.separation}"
233 xsl:use-attribute-sets="normal.para.spacing">
234 <xsl:apply-templates mode="glossary.as.list" select="glossentry"/>
235 </fo:list-block>
236 </xsl:otherwise>
237 </xsl:choose>
238</xsl:template>
239
240<!-- ==================================================================== -->
241<!-- Glossary collection -->
242
243<xsl:template match="glossary[@role='auto']" priority="2">
244 <xsl:variable name="collection" select="document($glossary.collection, .)"/>
245 <xsl:if test="$glossary.collection = ''">
246 <xsl:message>
247 <xsl:text>Warning: processing automatic glossary </xsl:text>
248 <xsl:text>without a glossary.collection file.</xsl:text>
249 </xsl:message>
250 </xsl:if>
251
252 <xsl:if test="not($collection) and $glossary.collection != ''">
253 <xsl:message>
254 <xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
255 <xsl:text>open glossary.collection file '</xsl:text>
256 <xsl:value-of select="$glossary.collection"/>
257 <xsl:text>'</xsl:text>
258 </xsl:message>
259 </xsl:if>
260
261 <xsl:call-template name="make-auto-glossary"/>
262</xsl:template>
263
264<xsl:template name="make-auto-glossary">
265 <xsl:param name="collection" select="document($glossary.collection, .)"/>
266 <xsl:param name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/>
267 <xsl:param name="preamble" select="*[not(self::title
268 or self::subtitle
269 or self::glossdiv
270 or self::glossentry)]"/>
271
272 <xsl:variable name="id">
273 <xsl:call-template name="object.id"/>
274 </xsl:variable>
275
276 <xsl:variable name="presentation">
277 <xsl:call-template name="dbfo-attribute">
278 <xsl:with-param name="pis"
279 select="processing-instruction('dbfo')"/>
280 <xsl:with-param name="attribute" select="'glossary-presentation'"/>
281 </xsl:call-template>
282 </xsl:variable>
283
284 <xsl:variable name="term-width">
285 <xsl:call-template name="dbfo-attribute">
286 <xsl:with-param name="pis"
287 select="processing-instruction('dbfo')"/>
288 <xsl:with-param name="attribute" select="'glossterm-width'"/>
289 </xsl:call-template>
290 </xsl:variable>
291
292 <xsl:variable name="width">
293 <xsl:choose>
294 <xsl:when test="$term-width = ''">
295 <xsl:value-of select="$glossterm.width"/>
296 </xsl:when>
297 <xsl:otherwise>
298 <xsl:value-of select="$term-width"/>
299 </xsl:otherwise>
300 </xsl:choose>
301 </xsl:variable>
302
303 <xsl:if test="$glossary.collection = ''">
304 <xsl:message>
305 <xsl:text>Warning: processing automatic glossary </xsl:text>
306 <xsl:text>without a glossary.collection file.</xsl:text>
307 </xsl:message>
308 </xsl:if>
309
310 <fo:block id="{$id}">
311 <xsl:call-template name="glossary.titlepage"/>
312 </fo:block>
313
314 <xsl:if test="$preamble">
315 <xsl:apply-templates select="$preamble"/>
316 </xsl:if>
317
318 <xsl:choose>
319 <xsl:when test="glossdiv and $collection//glossdiv">
320 <xsl:for-each select="$collection//glossdiv">
321 <!-- first see if there are any in this div -->
322 <xsl:variable name="exist.test">
323 <xsl:for-each select="glossentry">
324 <xsl:variable name="cterm" select="glossterm"/>
325 <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
326 <xsl:value-of select="glossterm"/>
327 </xsl:if>
328 </xsl:for-each>
329 </xsl:variable>
330
331 <xsl:if test="$exist.test != ''">
332 <xsl:choose>
333 <xsl:when test="$presentation = 'list'">
334 <xsl:apply-templates select="." mode="auto-glossary-as-list">
335 <xsl:with-param name="width" select="$width"/>
336 <xsl:with-param name="terms" select="$terms"/>
337 </xsl:apply-templates>
338 </xsl:when>
339 <xsl:when test="$presentation = 'blocks'">
340 <xsl:apply-templates select="." mode="auto-glossary-as-blocks">
341 <xsl:with-param name="terms" select="$terms"/>
342 </xsl:apply-templates>
343 </xsl:when>
344 <xsl:when test="$glossary.as.blocks != 0">
345 <xsl:apply-templates select="." mode="auto-glossary-as-blocks">
346 <xsl:with-param name="terms" select="$terms"/>
347 </xsl:apply-templates>
348 </xsl:when>
349 <xsl:otherwise>
350 <xsl:apply-templates select="." mode="auto-glossary-as-list">
351 <xsl:with-param name="width" select="$width"/>
352 <xsl:with-param name="terms" select="$terms"/>
353 </xsl:apply-templates>
354 </xsl:otherwise>
355 </xsl:choose>
356 </xsl:if>
357 </xsl:for-each>
358 </xsl:when>
359 <xsl:otherwise>
360 <xsl:choose>
361 <xsl:when test="$presentation = 'list'">
362 <fo:list-block provisional-distance-between-starts="{$width}"
363 provisional-label-separation="{$glossterm.separation}"
364 xsl:use-attribute-sets="normal.para.spacing">
365 <xsl:for-each select="$collection//glossentry">
366 <xsl:variable name="cterm" select="glossterm"/>
367 <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
368 <xsl:apply-templates select="." mode="auto-glossary-as-list"/>
369 </xsl:if>
370 </xsl:for-each>
371 </fo:list-block>
372 </xsl:when>
373 <xsl:when test="$presentation = 'blocks'">
374 <xsl:for-each select="$collection//glossentry">
375 <xsl:variable name="cterm" select="glossterm"/>
376 <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
377 <xsl:apply-templates select="." mode="auto-glossary-as-blocks"/>
378 </xsl:if>
379 </xsl:for-each>
380 </xsl:when>
381 <xsl:when test="$glossary.as.blocks != 0">
382 <xsl:for-each select="$collection//glossentry">
383 <xsl:variable name="cterm" select="glossterm"/>
384 <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
385 <xsl:apply-templates select="." mode="auto-glossary-as-blocks"/>
386 </xsl:if>
387 </xsl:for-each>
388 </xsl:when>
389 <xsl:otherwise>
390 <fo:list-block provisional-distance-between-starts="{$width}"
391 provisional-label-separation="{$glossterm.separation}"
392 xsl:use-attribute-sets="normal.para.spacing">
393 <xsl:for-each select="$collection//glossentry">
394 <xsl:variable name="cterm" select="glossterm"/>
395 <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
396 <xsl:apply-templates select="." mode="auto-glossary-as-list"/>
397 </xsl:if>
398 </xsl:for-each>
399 </fo:list-block>
400 </xsl:otherwise>
401 </xsl:choose>
402 </xsl:otherwise>
403 </xsl:choose>
404</xsl:template>
405
406<xsl:template match="book/glossary[@role='auto']|/glossary[@role='auto']" priority="2.5">
407 <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
408
409 <xsl:variable name="master-reference">
410 <xsl:call-template name="select.pagemaster"/>
411 </xsl:variable>
412
413 <xsl:if test="$glossary.collection = ''">
414 <xsl:message>
415 <xsl:text>Warning: processing automatic glossary </xsl:text>
416 <xsl:text>without a glossary.collection file.</xsl:text>
417 </xsl:message>
418 </xsl:if>
419
420 <fo:page-sequence hyphenate="{$hyphenate}"
421 master-reference="{$master-reference}">
422 <xsl:attribute name="language">
423 <xsl:call-template name="l10n.language"/>
424 </xsl:attribute>
425 <xsl:attribute name="format">
426 <xsl:call-template name="page.number.format">
427 <xsl:with-param name="master-reference" select="$master-reference"/>
428 </xsl:call-template>
429 </xsl:attribute>
430
431 <xsl:attribute name="initial-page-number">
432 <xsl:call-template name="initial.page.number">
433 <xsl:with-param name="master-reference" select="$master-reference"/>
434 </xsl:call-template>
435 </xsl:attribute>
436
437 <xsl:attribute name="force-page-count">
438 <xsl:call-template name="force.page.count">
439 <xsl:with-param name="master-reference" select="$master-reference"/>
440 </xsl:call-template>
441 </xsl:attribute>
442
443 <xsl:attribute name="hyphenation-character">
444 <xsl:call-template name="gentext">
445 <xsl:with-param name="key" select="'hyphenation-character'"/>
446 </xsl:call-template>
447 </xsl:attribute>
448 <xsl:attribute name="hyphenation-push-character-count">
449 <xsl:call-template name="gentext">
450 <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
451 </xsl:call-template>
452 </xsl:attribute>
453 <xsl:attribute name="hyphenation-remain-character-count">
454 <xsl:call-template name="gentext">
455 <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
456 </xsl:call-template>
457 </xsl:attribute>
458
459 <xsl:apply-templates select="." mode="running.head.mode">
460 <xsl:with-param name="master-reference" select="$master-reference"/>
461 </xsl:apply-templates>
462 <xsl:apply-templates select="." mode="running.foot.mode">
463 <xsl:with-param name="master-reference" select="$master-reference"/>
464 </xsl:apply-templates>
465
466 <fo:flow flow-name="xsl-region-body">
467 <xsl:call-template name="set.flow.properties">
468 <xsl:with-param name="element" select="local-name(.)"/>
469 <xsl:with-param name="master-reference" select="$master-reference"/>
470 </xsl:call-template>
471
472 <xsl:call-template name="make-auto-glossary"/>
473 </fo:flow>
474 </fo:page-sequence>
475</xsl:template>
476
477<xsl:template match="glossdiv" mode="auto-glossary-as-list">
478 <xsl:param name="width" select="$glossterm.width"/>
479 <xsl:param name="terms" select="."/>
480
481 <xsl:variable name="preamble"
482 select="*[not(self::title
483 or self::subtitle
484 or self::glossentry)]"/>
485
486 <xsl:call-template name="glossdiv.titlepage"/>
487
488 <xsl:apply-templates select="$preamble"/>
489
490 <fo:list-block provisional-distance-between-starts="{$width}"
491 provisional-label-separation="{$glossterm.separation}"
492 xsl:use-attribute-sets="normal.para.spacing">
493 <xsl:for-each select="glossentry">
494 <xsl:variable name="cterm" select="glossterm"/>
495 <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
496 <xsl:apply-templates select="." mode="auto-glossary-as-list"/>
497 </xsl:if>
498 </xsl:for-each>
499 </fo:list-block>
500</xsl:template>
501
502<xsl:template match="glossentry" mode="auto-glossary-as-list">
503 <xsl:apply-templates select="." mode="glossary.as.list"/>
504</xsl:template>
505
506<xsl:template match="glossdiv" mode="auto-glossary-as-blocks">
507 <xsl:param name="terms" select="."/>
508
509 <xsl:variable name="preamble"
510 select="*[not(self::title
511 or self::subtitle
512 or self::glossentry)]"/>
513
514 <xsl:call-template name="glossdiv.titlepage"/>
515
516 <xsl:apply-templates select="$preamble"/>
517
518 <xsl:for-each select="glossentry">
519 <xsl:variable name="cterm" select="glossterm"/>
520 <xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
521 <xsl:apply-templates select="." mode="auto-glossary-as-blocks"/>
522 </xsl:if>
523 </xsl:for-each>
524</xsl:template>
525
526<xsl:template match="glossentry" mode="auto-glossary-as-blocks">
527 <xsl:apply-templates select="." mode="glossary.as.blocks"/>
528</xsl:template>
529
530<!-- ==================================================================== -->
531<!-- Format glossary as a list -->
532
533<xsl:template match="glossdiv" mode="glossary.as.list">
534 <xsl:param name="width" select="$glossterm.width"/>
535
536 <xsl:variable name="entries" select="glossentry"/>
537 <xsl:variable name="preamble"
538 select="*[not(self::title
539 or self::subtitle
540 or self::glossentry)]"/>
541
542 <xsl:call-template name="glossdiv.titlepage"/>
543
544 <xsl:apply-templates select="$preamble"/>
545
546 <fo:list-block provisional-distance-between-starts="{$width}"
547 provisional-label-separation="{$glossterm.separation}"
548 xsl:use-attribute-sets="normal.para.spacing">
549 <xsl:apply-templates select="$entries" mode="glossary.as.list"/>
550 </fo:list-block>
551</xsl:template>
552
553<!--
554GlossEntry ::=
555 GlossTerm, Acronym?, Abbrev?,
556 (IndexTerm)*,
557 RevHistory?,
558 (GlossSee | GlossDef+)
559-->
560
561<xsl:template match="glossentry" mode="glossary.as.list">
562 <xsl:variable name="id">
563 <xsl:call-template name="object.id"/>
564 </xsl:variable>
565
566 <fo:list-item xsl:use-attribute-sets="normal.para.spacing">
567 <xsl:call-template name="anchor">
568 <xsl:with-param name="conditional">
569 <xsl:choose>
570 <xsl:when test="$glossterm.auto.link != 0
571 or $glossary.collection != ''">0</xsl:when>
572 <xsl:otherwise>1</xsl:otherwise>
573 </xsl:choose>
574 </xsl:with-param>
575 </xsl:call-template>
576
577 <fo:list-item-label end-indent="label-end()">
578 <fo:block>
579 <xsl:choose>
580 <xsl:when test="$glossentry.show.acronym = 'primary'">
581 <xsl:choose>
582 <xsl:when test="acronym|abbrev">
583 <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.list"/>
584 <xsl:text> (</xsl:text>
585 <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
586 <xsl:text>)</xsl:text>
587 </xsl:when>
588 <xsl:otherwise>
589 <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
590 </xsl:otherwise>
591 </xsl:choose>
592 </xsl:when>
593
594 <xsl:when test="$glossentry.show.acronym = 'yes'">
595 <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
596
597 <xsl:if test="acronym|abbrev">
598 <xsl:text> (</xsl:text>
599 <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.list"/>
600 <xsl:text>)</xsl:text>
601 </xsl:if>
602 </xsl:when>
603
604 <xsl:otherwise>
605 <xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
606 </xsl:otherwise>
607 </xsl:choose>
608 <xsl:apply-templates select="indexterm"/>
609 </fo:block>
610 </fo:list-item-label>
611
612 <fo:list-item-body start-indent="body-start()">
613 <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.list"/>
614 </fo:list-item-body>
615 </fo:list-item>
616</xsl:template>
617
618<xsl:template match="glossentry/glossterm" mode="glossary.as.list">
619 <xsl:variable name="id">
620 <xsl:call-template name="object.id"/>
621 </xsl:variable>
622 <fo:inline id="{$id}">
623 <xsl:apply-templates/>
624 </fo:inline>
625 <xsl:if test="following-sibling::glossterm">, </xsl:if>
626</xsl:template>
627
628<xsl:template match="glossentry/acronym" mode="glossary.as.list">
629 <xsl:apply-templates/>
630 <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
631</xsl:template>
632
633<xsl:template match="glossentry/abbrev" mode="glossary.as.list">
634 <xsl:apply-templates/>
635 <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
636</xsl:template>
637
638<xsl:template match="glossentry/revhistory" mode="glossary.as.list">
639</xsl:template>
640
641<xsl:template match="glossentry/glosssee" mode="glossary.as.list">
642 <xsl:variable name="otherterm" select="@otherterm"/>
643 <xsl:variable name="targets" select="//node()[@id=$otherterm]"/>
644 <xsl:variable name="target" select="$targets[1]"/>
645
646 <fo:block>
647 <xsl:variable name="template">
648 <xsl:call-template name="gentext.template">
649 <xsl:with-param name="context" select="'glossary'"/>
650 <xsl:with-param name="name" select="'see'"/>
651 </xsl:call-template>
652 </xsl:variable>
653 <xsl:variable name="title">
654 <xsl:choose>
655 <xsl:when test="$target">
656 <fo:basic-link internal-destination="{$otherterm}"
657 xsl:use-attribute-sets="xref.properties">
658 <xsl:apply-templates select="$target" mode="xref-to"/>
659 </fo:basic-link>
660 </xsl:when>
661 <xsl:when test="$otherterm != '' and not($target)">
662 <xsl:message>
663 <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
664 <xsl:value-of select="$otherterm"/>
665 </xsl:message>
666 <xsl:apply-templates mode="glossary.as.list"/>
667 </xsl:when>
668 <xsl:otherwise>
669 <xsl:apply-templates mode="glossary.as.list"/>
670 </xsl:otherwise>
671 </xsl:choose>
672 </xsl:variable>
673 <xsl:call-template name="substitute-markup">
674 <xsl:with-param name="template" select="$template"/>
675 <xsl:with-param name="title" select="$title"/>
676 </xsl:call-template>
677
678 <xsl:text>.</xsl:text>
679 </fo:block>
680</xsl:template>
681
682<xsl:template match="glossentry/glossdef" mode="glossary.as.list">
683 <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
684 <xsl:if test="glossseealso">
685 <fo:block>
686 <xsl:variable name="template">
687 <xsl:call-template name="gentext.template">
688 <xsl:with-param name="context" select="'glossary'"/>
689 <xsl:with-param name="name" select="'seealso'"/>
690 </xsl:call-template>
691 </xsl:variable>
692 <xsl:variable name="title">
693 <xsl:apply-templates select="glossseealso" mode="glossary.as.list"/>
694 </xsl:variable>
695 <xsl:call-template name="substitute-markup">
696 <xsl:with-param name="template" select="$template"/>
697 <xsl:with-param name="title" select="$title"/>
698 </xsl:call-template>
699 </fo:block>
700 </xsl:if>
701</xsl:template>
702
703<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
704 mode="glossary.as.list">
705 <fo:block>
706 <xsl:apply-templates/>
707 </fo:block>
708</xsl:template>
709
710<xsl:template match="glossseealso" mode="glossary.as.list">
711 <xsl:variable name="otherterm" select="@otherterm"/>
712 <xsl:variable name="targets" select="//node()[@id=$otherterm]"/>
713 <xsl:variable name="target" select="$targets[1]"/>
714
715 <xsl:choose>
716 <xsl:when test="$target">
717 <fo:basic-link internal-destination="{$otherterm}"
718 xsl:use-attribute-sets="xref.properties">
719 <xsl:apply-templates select="$target" mode="xref-to"/>
720 </fo:basic-link>
721 </xsl:when>
722 <xsl:when test="$otherterm != '' and not($target)">
723 <xsl:message>
724 <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
725 <xsl:value-of select="$otherterm"/>
726 </xsl:message>
727 <xsl:apply-templates mode="glossary.as.list"/>
728 </xsl:when>
729 <xsl:otherwise>
730 <xsl:apply-templates mode="glossary.as.list"/>
731 </xsl:otherwise>
732 </xsl:choose>
733
734 <xsl:choose>
735 <xsl:when test="position() = last()">
736 <xsl:text>.</xsl:text>
737 </xsl:when>
738 <xsl:otherwise>
739 <xsl:text>, </xsl:text>
740 </xsl:otherwise>
741 </xsl:choose>
742</xsl:template>
743
744<!-- ==================================================================== -->
745<!-- Format glossary blocks -->
746
747<xsl:template match="glossdiv" mode="glossary.as.blocks">
748 <xsl:variable name="entries" select="glossentry"/>
749 <xsl:variable name="preamble"
750 select="*[not(self::title
751 or self::subtitle
752 or self::glossentry)]"/>
753
754 <xsl:call-template name="glossdiv.titlepage"/>
755
756 <xsl:apply-templates select="$preamble"/>
757
758 <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
759</xsl:template>
760
761<!--
762GlossEntry ::=
763 GlossTerm, Acronym?, Abbrev?,
764 (IndexTerm)*,
765 RevHistory?,
766 (GlossSee | GlossDef+)
767-->
768
769<xsl:template match="glossentry" mode="glossary.as.blocks">
770 <xsl:variable name="id">
771 <xsl:call-template name="object.id"/>
772 </xsl:variable>
773
774 <fo:block xsl:use-attribute-sets="list.item.spacing"
775 keep-with-next.within-column="always"
776 keep-together.within-column="always">
777 <xsl:call-template name="anchor">
778 <xsl:with-param name="conditional">
779 <xsl:choose>
780 <xsl:when test="$glossterm.auto.link != 0
781 or $glossary.collection != ''">0</xsl:when>
782 <xsl:otherwise>1</xsl:otherwise>
783 </xsl:choose>
784 </xsl:with-param>
785 </xsl:call-template>
786
787 <xsl:choose>
788 <xsl:when test="$glossentry.show.acronym = 'primary'">
789 <xsl:choose>
790 <xsl:when test="acronym|abbrev">
791 <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
792 <xsl:text> (</xsl:text>
793 <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
794 <xsl:text>)</xsl:text>
795 </xsl:when>
796 <xsl:otherwise>
797 <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
798 </xsl:otherwise>
799 </xsl:choose>
800 </xsl:when>
801
802 <xsl:when test="$glossentry.show.acronym = 'yes'">
803 <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
804
805 <xsl:if test="acronym|abbrev">
806 <xsl:text> (</xsl:text>
807 <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
808 <xsl:text>)</xsl:text>
809 </xsl:if>
810 </xsl:when>
811
812 <xsl:otherwise>
813 <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
814 </xsl:otherwise>
815 </xsl:choose>
816
817 <xsl:apply-templates select="indexterm"/>
818 </fo:block>
819
820 <fo:block margin-left="0.25in">
821 <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.blocks"/>
822 </fo:block>
823</xsl:template>
824
825<xsl:template match="glossentry/glossterm" mode="glossary.as.blocks">
826 <xsl:variable name="id">
827 <xsl:call-template name="object.id"/>
828 </xsl:variable>
829 <fo:inline id="{$id}">
830 <xsl:apply-templates/>
831 </fo:inline>
832 <xsl:if test="following-sibling::glossterm">, </xsl:if>
833</xsl:template>
834
835<xsl:template match="glossentry/acronym" mode="glossary.as.blocks">
836 <xsl:apply-templates/>
837 <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
838</xsl:template>
839
840<xsl:template match="glossentry/abbrev" mode="glossary.as.blocks">
841 <xsl:apply-templates/>
842 <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
843</xsl:template>
844
845<xsl:template match="glossentry/glosssee" mode="glossary.as.blocks">
846 <xsl:variable name="otherterm" select="@otherterm"/>
847 <xsl:variable name="targets" select="//node()[@id=$otherterm]"/>
848 <xsl:variable name="target" select="$targets[1]"/>
849
850 <xsl:variable name="template">
851 <xsl:call-template name="gentext.template">
852 <xsl:with-param name="context" select="'glossary'"/>
853 <xsl:with-param name="name" select="'see'"/>
854 </xsl:call-template>
855 </xsl:variable>
856 <xsl:variable name="title">
857 <xsl:choose>
858 <xsl:when test="$target">
859 <fo:basic-link internal-destination="{$otherterm}"
860 xsl:use-attribute-sets="xref.properties">
861 <xsl:apply-templates select="$target" mode="xref-to"/>
862 </fo:basic-link>
863 </xsl:when>
864 <xsl:when test="$otherterm != '' and not($target)">
865 <xsl:message>
866 <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
867 <xsl:value-of select="$otherterm"/>
868 </xsl:message>
869 <xsl:apply-templates mode="glossary.as.blocks"/>
870 </xsl:when>
871 <xsl:otherwise>
872 <xsl:apply-templates mode="glossary.as.blocks"/>
873 </xsl:otherwise>
874 </xsl:choose>
875 </xsl:variable>
876 <xsl:call-template name="substitute-markup">
877 <xsl:with-param name="template" select="$template"/>
878 <xsl:with-param name="title" select="$title"/>
879 </xsl:call-template>
880
881 <xsl:text>.</xsl:text>
882</xsl:template>
883
884<xsl:template match="glossentry/glossdef" mode="glossary.as.blocks">
885 <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"
886 mode="glossary.as.blocks"/>
887 <xsl:if test="glossseealso">
888 <fo:block>
889 <xsl:variable name="template">
890 <xsl:call-template name="gentext.template">
891 <xsl:with-param name="context" select="'glossary'"/>
892 <xsl:with-param name="name" select="'seealso'"/>
893 </xsl:call-template>
894 </xsl:variable>
895 <xsl:variable name="title">
896 <xsl:apply-templates select="glossseealso" mode="glossary.as.blocks"/>
897 </xsl:variable>
898 <xsl:call-template name="substitute-markup">
899 <xsl:with-param name="template" select="$template"/>
900 <xsl:with-param name="title" select="$title"/>
901 </xsl:call-template>
902 </fo:block>
903 </xsl:if>
904</xsl:template>
905
906<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
907 mode="glossary.as.blocks">
908 <fo:block>
909 <xsl:apply-templates/>
910 </fo:block>
911</xsl:template>
912
913<!-- Handle any other glossdef content normally -->
914<xsl:template match="*" mode="glossary.as.blocks">
915 <xsl:apply-templates select="." />
916</xsl:template>
917
918<xsl:template match="glossseealso" mode="glossary.as.blocks">
919 <xsl:variable name="otherterm" select="@otherterm"/>
920 <xsl:variable name="targets" select="//node()[@id=$otherterm]"/>
921 <xsl:variable name="target" select="$targets[1]"/>
922
923 <xsl:choose>
924 <xsl:when test="$target">
925 <fo:basic-link internal-destination="{$otherterm}"
926 xsl:use-attribute-sets="xref.properties">
927 <xsl:apply-templates select="$target" mode="xref-to"/>
928 </fo:basic-link>
929 </xsl:when>
930 <xsl:when test="$otherterm != '' and not($target)">
931 <xsl:message>
932 <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
933 <xsl:value-of select="$otherterm"/>
934 </xsl:message>
935 <xsl:apply-templates mode="glossary.as.blocks"/>
936 </xsl:when>
937 <xsl:otherwise>
938 <xsl:apply-templates mode="glossary.as.blocks"/>
939 </xsl:otherwise>
940 </xsl:choose>
941
942 <xsl:choose>
943 <xsl:when test="position() = last()">
944 <xsl:text>.</xsl:text>
945 </xsl:when>
946 <xsl:otherwise>
947 <xsl:text>, </xsl:text>
948 </xsl:otherwise>
949 </xsl:choose>
950</xsl:template>
951
952<!-- ==================================================================== -->
953
954</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.