2
<!DOCTYPE xsl:stylesheet [
3
<!ENTITY % common.entities SYSTEM "../common/entities.ent">
6
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
7
xmlns:fo="http://www.w3.org/1999/XSL/Format"
8
xmlns:xlink='http://www.w3.org/1999/xlink'
9
exclude-result-prefixes="xlink"
12
<!-- ********************************************************************
13
$Id: glossary.xsl 8591 2010-02-27 20:42:27Z bobstayton $
14
********************************************************************
16
This file is part of the XSL DocBook Stylesheet distribution.
17
See ../README or http://docbook.sf.net/release/xsl/current/ for
18
copyright and other information.
20
******************************************************************** -->
22
<!-- ==================================================================== -->
24
<xsl:template match="glossary">
25
<xsl:call-template name="make-glossary"/>
28
<xsl:template match="glossdiv/title"/>
29
<xsl:template match="glossdiv/subtitle"/>
30
<xsl:template match="glossdiv/titleabbrev"/>
32
<!-- ==================================================================== -->
34
<xsl:template name="make-glossary">
35
<xsl:param name="divs" select="glossdiv"/>
36
<xsl:param name="entries" select="glossentry"/>
37
<xsl:param name="preamble" select="*[not(self::title
40
or self::glossentry)]"/>
42
&setup-language-variable;
44
<xsl:variable name="id">
45
<xsl:call-template name="object.id"/>
48
<xsl:variable name="presentation">
49
<xsl:call-template name="pi.dbfo_glossary-presentation"/>
52
<xsl:variable name="term-width">
53
<xsl:call-template name="pi.dbfo_glossterm-width"/>
56
<xsl:variable name="width">
58
<xsl:when test="$term-width = ''">
59
<xsl:value-of select="$glossterm.width"/>
62
<xsl:value-of select="$term-width"/>
68
<xsl:call-template name="glossary.titlepage"/>
71
<xsl:if test="$preamble">
72
<xsl:apply-templates select="$preamble"/>
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">
85
<xsl:when test="$glossary.sort != 0">
86
<xsl:apply-templates select="$entries" mode="glossary.as.list">
87
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
88
</xsl:apply-templates>
91
<xsl:apply-templates select="$entries" mode="glossary.as.list"/>
97
<xsl:when test="$presentation = 'blocks'">
98
<xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
100
<xsl:when test="$glossary.sort != 0">
101
<xsl:apply-templates select="$entries" mode="glossary.as.blocks">
102
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
103
</xsl:apply-templates>
106
<xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
110
<xsl:when test="$glossary.as.blocks != 0">
111
<xsl:apply-templates select="$divs" mode="glossary.as.blocks"/>
113
<xsl:when test="$glossary.sort != 0">
114
<xsl:apply-templates select="$entries" mode="glossary.as.blocks">
115
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
116
</xsl:apply-templates>
119
<xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
124
<xsl:apply-templates select="$divs" mode="glossary.as.list">
125
<xsl:with-param name="width" select="$width"/>
126
</xsl:apply-templates>
127
<xsl:if test="$entries">
128
<fo:list-block provisional-distance-between-starts="{$width}"
129
provisional-label-separation="{$glossterm.separation}"
130
xsl:use-attribute-sets="normal.para.spacing">
132
<xsl:when test="$glossary.sort != 0">
133
<xsl:apply-templates select="$entries" mode="glossary.as.list">
134
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
135
</xsl:apply-templates>
138
<xsl:apply-templates select="$entries" mode="glossary.as.list"/>
147
<xsl:template match="book/glossary|part/glossary|/glossary" priority="2">
148
<xsl:variable name="id">
149
<xsl:call-template name="object.id"/>
152
<xsl:variable name="master-reference">
153
<xsl:call-template name="select.pagemaster"/>
156
<fo:page-sequence hyphenate="{$hyphenate}"
157
master-reference="{$master-reference}">
158
<xsl:attribute name="language">
159
<xsl:call-template name="l10n.language"/>
162
<xsl:attribute name="format">
163
<xsl:call-template name="page.number.format">
164
<xsl:with-param name="master-reference" select="$master-reference"/>
168
<xsl:attribute name="initial-page-number">
169
<xsl:call-template name="initial.page.number">
170
<xsl:with-param name="master-reference" select="$master-reference"/>
174
<xsl:attribute name="force-page-count">
175
<xsl:call-template name="force.page.count">
176
<xsl:with-param name="master-reference" select="$master-reference"/>
180
<xsl:attribute name="hyphenation-character">
181
<xsl:call-template name="gentext">
182
<xsl:with-param name="key" select="'hyphenation-character'"/>
185
<xsl:attribute name="hyphenation-push-character-count">
186
<xsl:call-template name="gentext">
187
<xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
190
<xsl:attribute name="hyphenation-remain-character-count">
191
<xsl:call-template name="gentext">
192
<xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
196
<xsl:apply-templates select="." mode="running.head.mode">
197
<xsl:with-param name="master-reference" select="$master-reference"/>
198
</xsl:apply-templates>
199
<xsl:apply-templates select="." mode="running.foot.mode">
200
<xsl:with-param name="master-reference" select="$master-reference"/>
201
</xsl:apply-templates>
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" select="$master-reference"/>
209
<xsl:call-template name="make-glossary"/>
214
<xsl:template match="glossary/glossaryinfo"></xsl:template>
215
<xsl:template match="glossary/info"></xsl:template>
216
<xsl:template match="glossary/title"></xsl:template>
217
<xsl:template match="glossary/subtitle"></xsl:template>
218
<xsl:template match="glossary/titleabbrev"></xsl:template>
220
<!-- ==================================================================== -->
222
<xsl:template match="glosslist">
223
&setup-language-variable;
225
<xsl:variable name="presentation">
226
<xsl:call-template name="pi.dbfo_glosslist-presentation"/>
229
<xsl:variable name="term-width">
230
<xsl:call-template name="pi.dbfo_glossterm-width"/>
233
<xsl:variable name="width">
235
<xsl:when test="$term-width = ''">
236
<xsl:value-of select="$glossterm.width"/>
239
<xsl:value-of select="$term-width"/>
244
<xsl:if test="title or info/title">
245
<xsl:apply-templates select="(title|info/title)[1]" mode="list.title.mode"/>
249
<xsl:when test="$presentation = 'list'">
250
<fo:list-block provisional-distance-between-starts="{$width}"
251
provisional-label-separation="{$glossterm.separation}"
252
xsl:use-attribute-sets="normal.para.spacing">
254
<xsl:when test="$glossary.sort != 0">
255
<xsl:apply-templates select="glossentry" mode="glossary.as.list">
256
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
257
</xsl:apply-templates>
260
<xsl:apply-templates select="glossentry" mode="glossary.as.list"/>
265
<xsl:when test="$presentation = 'blocks'">
267
<xsl:when test="$glossary.sort != 0">
268
<xsl:apply-templates select="glossentry" mode="glossary.as.blocks">
269
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
270
</xsl:apply-templates>
273
<xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/>
277
<xsl:when test="$glosslist.as.blocks != 0">
279
<xsl:when test="$glossary.sort != 0">
280
<xsl:apply-templates select="glossentry" mode="glossary.as.blocks">
281
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
282
</xsl:apply-templates>
285
<xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/>
290
<fo:list-block provisional-distance-between-starts="{$width}"
291
provisional-label-separation="{$glossterm.separation}"
292
xsl:use-attribute-sets="normal.para.spacing">
294
<xsl:when test="$glossary.sort != 0">
295
<xsl:apply-templates select="glossentry" mode="glossary.as.list">
296
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
297
</xsl:apply-templates>
300
<xsl:apply-templates select="glossentry" mode="glossary.as.list"/>
308
<!-- ==================================================================== -->
309
<!-- Glossary collection -->
311
<xsl:template match="glossary[@role='auto']" priority="2">
312
<xsl:variable name="collection" select="document($glossary.collection, .)"/>
313
<xsl:if test="$glossary.collection = ''">
315
<xsl:text>Warning: processing automatic glossary </xsl:text>
316
<xsl:text>without a glossary.collection file.</xsl:text>
320
<xsl:if test="not($collection) and $glossary.collection != ''">
322
<xsl:text>Warning: processing automatic glossary but unable to </xsl:text>
323
<xsl:text>open glossary.collection file '</xsl:text>
324
<xsl:value-of select="$glossary.collection"/>
325
<xsl:text>'</xsl:text>
329
<xsl:call-template name="make-auto-glossary"/>
332
<xsl:template name="make-auto-glossary">
333
<xsl:param name="collection" select="document($glossary.collection, .)"/>
334
<xsl:param name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/>
335
<xsl:param name="preamble" select="*[not(self::title
338
or self::glossentry)]"/>
340
&setup-language-variable;
342
<xsl:variable name="id">
343
<xsl:call-template name="object.id"/>
346
<xsl:variable name="presentation">
347
<xsl:call-template name="pi.dbfo_glossary-presentation"/>
350
<xsl:variable name="term-width">
351
<xsl:call-template name="pi.dbfo_glossterm-width"/>
354
<xsl:variable name="width">
356
<xsl:when test="$term-width = ''">
357
<xsl:value-of select="$glossterm.width"/>
360
<xsl:value-of select="$term-width"/>
365
<xsl:if test="$glossary.collection = ''">
367
<xsl:text>Warning: processing automatic glossary </xsl:text>
368
<xsl:text>without a glossary.collection file.</xsl:text>
372
<fo:block id="{$id}">
373
<xsl:call-template name="glossary.titlepage"/>
376
<xsl:if test="$preamble">
377
<xsl:apply-templates select="$preamble"/>
381
<xsl:when test="glossdiv and $collection//glossdiv">
382
<xsl:for-each select="$collection//glossdiv">
383
<!-- first see if there are any in this div -->
384
<xsl:variable name="exist.test">
385
<xsl:for-each select="glossentry">
386
<xsl:variable name="cterm" select="glossterm"/>
387
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
388
<xsl:value-of select="glossterm"/>
393
<xsl:if test="$exist.test != ''">
395
<xsl:when test="$presentation = 'list'">
396
<xsl:apply-templates select="." mode="auto-glossary-as-list">
397
<xsl:with-param name="width" select="$width"/>
398
<xsl:with-param name="terms" select="$terms"/>
399
</xsl:apply-templates>
401
<xsl:when test="$presentation = 'blocks'">
402
<xsl:apply-templates select="." mode="auto-glossary-as-blocks">
403
<xsl:with-param name="terms" select="$terms"/>
404
</xsl:apply-templates>
406
<xsl:when test="$glossary.as.blocks != 0">
407
<xsl:apply-templates select="." mode="auto-glossary-as-blocks">
408
<xsl:with-param name="terms" select="$terms"/>
409
</xsl:apply-templates>
412
<xsl:apply-templates select="." mode="auto-glossary-as-list">
413
<xsl:with-param name="width" select="$width"/>
414
<xsl:with-param name="terms" select="$terms"/>
415
</xsl:apply-templates>
423
<xsl:when test="$presentation = 'list'">
424
<fo:list-block provisional-distance-between-starts="{$width}"
425
provisional-label-separation="{$glossterm.separation}"
426
xsl:use-attribute-sets="normal.para.spacing">
428
<xsl:when test="$glossary.sort != 0">
429
<xsl:for-each select="$collection//glossentry">
430
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
431
<xsl:variable name="cterm" select="glossterm"/>
432
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
433
<xsl:apply-templates select="."
434
mode="auto-glossary-as-list"/>
439
<xsl:for-each select="$collection//glossentry">
440
<xsl:variable name="cterm" select="glossterm"/>
441
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
442
<xsl:apply-templates select="."
443
mode="auto-glossary-as-list"/>
450
<xsl:when test="$presentation = 'blocks' or
451
$glossary.as.blocks != 0">
453
<xsl:when test="$glossary.sort != 0">
454
<xsl:for-each select="$collection//glossentry">
455
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
456
<xsl:variable name="cterm" select="glossterm"/>
457
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
458
<xsl:apply-templates select="."
459
mode="auto-glossary-as-blocks"/>
464
<xsl:for-each select="$collection//glossentry">
465
<xsl:variable name="cterm" select="glossterm"/>
466
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
467
<xsl:apply-templates select="."
468
mode="auto-glossary-as-blocks"/>
475
<fo:list-block provisional-distance-between-starts="{$width}"
476
provisional-label-separation="{$glossterm.separation}"
477
xsl:use-attribute-sets="normal.para.spacing">
479
<xsl:when test="$glossary.sort != 0">
480
<xsl:for-each select="$collection//glossentry">
482
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
483
<xsl:variable name="cterm" select="glossterm"/>
484
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
485
<xsl:apply-templates select="."
486
mode="auto-glossary-as-list"/>
491
<xsl:for-each select="$collection//glossentry">
492
<xsl:variable name="cterm" select="glossterm"/>
493
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
494
<xsl:apply-templates select="."
495
mode="auto-glossary-as-list"/>
507
<xsl:template match="book/glossary[@role='auto']|
508
part/glossary[@role='auto']|
509
/glossary[@role='auto']" priority="2.5">
510
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
512
<xsl:variable name="master-reference">
513
<xsl:call-template name="select.pagemaster"/>
516
<xsl:if test="$glossary.collection = ''">
518
<xsl:text>Warning: processing automatic glossary </xsl:text>
519
<xsl:text>without a glossary.collection file.</xsl:text>
523
<fo:page-sequence hyphenate="{$hyphenate}"
524
master-reference="{$master-reference}">
525
<xsl:attribute name="language">
526
<xsl:call-template name="l10n.language"/>
528
<xsl:attribute name="format">
529
<xsl:call-template name="page.number.format">
530
<xsl:with-param name="master-reference" select="$master-reference"/>
534
<xsl:attribute name="initial-page-number">
535
<xsl:call-template name="initial.page.number">
536
<xsl:with-param name="master-reference" select="$master-reference"/>
540
<xsl:attribute name="force-page-count">
541
<xsl:call-template name="force.page.count">
542
<xsl:with-param name="master-reference" select="$master-reference"/>
546
<xsl:attribute name="hyphenation-character">
547
<xsl:call-template name="gentext">
548
<xsl:with-param name="key" select="'hyphenation-character'"/>
551
<xsl:attribute name="hyphenation-push-character-count">
552
<xsl:call-template name="gentext">
553
<xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
556
<xsl:attribute name="hyphenation-remain-character-count">
557
<xsl:call-template name="gentext">
558
<xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
562
<xsl:apply-templates select="." mode="running.head.mode">
563
<xsl:with-param name="master-reference" select="$master-reference"/>
564
</xsl:apply-templates>
565
<xsl:apply-templates select="." mode="running.foot.mode">
566
<xsl:with-param name="master-reference" select="$master-reference"/>
567
</xsl:apply-templates>
569
<fo:flow flow-name="xsl-region-body">
570
<xsl:call-template name="set.flow.properties">
571
<xsl:with-param name="element" select="local-name(.)"/>
572
<xsl:with-param name="master-reference" select="$master-reference"/>
575
<xsl:call-template name="make-auto-glossary"/>
580
<xsl:template match="glossdiv" mode="auto-glossary-as-list">
581
<xsl:param name="width" select="$glossterm.width"/>
582
<xsl:param name="terms" select="."/>
584
&setup-language-variable;
586
<xsl:variable name="id">
587
<xsl:call-template name="object.id"/>
590
<xsl:variable name="preamble"
591
select="*[not(self::title
593
or self::glossentry)]"/>
595
<fo:block id="{$id}">
596
<xsl:call-template name="glossdiv.titlepage"/>
599
<xsl:apply-templates select="$preamble"/>
601
<fo:list-block provisional-distance-between-starts="{$width}"
602
provisional-label-separation="{$glossterm.separation}"
603
xsl:use-attribute-sets="normal.para.spacing">
605
<xsl:when test="$glossary.sort != 0">
606
<xsl:for-each select="glossentry">
607
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
608
<xsl:variable name="cterm" select="glossterm"/>
609
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
610
<xsl:apply-templates select="." mode="auto-glossary-as-list"/>
615
<xsl:for-each select="glossentry">
616
<xsl:variable name="cterm" select="glossterm"/>
617
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
618
<xsl:apply-templates select="." mode="auto-glossary-as-list"/>
626
<xsl:template match="glossentry" mode="auto-glossary-as-list">
627
<xsl:apply-templates select="." mode="glossary.as.list"/>
630
<xsl:template match="glossdiv" mode="auto-glossary-as-blocks">
631
<xsl:param name="terms" select="."/>
633
&setup-language-variable;
635
<xsl:variable name="id">
636
<xsl:call-template name="object.id"/>
639
<xsl:variable name="preamble"
640
select="*[not(self::title
642
or self::glossentry)]"/>
644
<fo:block id="{$id}">
645
<xsl:call-template name="glossdiv.titlepage"/>
648
<xsl:apply-templates select="$preamble"/>
651
<xsl:when test="$glossary.sort != 0">
652
<xsl:for-each select="glossentry">
653
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
654
<xsl:variable name="cterm" select="glossterm"/>
655
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
656
<xsl:apply-templates select="." mode="auto-glossary-as-blocks"/>
661
<xsl:for-each select="glossentry">
662
<xsl:variable name="cterm" select="glossterm"/>
663
<xsl:if test="$terms[@baseform = $cterm or . = $cterm]">
664
<xsl:apply-templates select="." mode="auto-glossary-as-blocks"/>
672
<xsl:template match="glossentry" mode="auto-glossary-as-blocks">
673
<xsl:apply-templates select="." mode="glossary.as.blocks"/>
676
<!-- ==================================================================== -->
677
<!-- Format glossary as a list -->
679
<xsl:template match="glossdiv" mode="glossary.as.list">
680
<xsl:param name="width" select="$glossterm.width"/>
682
&setup-language-variable;
684
<xsl:variable name="id">
685
<xsl:call-template name="object.id"/>
688
<xsl:variable name="entries" select="glossentry"/>
690
<xsl:variable name="preamble"
691
select="*[not(self::title
693
or self::glossentry)]"/>
695
<fo:block id="{$id}">
696
<xsl:call-template name="glossdiv.titlepage"/>
699
<xsl:apply-templates select="$preamble"/>
701
<fo:list-block provisional-distance-between-starts="{$width}"
702
provisional-label-separation="{$glossterm.separation}"
703
xsl:use-attribute-sets="normal.para.spacing">
705
<xsl:when test="$glossary.sort != 0">
706
<xsl:apply-templates select="$entries" mode="glossary.as.list">
707
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
708
</xsl:apply-templates>
711
<xsl:apply-templates select="$entries" mode="glossary.as.list"/>
719
GlossTerm, Acronym?, Abbrev?,
722
(GlossSee | GlossDef+)
725
<xsl:template match="glossentry" mode="glossary.as.list">
726
<xsl:variable name="id">
727
<xsl:call-template name="object.id"/>
730
<fo:list-item xsl:use-attribute-sets="glossentry.list.item.properties">
731
<xsl:call-template name="anchor">
732
<xsl:with-param name="conditional">
734
<xsl:when test="$glossterm.auto.link != 0
735
or $glossary.collection != ''">0</xsl:when>
736
<xsl:otherwise>1</xsl:otherwise>
741
<fo:list-item-label end-indent="label-end()">
742
<fo:block xsl:use-attribute-sets="glossterm.list.properties">
744
<xsl:when test="$glossentry.show.acronym = 'primary'">
746
<xsl:when test="acronym|abbrev">
747
<xsl:apply-templates select="acronym|abbrev"
748
mode="glossary.as.list"/>
749
<xsl:text> (</xsl:text>
750
<xsl:apply-templates select="glossterm"
751
mode="glossary.as.list"/>
752
<xsl:text>)</xsl:text>
755
<xsl:apply-templates select="glossterm"
756
mode="glossary.as.list"/>
761
<xsl:when test="$glossentry.show.acronym = 'yes'">
762
<xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
764
<xsl:if test="acronym|abbrev">
765
<xsl:text> (</xsl:text>
766
<xsl:apply-templates select="acronym|abbrev"
767
mode="glossary.as.list"/>
768
<xsl:text>)</xsl:text>
773
<xsl:apply-templates select="glossterm" mode="glossary.as.list"/>
776
<xsl:apply-templates select="indexterm"/>
778
</fo:list-item-label>
780
<fo:list-item-body start-indent="body-start()">
781
<fo:block xsl:use-attribute-sets="glossdef.list.properties">
782
<xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.list"/>
788
<xsl:template match="glossentry/glossterm" mode="glossary.as.list">
789
<xsl:variable name="id">
790
<xsl:call-template name="object.id"/>
792
<fo:inline id="{$id}">
793
<xsl:apply-templates/>
795
<xsl:if test="following-sibling::glossterm">, </xsl:if>
798
<xsl:template match="glossentry/acronym" mode="glossary.as.list">
799
<xsl:apply-templates/>
800
<xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
803
<xsl:template match="glossentry/abbrev" mode="glossary.as.list">
804
<xsl:apply-templates/>
805
<xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
808
<xsl:template match="glossentry/revhistory" mode="glossary.as.list">
811
<xsl:template match="glossentry/glosssee" mode="glossary.as.list">
812
<xsl:variable name="otherterm" select="@otherterm"/>
813
<xsl:variable name="targets" select="key('id', $otherterm)"/>
814
<xsl:variable name="target" select="$targets[1]"/>
815
<xsl:variable name="xlink" select="@xlink:href"/>
818
<xsl:variable name="template">
819
<xsl:call-template name="gentext.template">
820
<xsl:with-param name="context" select="'glossary'"/>
821
<xsl:with-param name="name" select="'see'"/>
824
<xsl:variable name="title">
826
<xsl:when test="$target">
827
<fo:basic-link internal-destination="{$otherterm}"
828
xsl:use-attribute-sets="xref.properties">
829
<xsl:apply-templates select="$target" mode="xref-to"/>
832
<xsl:when test="$xlink">
833
<xsl:call-template name="simple.xlink">
834
<xsl:with-param name="content">
835
<xsl:apply-templates/>
839
<xsl:when test="$otherterm != '' and not($target)">
841
<xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
842
<xsl:value-of select="$otherterm"/>
844
<xsl:apply-templates mode="glossary.as.list"/>
847
<xsl:apply-templates mode="glossary.as.list"/>
851
<xsl:call-template name="substitute-markup">
852
<xsl:with-param name="template" select="$template"/>
853
<xsl:with-param name="title" select="$title"/>
858
<xsl:template match="glossentry/glossdef" mode="glossary.as.list">
859
<xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
860
<xsl:if test="glossseealso">
862
<xsl:variable name="template">
863
<xsl:call-template name="gentext.template">
864
<xsl:with-param name="context" select="'glossary'"/>
865
<xsl:with-param name="name" select="'seealso'"/>
868
<xsl:variable name="title">
869
<xsl:apply-templates select="glossseealso" mode="glossary.as.list"/>
871
<xsl:call-template name="substitute-markup">
872
<xsl:with-param name="template" select="$template"/>
873
<xsl:with-param name="title" select="$title"/>
879
<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
880
mode="glossary.as.list">
882
<xsl:apply-templates/>
886
<xsl:template match="glossseealso" mode="glossary.as.list">
887
<xsl:variable name="otherterm" select="@otherterm"/>
888
<xsl:variable name="targets" select="key('id', $otherterm)"/>
889
<xsl:variable name="target" select="$targets[1]"/>
890
<xsl:variable name="xlink" select="@xlink:href"/>
893
<xsl:when test="$target">
894
<fo:basic-link internal-destination="{$otherterm}"
895
xsl:use-attribute-sets="xref.properties">
896
<xsl:apply-templates select="$target" mode="xref-to"/>
899
<xsl:when test="$xlink">
900
<xsl:call-template name="simple.xlink">
901
<xsl:with-param name="content">
902
<xsl:apply-templates/>
906
<xsl:when test="$otherterm != '' and not($target)">
908
<xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
909
<xsl:value-of select="$otherterm"/>
911
<xsl:apply-templates mode="glossary.as.list"/>
914
<xsl:apply-templates mode="glossary.as.list"/>
919
<xsl:when test="position() = last()"/>
921
<xsl:call-template name="gentext.template">
922
<xsl:with-param name="context" select="'glossary'"/>
923
<xsl:with-param name="name" select="'seealso-separator'"/>
929
<!-- ==================================================================== -->
930
<!-- Format glossary blocks -->
932
<xsl:template match="glossdiv" mode="glossary.as.blocks">
933
&setup-language-variable;
935
<xsl:variable name="id">
936
<xsl:call-template name="object.id"/>
939
<xsl:variable name="entries" select="glossentry"/>
940
<xsl:variable name="preamble"
941
select="*[not(self::title
943
or self::glossentry)]"/>
945
<fo:block id="{$id}">
946
<xsl:call-template name="glossdiv.titlepage"/>
949
<xsl:apply-templates select="$preamble"/>
952
<xsl:when test="$glossary.sort != 0">
953
<xsl:apply-templates select="$entries" mode="glossary.as.blocks">
954
<xsl:sort lang="{$language}" select="normalize-space(translate(concat(@sortas, glossterm[not(parent::glossentry/@sortas) or parent::glossentry/@sortas = '']), &lowercase;, &uppercase;))"/>
955
</xsl:apply-templates>
958
<xsl:apply-templates select="$entries" mode="glossary.as.blocks"/>
965
GlossTerm, Acronym?, Abbrev?,
968
(GlossSee | GlossDef+)
971
<xsl:template match="glossentry" mode="glossary.as.blocks">
972
<xsl:variable name="id">
973
<xsl:call-template name="object.id"/>
976
<fo:block xsl:use-attribute-sets="glossterm.block.properties">
977
<xsl:call-template name="anchor">
978
<xsl:with-param name="conditional">
980
<xsl:when test="$glossterm.auto.link != 0
981
or $glossary.collection != ''">0</xsl:when>
982
<xsl:otherwise>1</xsl:otherwise>
988
<xsl:when test="$glossentry.show.acronym = 'primary'">
990
<xsl:when test="acronym|abbrev">
991
<xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
992
<xsl:text> (</xsl:text>
993
<xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
994
<xsl:text>)</xsl:text>
997
<xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
1002
<xsl:when test="$glossentry.show.acronym = 'yes'">
1003
<xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
1005
<xsl:if test="acronym|abbrev">
1006
<xsl:text> (</xsl:text>
1007
<xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/>
1008
<xsl:text>)</xsl:text>
1013
<xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/>
1017
<xsl:apply-templates select="indexterm"/>
1020
<fo:block xsl:use-attribute-sets="glossdef.block.properties">
1021
<xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.blocks"/>
1025
<xsl:template match="glossentry/glossterm" mode="glossary.as.blocks">
1026
<xsl:variable name="id">
1027
<xsl:call-template name="object.id"/>
1029
<fo:inline id="{$id}">
1030
<xsl:apply-templates/>
1032
<xsl:if test="following-sibling::glossterm">, </xsl:if>
1035
<xsl:template match="glossentry/acronym" mode="glossary.as.blocks">
1036
<xsl:apply-templates/>
1037
<xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
1040
<xsl:template match="glossentry/abbrev" mode="glossary.as.blocks">
1041
<xsl:apply-templates/>
1042
<xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if>
1045
<xsl:template match="glossentry/glosssee" mode="glossary.as.blocks">
1046
<xsl:variable name="otherterm" select="@otherterm"/>
1047
<xsl:variable name="targets" select="key('id', $otherterm)"/>
1048
<xsl:variable name="target" select="$targets[1]"/>
1049
<xsl:variable name="xlink" select="@xlink:href"/>
1051
<xsl:variable name="template">
1052
<xsl:call-template name="gentext.template">
1053
<xsl:with-param name="context" select="'glossary'"/>
1054
<xsl:with-param name="name" select="'see'"/>
1055
</xsl:call-template>
1057
<xsl:variable name="title">
1059
<xsl:when test="$target">
1060
<fo:basic-link internal-destination="{$otherterm}"
1061
xsl:use-attribute-sets="xref.properties">
1062
<xsl:apply-templates select="$target" mode="xref-to"/>
1065
<xsl:when test="$xlink">
1066
<xsl:call-template name="simple.xlink">
1067
<xsl:with-param name="content">
1068
<xsl:apply-templates/>
1070
</xsl:call-template>
1072
<xsl:when test="$otherterm != '' and not($target)">
1074
<xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text>
1075
<xsl:value-of select="$otherterm"/>
1077
<xsl:apply-templates mode="glossary.as.blocks"/>
1080
<xsl:apply-templates mode="glossary.as.blocks"/>
1084
<xsl:call-template name="substitute-markup">
1085
<xsl:with-param name="template" select="$template"/>
1086
<xsl:with-param name="title" select="$title"/>
1087
</xsl:call-template>
1090
<xsl:template match="glossentry/glossdef" mode="glossary.as.blocks">
1091
<xsl:apply-templates select="*[local-name(.) != 'glossseealso']"
1092
mode="glossary.as.blocks"/>
1093
<xsl:if test="glossseealso">
1095
<xsl:variable name="template">
1096
<xsl:call-template name="gentext.template">
1097
<xsl:with-param name="context" select="'glossary'"/>
1098
<xsl:with-param name="name" select="'seealso'"/>
1099
</xsl:call-template>
1101
<xsl:variable name="title">
1102
<xsl:apply-templates select="glossseealso" mode="glossary.as.blocks"/>
1104
<xsl:call-template name="substitute-markup">
1105
<xsl:with-param name="template" select="$template"/>
1106
<xsl:with-param name="title" select="$title"/>
1107
</xsl:call-template>
1112
<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]"
1113
mode="glossary.as.blocks">
1115
<xsl:apply-templates/>
1119
<!-- Handle any other glossdef content normally -->
1120
<xsl:template match="*" mode="glossary.as.blocks">
1121
<xsl:apply-templates select="." />
1124
<xsl:template match="glossseealso" mode="glossary.as.blocks">
1125
<xsl:variable name="otherterm" select="@otherterm"/>
1126
<xsl:variable name="targets" select="key('id', $otherterm)"/>
1127
<xsl:variable name="target" select="$targets[1]"/>
1128
<xsl:variable name="xlink" select="@xlink:href"/>
1131
<xsl:when test="$target">
1132
<fo:basic-link internal-destination="{$otherterm}"
1133
xsl:use-attribute-sets="xref.properties">
1134
<xsl:apply-templates select="$target" mode="xref-to"/>
1137
<xsl:when test="$xlink">
1138
<xsl:call-template name="simple.xlink">
1139
<xsl:with-param name="content">
1140
<xsl:apply-templates/>
1142
</xsl:call-template>
1144
<xsl:when test="$otherterm != '' and not($target)">
1146
<xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text>
1147
<xsl:value-of select="$otherterm"/>
1149
<xsl:apply-templates mode="glossary.as.blocks"/>
1152
<xsl:apply-templates mode="glossary.as.blocks"/>
1157
<xsl:when test="position() = last()"/>
1159
<xsl:call-template name="gentext.template">
1160
<xsl:with-param name="context" select="'glossary'"/>
1161
<xsl:with-param name="name" select="'seealso-separator'"/>
1162
</xsl:call-template>
1167
<!-- ==================================================================== -->