source: clfs-embedded/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/lists.xsl@ 29214ff

Last change on this file since 29214ff was 00b1e11, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Merged r8226 from new-xsl branch.

  • Property mode set to 100644
File size: 42.7 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$
8 ********************************************************************
9
10 This file is part of the XSL DocBook Stylesheet distribution.
11 See ../README or http://docbook.sf.net/release/xsl/current/ for
12 copyright and other information.
13
14 ******************************************************************** -->
15
16<!-- ==================================================================== -->
17
18<xsl:template match="itemizedlist">
19 <xsl:variable name="id">
20 <xsl:call-template name="object.id"/>
21 </xsl:variable>
22
23 <xsl:variable name="pi-label-width">
24 <xsl:call-template name="pi.dbfo_label-width"/>
25 </xsl:variable>
26
27 <xsl:variable name="label-width">
28 <xsl:choose>
29 <xsl:when test="$pi-label-width = ''">
30 <xsl:value-of select="$itemizedlist.label.width"/>
31 </xsl:when>
32 <xsl:otherwise>
33 <xsl:value-of select="$pi-label-width"/>
34 </xsl:otherwise>
35 </xsl:choose>
36 </xsl:variable>
37
38 <xsl:if test="title">
39 <xsl:apply-templates select="title" mode="list.title.mode"/>
40 </xsl:if>
41
42 <!-- Preserve order of PIs and comments -->
43 <xsl:apply-templates
44 select="*[not(self::listitem
45 or self::title
46 or self::titleabbrev)]
47 |comment()[not(preceding-sibling::listitem)]
48 |processing-instruction()[not(preceding-sibling::listitem)]"/>
49
50 <xsl:variable name="content">
51 <xsl:apply-templates
52 select="listitem
53 |comment()[preceding-sibling::listitem]
54 |processing-instruction()[preceding-sibling::listitem]"/>
55 </xsl:variable>
56
57 <!-- nested lists don't add extra list-block spacing -->
58 <xsl:choose>
59 <xsl:when test="ancestor::listitem">
60 <fo:list-block id="{$id}" xsl:use-attribute-sets="itemizedlist.properties">
61 <xsl:attribute name="provisional-distance-between-starts">
62 <xsl:value-of select="$label-width"/>
63 </xsl:attribute>
64 <xsl:copy-of select="$content"/>
65 </fo:list-block>
66 </xsl:when>
67 <xsl:otherwise>
68 <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing itemizedlist.properties">
69 <xsl:attribute name="provisional-distance-between-starts">
70 <xsl:value-of select="$label-width"/>
71 </xsl:attribute>
72 <xsl:copy-of select="$content"/>
73 </fo:list-block>
74 </xsl:otherwise>
75 </xsl:choose>
76
77</xsl:template>
78
79<xsl:template match="itemizedlist/title|orderedlist/title">
80 <!--nop-->
81</xsl:template>
82
83<xsl:template match="variablelist/title" mode="vl.as.list">
84 <!--nop-->
85</xsl:template>
86
87<xsl:template match="variablelist/title" mode="vl.as.blocks">
88 <!--nop-->
89</xsl:template>
90
91<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
92 <!--nop-->
93</xsl:template>
94
95<xsl:template match="procedure/titleabbrev">
96 <!--nop-->
97</xsl:template>
98
99<xsl:template match="variablelist/titleabbrev" mode="vl.as.list">
100 <!--nop-->
101</xsl:template>
102
103<xsl:template match="variablelist/titleabbrev" mode="vl.as.blocks">
104 <!--nop-->
105</xsl:template>
106
107<xsl:template match="itemizedlist/listitem">
108 <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
109
110 <xsl:variable name="item.contents">
111 <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="itemizedlist.label.properties">
112 <fo:block>
113 <xsl:call-template name="itemizedlist.label.markup">
114 <xsl:with-param name="itemsymbol">
115 <xsl:call-template name="list.itemsymbol">
116 <xsl:with-param name="node" select="parent::itemizedlist"/>
117 </xsl:call-template>
118 </xsl:with-param>
119 </xsl:call-template>
120 </fo:block>
121 </fo:list-item-label>
122 <fo:list-item-body start-indent="body-start()">
123 <xsl:choose>
124 <!-- * work around broken passivetex list-item-body rendering -->
125 <xsl:when test="$passivetex.extensions = '1'">
126 <xsl:apply-templates/>
127 </xsl:when>
128 <xsl:otherwise>
129 <fo:block>
130 <xsl:apply-templates/>
131 </fo:block>
132 </xsl:otherwise>
133 </xsl:choose>
134 </fo:list-item-body>
135 </xsl:variable>
136
137 <xsl:choose>
138 <xsl:when test="parent::*/@spacing = 'compact'">
139 <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing">
140 <xsl:copy-of select="$item.contents"/>
141 </fo:list-item>
142 </xsl:when>
143 <xsl:otherwise>
144 <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
145 <xsl:copy-of select="$item.contents"/>
146 </fo:list-item>
147 </xsl:otherwise>
148 </xsl:choose>
149</xsl:template>
150
151<xsl:template name="itemizedlist.label.markup">
152 <xsl:param name="itemsymbol" select="'disc'"/>
153
154 <xsl:choose>
155 <xsl:when test="$itemsymbol='none'"></xsl:when>
156 <xsl:when test="$itemsymbol='disc'">&#x2022;</xsl:when>
157 <xsl:when test="$itemsymbol='bullet'">&#x2022;</xsl:when>
158 <xsl:when test="$itemsymbol='endash'">&#x2013;</xsl:when>
159 <xsl:when test="$itemsymbol='emdash'">&#x2014;</xsl:when>
160 <!-- Some of these may work in your XSL-FO processor and fonts -->
161 <!--
162 <xsl:when test="$itemsymbol='square'">&#x25A0;</xsl:when>
163 <xsl:when test="$itemsymbol='box'">&#x25A0;</xsl:when>
164 <xsl:when test="$itemsymbol='smallblacksquare'">&#x25AA;</xsl:when>
165 <xsl:when test="$itemsymbol='circle'">&#x25CB;</xsl:when>
166 <xsl:when test="$itemsymbol='opencircle'">&#x25CB;</xsl:when>
167 <xsl:when test="$itemsymbol='whitesquare'">&#x25A1;</xsl:when>
168 <xsl:when test="$itemsymbol='smallwhitesquare'">&#x25AB;</xsl:when>
169 <xsl:when test="$itemsymbol='round'">&#x25CF;</xsl:when>
170 <xsl:when test="$itemsymbol='blackcircle'">&#x25CF;</xsl:when>
171 <xsl:when test="$itemsymbol='whitebullet'">&#x25E6;</xsl:when>
172 <xsl:when test="$itemsymbol='triangle'">&#x2023;</xsl:when>
173 <xsl:when test="$itemsymbol='point'">&#x203A;</xsl:when>
174 <xsl:when test="$itemsymbol='hand'"><fo:inline
175 font-family="Wingdings 2">A</fo:inline></xsl:when>
176 -->
177 <xsl:otherwise>&#x2022;</xsl:otherwise>
178 </xsl:choose>
179</xsl:template>
180
181<xsl:template match="orderedlist">
182 <xsl:variable name="id">
183 <xsl:call-template name="object.id"/>
184 </xsl:variable>
185
186 <xsl:variable name="pi-label-width">
187 <xsl:call-template name="pi.dbfo_label-width"/>
188 </xsl:variable>
189
190 <xsl:variable name="label-width">
191 <xsl:choose>
192 <xsl:when test="$pi-label-width = ''">
193 <xsl:value-of select="$orderedlist.label.width"/>
194 </xsl:when>
195 <xsl:otherwise>
196 <xsl:value-of select="$pi-label-width"/>
197 </xsl:otherwise>
198 </xsl:choose>
199 </xsl:variable>
200
201 <xsl:if test="title">
202 <xsl:apply-templates select="title" mode="list.title.mode"/>
203 </xsl:if>
204
205 <!-- Preserve order of PIs and comments -->
206 <xsl:apply-templates
207 select="*[not(self::listitem
208 or self::title
209 or self::titleabbrev)]
210 |comment()[not(preceding-sibling::listitem)]
211 |processing-instruction()[not(preceding-sibling::listitem)]"/>
212
213 <xsl:variable name="content">
214 <xsl:apply-templates
215 select="listitem
216 |comment()[preceding-sibling::listitem]
217 |processing-instruction()[preceding-sibling::listitem]"/>
218 </xsl:variable>
219
220 <!-- nested lists don't add extra list-block spacing -->
221 <xsl:choose>
222 <xsl:when test="ancestor::listitem">
223 <fo:list-block id="{$id}" xsl:use-attribute-sets="orderedlist.properties">
224 <xsl:attribute name="provisional-distance-between-starts">
225 <xsl:value-of select="$label-width"/>
226 </xsl:attribute>
227 <xsl:copy-of select="$content"/>
228 </fo:list-block>
229 </xsl:when>
230 <xsl:otherwise>
231 <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing orderedlist.properties">
232 <xsl:attribute name="provisional-distance-between-starts">
233 <xsl:value-of select="$label-width"/>
234 </xsl:attribute>
235 <xsl:copy-of select="$content"/>
236 </fo:list-block>
237 </xsl:otherwise>
238 </xsl:choose>
239</xsl:template>
240
241<xsl:template match="orderedlist/listitem" mode="item-number">
242 <xsl:variable name="numeration">
243 <xsl:call-template name="list.numeration">
244 <xsl:with-param name="node" select="parent::orderedlist"/>
245 </xsl:call-template>
246 </xsl:variable>
247
248 <xsl:variable name="type">
249 <xsl:choose>
250 <xsl:when test="$numeration='arabic'">1.</xsl:when>
251 <xsl:when test="$numeration='loweralpha'">a.</xsl:when>
252 <xsl:when test="$numeration='lowerroman'">i.</xsl:when>
253 <xsl:when test="$numeration='upperalpha'">A.</xsl:when>
254 <xsl:when test="$numeration='upperroman'">I.</xsl:when>
255 <!-- What!? This should never happen -->
256 <xsl:otherwise>
257 <xsl:message>
258 <xsl:text>Unexpected numeration: </xsl:text>
259 <xsl:value-of select="$numeration"/>
260 </xsl:message>
261 <xsl:value-of select="1."/>
262 </xsl:otherwise>
263 </xsl:choose>
264 </xsl:variable>
265
266 <xsl:variable name="item-number">
267 <xsl:call-template name="orderedlist-item-number"/>
268 </xsl:variable>
269
270 <xsl:if test="parent::orderedlist/@inheritnum='inherit'
271 and ancestor::listitem[parent::orderedlist]">
272 <xsl:apply-templates select="ancestor::listitem[parent::orderedlist][1]"
273 mode="item-number"/>
274 </xsl:if>
275
276 <xsl:number value="$item-number" format="{$type}"/>
277</xsl:template>
278
279<xsl:template match="orderedlist/listitem">
280 <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
281
282 <xsl:variable name="item.contents">
283 <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="orderedlist.label.properties">
284 <fo:block>
285 <xsl:apply-templates select="." mode="item-number"/>
286 </fo:block>
287 </fo:list-item-label>
288 <fo:list-item-body start-indent="body-start()">
289 <fo:block>
290 <xsl:apply-templates/>
291 </fo:block>
292 </fo:list-item-body>
293 </xsl:variable>
294
295 <xsl:choose>
296 <xsl:when test="parent::*/@spacing = 'compact'">
297 <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing">
298 <xsl:copy-of select="$item.contents"/>
299 </fo:list-item>
300 </xsl:when>
301 <xsl:otherwise>
302 <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
303 <xsl:copy-of select="$item.contents"/>
304 </fo:list-item>
305 </xsl:otherwise>
306 </xsl:choose>
307</xsl:template>
308
309<xsl:template match="listitem/*[1][local-name()='para' or
310 local-name()='simpara' or
311 local-name()='formalpara']
312 |glossdef/*[1][local-name()='para' or
313 local-name()='simpara' or
314 local-name()='formalpara']
315 |step/*[1][local-name()='para' or
316 local-name()='simpara' or
317 local-name()='formalpara']
318 |callout/*[1][local-name()='para' or
319 local-name()='simpara' or
320 local-name()='formalpara']"
321 priority="2">
322 <fo:block>
323 <xsl:call-template name="anchor"/>
324 <xsl:apply-templates/>
325 </fo:block>
326</xsl:template>
327
328<xsl:template match="variablelist">
329 <xsl:variable name="presentation">
330 <xsl:call-template name="pi.dbfo_list-presentation"/>
331 </xsl:variable>
332
333 <xsl:choose>
334 <xsl:when test="$presentation = 'list'">
335 <xsl:apply-templates select="." mode="vl.as.list"/>
336 </xsl:when>
337 <xsl:when test="$presentation = 'blocks'">
338 <xsl:apply-templates select="." mode="vl.as.blocks"/>
339 </xsl:when>
340 <xsl:when test="$variablelist.as.blocks != 0">
341 <xsl:apply-templates select="." mode="vl.as.blocks"/>
342 </xsl:when>
343 <xsl:otherwise>
344 <xsl:apply-templates select="." mode="vl.as.list"/>
345 </xsl:otherwise>
346 </xsl:choose>
347</xsl:template>
348
349<xsl:template match="variablelist" mode="vl.as.list">
350 <xsl:variable name="id">
351 <xsl:call-template name="object.id"/>
352 </xsl:variable>
353
354 <xsl:variable name="term-width">
355 <xsl:call-template name="pi.dbfo_term-width"/>
356 </xsl:variable>
357
358 <xsl:variable name="termlength">
359 <xsl:choose>
360 <xsl:when test="$term-width != ''">
361 <xsl:value-of select="$term-width"/>
362 </xsl:when>
363 <xsl:when test="@termlength">
364 <xsl:variable name="termlength.is.number">
365 <xsl:value-of select="@termlength + 0"/>
366 </xsl:variable>
367 <xsl:choose>
368 <xsl:when test="string($termlength.is.number) = 'NaN'">
369 <!-- if the term length isn't just a number, assume it's a measurement -->
370 <xsl:value-of select="@termlength"/>
371 </xsl:when>
372 <xsl:otherwise>
373 <xsl:value-of select="@termlength"/>
374 <xsl:choose>
375 <!-- workaround for passivetex lack of support for non-constant expressions -->
376 <xsl:when test="$passivetex.extensions != 0">
377 <xsl:text>em</xsl:text>
378 </xsl:when>
379 <xsl:otherwise>
380 <xsl:text>em * 0.60</xsl:text>
381 </xsl:otherwise>
382 </xsl:choose>
383 </xsl:otherwise>
384 </xsl:choose>
385 </xsl:when>
386 <xsl:otherwise>
387 <xsl:call-template name="longest.term">
388 <xsl:with-param name="terms" select="varlistentry/term"/>
389 <xsl:with-param name="maxlength" select="$variablelist.max.termlength"/>
390 </xsl:call-template>
391 <xsl:choose>
392 <!-- workaround for passivetex lack of support for non-constant expressions -->
393 <xsl:when test="$passivetex.extensions != 0">
394 <xsl:text>em</xsl:text>
395 </xsl:when>
396 <xsl:otherwise>
397 <xsl:text>em * 0.60</xsl:text>
398 </xsl:otherwise>
399 </xsl:choose>
400 </xsl:otherwise>
401 </xsl:choose>
402 </xsl:variable>
403
404<!--
405 <xsl:message>
406 <xsl:text>term width: </xsl:text>
407 <xsl:value-of select="$termlength"/>
408 </xsl:message>
409-->
410
411 <xsl:variable name="label-separation">1em</xsl:variable>
412 <xsl:variable name="distance-between-starts">
413 <xsl:choose>
414 <!-- workaround for passivetex lack of support for non-constant expressions -->
415 <xsl:when test="$passivetex.extensions != 0">
416 <xsl:value-of select="$termlength"/>
417 </xsl:when>
418 <xsl:otherwise>
419 <xsl:value-of select="$termlength"/>
420 <xsl:text>+</xsl:text>
421 <xsl:value-of select="$label-separation"/>
422 </xsl:otherwise>
423 </xsl:choose>
424 </xsl:variable>
425
426 <xsl:if test="title">
427 <xsl:apply-templates select="title" mode="list.title.mode"/>
428 </xsl:if>
429
430 <!-- Preserve order of PIs and comments -->
431 <xsl:apply-templates
432 select="*[not(self::varlistentry
433 or self::title
434 or self::titleabbrev)]
435 |comment()[not(preceding-sibling::varlistentry)]
436 |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
437
438 <xsl:variable name="content">
439 <xsl:apply-templates mode="vl.as.list"
440 select="varlistentry
441 |comment()[preceding-sibling::varlistentry]
442 |processing-instruction()[preceding-sibling::varlistentry]"/>
443 </xsl:variable>
444
445 <!-- nested lists don't add extra list-block spacing -->
446 <xsl:choose>
447 <xsl:when test="ancestor::listitem">
448 <fo:list-block id="{$id}"
449 provisional-distance-between-starts=
450 "{$distance-between-starts}"
451 provisional-label-separation="{$label-separation}">
452 <xsl:copy-of select="$content"/>
453 </fo:list-block>
454 </xsl:when>
455 <xsl:otherwise>
456 <fo:list-block id="{$id}"
457 provisional-distance-between-starts=
458 "{$distance-between-starts}"
459 provisional-label-separation="{$label-separation}"
460 xsl:use-attribute-sets="list.block.spacing">
461 <xsl:copy-of select="$content"/>
462 </fo:list-block>
463 </xsl:otherwise>
464 </xsl:choose>
465</xsl:template>
466
467<xsl:template name="longest.term">
468 <xsl:param name="longest" select="0"/>
469 <xsl:param name="terms" select="."/>
470 <xsl:param name="maxlength" select="-1"/>
471
472 <!-- Process out any indexterms in the term -->
473 <xsl:variable name="term.text">
474 <xsl:apply-templates select="$terms[1]"/>
475 </xsl:variable>
476
477 <xsl:choose>
478 <xsl:when test="$longest &gt; $maxlength and $maxlength &gt; 0">
479 <xsl:value-of select="$maxlength"/>
480 </xsl:when>
481 <xsl:when test="not($terms)">
482 <xsl:value-of select="$longest"/>
483 </xsl:when>
484 <xsl:when test="string-length($term.text) &gt; $longest">
485 <xsl:call-template name="longest.term">
486 <xsl:with-param name="longest"
487 select="string-length($term.text)"/>
488 <xsl:with-param name="maxlength" select="$maxlength"/>
489 <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
490 </xsl:call-template>
491 </xsl:when>
492 <xsl:otherwise>
493 <xsl:call-template name="longest.term">
494 <xsl:with-param name="longest" select="$longest"/>
495 <xsl:with-param name="maxlength" select="$maxlength"/>
496 <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
497 </xsl:call-template>
498 </xsl:otherwise>
499 </xsl:choose>
500</xsl:template>
501
502<xsl:template match="varlistentry" mode="vl.as.list">
503 <xsl:variable name="id">
504 <xsl:call-template name="object.id"/>
505 </xsl:variable>
506 <xsl:variable name="item.contents">
507 <fo:list-item-label end-indent="label-end()" text-align="start">
508 <fo:block>
509 <xsl:apply-templates select="term"/>
510 </fo:block>
511 </fo:list-item-label>
512 <fo:list-item-body start-indent="body-start()">
513 <fo:block>
514 <xsl:apply-templates select="listitem"/>
515 </fo:block>
516 </fo:list-item-body>
517 </xsl:variable>
518
519 <xsl:choose>
520 <xsl:when test="parent::*/@spacing = 'compact'">
521 <fo:list-item id="{$id}"
522 xsl:use-attribute-sets="compact.list.item.spacing">
523 <xsl:copy-of select="$item.contents"/>
524 </fo:list-item>
525 </xsl:when>
526 <xsl:otherwise>
527 <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
528 <xsl:copy-of select="$item.contents"/>
529 </fo:list-item>
530 </xsl:otherwise>
531 </xsl:choose>
532</xsl:template>
533
534
535<xsl:template match="variablelist" mode="vl.as.blocks">
536 <xsl:variable name="id">
537 <xsl:call-template name="object.id"/>
538 </xsl:variable>
539
540 <!-- termlength is irrelevant -->
541
542 <xsl:if test="title">
543 <xsl:apply-templates select="title" mode="list.title.mode"/>
544 </xsl:if>
545
546 <!-- Preserve order of PIs and comments -->
547 <xsl:apply-templates
548 select="*[not(self::varlistentry
549 or self::title
550 or self::titleabbrev)]
551 |comment()[not(preceding-sibling::varlistentry)]
552 |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
553
554 <xsl:variable name="content">
555 <xsl:apply-templates mode="vl.as.blocks"
556 select="varlistentry
557 |comment()[preceding-sibling::varlistentry]
558 |processing-instruction()[preceding-sibling::varlistentry]"/>
559 </xsl:variable>
560
561 <!-- nested lists don't add extra list-block spacing -->
562 <xsl:choose>
563 <xsl:when test="ancestor::listitem">
564 <fo:block id="{$id}">
565 <xsl:copy-of select="$content"/>
566 </fo:block>
567 </xsl:when>
568 <xsl:otherwise>
569 <fo:block id="{$id}" xsl:use-attribute-sets="list.block.spacing">
570 <xsl:copy-of select="$content"/>
571 </fo:block>
572 </xsl:otherwise>
573 </xsl:choose>
574</xsl:template>
575
576<xsl:template match="varlistentry" mode="vl.as.blocks">
577 <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
578
579 <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing"
580 keep-together.within-column="always"
581 keep-with-next.within-column="always">
582 <xsl:apply-templates select="term"/>
583 </fo:block>
584
585 <fo:block margin-left="0.25in">
586 <xsl:apply-templates select="listitem"/>
587 </fo:block>
588</xsl:template>
589
590<xsl:template match="varlistentry/term">
591 <fo:inline>
592 <xsl:call-template name="simple.xlink">
593 <xsl:with-param name="content">
594 <xsl:apply-templates/>
595 </xsl:with-param>
596 </xsl:call-template>
597 </fo:inline>
598 <xsl:choose>
599 <xsl:when test="not(following-sibling::term)"/> <!-- do nothing -->
600 <xsl:otherwise>
601 <!-- * if we have multiple terms in the same varlistentry, generate -->
602 <!-- * a separator (", " by default) and/or an additional line -->
603 <!-- * break after each one except the last -->
604 <fo:inline><xsl:value-of select="$variablelist.term.separator"/></fo:inline>
605 <xsl:if test="not($variablelist.term.break.after = '0')">
606 <fo:block/>
607 </xsl:if>
608 </xsl:otherwise>
609 </xsl:choose>
610</xsl:template>
611
612<xsl:template match="varlistentry/listitem">
613 <xsl:apply-templates/>
614</xsl:template>
615
616<!-- ==================================================================== -->
617
618<xsl:template match="title" mode="list.title.mode">
619 <xsl:call-template name="formal.object.heading">
620 <xsl:with-param name="object" select=".."/>
621 </xsl:call-template>
622</xsl:template>
623
624<!-- ==================================================================== -->
625
626<xsl:template match="simplelist|simplelist[@type='vert']">
627 <!-- with no type specified, the default is 'vert' -->
628
629 <xsl:variable name="explicit.table.width">
630 <xsl:call-template name="dbfo-attribute">
631 <xsl:with-param name="pis"
632 select="processing-instruction('dbfo')"/>
633 <xsl:with-param name="attribute" select="'list-width'"/>
634 </xsl:call-template>
635 </xsl:variable>
636
637 <xsl:variable name="table.width">
638 <xsl:choose>
639 <xsl:when test="$explicit.table.width != ''">
640 <xsl:value-of select="$explicit.table.width"/>
641 </xsl:when>
642 <xsl:when test="$default.table.width = ''">
643 <xsl:text>100%</xsl:text>
644 </xsl:when>
645 <xsl:otherwise>
646 <xsl:value-of select="$default.table.width"/>
647 </xsl:otherwise>
648 </xsl:choose>
649 </xsl:variable>
650
651 <fo:table xsl:use-attribute-sets="normal.para.spacing">
652
653 <xsl:choose>
654 <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0">
655 <xsl:attribute name="table-layout">auto</xsl:attribute>
656 <xsl:if test="$explicit.table.width != ''">
657 <xsl:attribute name="width"><xsl:value-of
658 select="$explicit.table.width"/></xsl:attribute>
659 </xsl:if>
660 </xsl:when>
661 <xsl:otherwise>
662 <xsl:attribute name="table-layout">fixed</xsl:attribute>
663 <xsl:attribute name="width"><xsl:value-of
664 select="$table.width"/></xsl:attribute>
665 </xsl:otherwise>
666 </xsl:choose>
667
668 <xsl:call-template name="simplelist.table.columns">
669 <xsl:with-param name="cols">
670 <xsl:choose>
671 <xsl:when test="@columns">
672 <xsl:value-of select="@columns"/>
673 </xsl:when>
674 <xsl:otherwise>1</xsl:otherwise>
675 </xsl:choose>
676 </xsl:with-param>
677 </xsl:call-template>
678 <fo:table-body start-indent="0pt" end-indent="0pt">
679 <xsl:call-template name="simplelist.vert">
680 <xsl:with-param name="cols">
681 <xsl:choose>
682 <xsl:when test="@columns">
683 <xsl:value-of select="@columns"/>
684 </xsl:when>
685 <xsl:otherwise>1</xsl:otherwise>
686 </xsl:choose>
687 </xsl:with-param>
688 </xsl:call-template>
689 </fo:table-body>
690 </fo:table>
691</xsl:template>
692
693<xsl:template match="simplelist[@type='inline']">
694 <!-- if dbchoice PI exists, use that to determine the choice separator -->
695 <!-- (that is, equivalent of "and" or "or" in current locale), or literal -->
696 <!-- value of "choice" otherwise -->
697 <fo:inline><xsl:variable name="localized-choice-separator">
698 <xsl:choose>
699 <xsl:when test="processing-instruction('dbchoice')">
700 <xsl:call-template name="select.choice.separator"/>
701 </xsl:when>
702 <xsl:otherwise>
703 <!-- empty -->
704 </xsl:otherwise>
705 </xsl:choose>
706 </xsl:variable>
707
708 <xsl:for-each select="member">
709 <xsl:apply-templates/>
710 <xsl:choose>
711 <xsl:when test="position() = last()"/> <!-- do nothing -->
712 <xsl:otherwise>
713 <xsl:text>, </xsl:text>
714 <xsl:if test="position() = last() - 1">
715 <xsl:if test="$localized-choice-separator != ''">
716 <xsl:value-of select="$localized-choice-separator"/>
717 <xsl:text> </xsl:text>
718 </xsl:if>
719 </xsl:if>
720 </xsl:otherwise>
721 </xsl:choose>
722 </xsl:for-each></fo:inline>
723</xsl:template>
724
725<xsl:template match="simplelist[@type='horiz']">
726
727 <xsl:variable name="explicit.table.width">
728 <xsl:call-template name="pi.dbfo_list-width"/>
729 </xsl:variable>
730
731 <xsl:variable name="table.width">
732 <xsl:choose>
733 <xsl:when test="$explicit.table.width != ''">
734 <xsl:value-of select="$explicit.table.width"/>
735 </xsl:when>
736 <xsl:when test="$default.table.width = ''">
737 <xsl:text>100%</xsl:text>
738 </xsl:when>
739 <xsl:otherwise>
740 <xsl:value-of select="$default.table.width"/>
741 </xsl:otherwise>
742 </xsl:choose>
743 </xsl:variable>
744
745 <fo:table xsl:use-attribute-sets="normal.para.spacing">
746 <xsl:choose>
747 <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0">
748 <xsl:attribute name="table-layout">auto</xsl:attribute>
749 <xsl:if test="$explicit.table.width != ''">
750 <xsl:attribute name="width"><xsl:value-of
751 select="$explicit.table.width"/></xsl:attribute>
752 </xsl:if>
753 </xsl:when>
754 <xsl:otherwise>
755 <xsl:attribute name="table-layout">fixed</xsl:attribute>
756 <xsl:attribute name="width"><xsl:value-of
757 select="$table.width"/></xsl:attribute>
758 </xsl:otherwise>
759 </xsl:choose>
760 <xsl:call-template name="simplelist.table.columns">
761 <xsl:with-param name="cols">
762 <xsl:choose>
763 <xsl:when test="@columns">
764 <xsl:value-of select="@columns"/>
765 </xsl:when>
766 <xsl:otherwise>1</xsl:otherwise>
767 </xsl:choose>
768 </xsl:with-param>
769 </xsl:call-template>
770 <fo:table-body start-indent="0pt" end-indent="0pt">
771 <xsl:call-template name="simplelist.horiz">
772 <xsl:with-param name="cols">
773 <xsl:choose>
774 <xsl:when test="@columns">
775 <xsl:value-of select="@columns"/>
776 </xsl:when>
777 <xsl:otherwise>1</xsl:otherwise>
778 </xsl:choose>
779 </xsl:with-param>
780 </xsl:call-template>
781 </fo:table-body>
782 </fo:table>
783</xsl:template>
784
785<xsl:template name="simplelist.table.columns">
786 <xsl:param name="cols" select="1"/>
787 <xsl:param name="curcol" select="1"/>
788 <fo:table-column column-number="{$curcol}"
789 column-width="proportional-column-width(1)"/>
790 <xsl:if test="$curcol &lt; $cols">
791 <xsl:call-template name="simplelist.table.columns">
792 <xsl:with-param name="cols" select="$cols"/>
793 <xsl:with-param name="curcol" select="$curcol + 1"/>
794 </xsl:call-template>
795 </xsl:if>
796</xsl:template>
797
798<xsl:template name="simplelist.horiz">
799 <xsl:param name="cols">1</xsl:param>
800 <xsl:param name="cell">1</xsl:param>
801 <xsl:param name="members" select="./member"/>
802
803 <xsl:if test="$cell &lt;= count($members)">
804 <fo:table-row>
805 <xsl:call-template name="simplelist.horiz.row">
806 <xsl:with-param name="cols" select="$cols"/>
807 <xsl:with-param name="cell" select="$cell"/>
808 <xsl:with-param name="members" select="$members"/>
809 </xsl:call-template>
810 </fo:table-row>
811 <xsl:call-template name="simplelist.horiz">
812 <xsl:with-param name="cols" select="$cols"/>
813 <xsl:with-param name="cell" select="$cell + $cols"/>
814 <xsl:with-param name="members" select="$members"/>
815 </xsl:call-template>
816 </xsl:if>
817</xsl:template>
818
819<xsl:template name="simplelist.horiz.row">
820 <xsl:param name="cols">1</xsl:param>
821 <xsl:param name="cell">1</xsl:param>
822 <xsl:param name="members" select="./member"/>
823 <xsl:param name="curcol">1</xsl:param>
824
825 <xsl:if test="$curcol &lt;= $cols">
826 <fo:table-cell>
827 <fo:block>
828 <xsl:if test="$members[position()=$cell]">
829 <xsl:apply-templates select="$members[position()=$cell]"/>
830 </xsl:if>
831 </fo:block>
832 </fo:table-cell>
833 <xsl:call-template name="simplelist.horiz.row">
834 <xsl:with-param name="cols" select="$cols"/>
835 <xsl:with-param name="cell" select="$cell+1"/>
836 <xsl:with-param name="members" select="$members"/>
837 <xsl:with-param name="curcol" select="$curcol+1"/>
838 </xsl:call-template>
839 </xsl:if>
840</xsl:template>
841
842<xsl:template name="simplelist.vert">
843 <xsl:param name="cols">1</xsl:param>
844 <xsl:param name="cell">1</xsl:param>
845 <xsl:param name="members" select="./member"/>
846 <xsl:param name="rows"
847 select="floor((count($members)+$cols - 1) div $cols)"/>
848
849 <xsl:if test="$cell &lt;= $rows">
850 <fo:table-row>
851 <xsl:call-template name="simplelist.vert.row">
852 <xsl:with-param name="cols" select="$cols"/>
853 <xsl:with-param name="rows" select="$rows"/>
854 <xsl:with-param name="cell" select="$cell"/>
855 <xsl:with-param name="members" select="$members"/>
856 </xsl:call-template>
857 </fo:table-row>
858 <xsl:call-template name="simplelist.vert">
859 <xsl:with-param name="cols" select="$cols"/>
860 <xsl:with-param name="cell" select="$cell+1"/>
861 <xsl:with-param name="members" select="$members"/>
862 <xsl:with-param name="rows" select="$rows"/>
863 </xsl:call-template>
864 </xsl:if>
865</xsl:template>
866
867<xsl:template name="simplelist.vert.row">
868 <xsl:param name="cols">1</xsl:param>
869 <xsl:param name="rows">1</xsl:param>
870 <xsl:param name="cell">1</xsl:param>
871 <xsl:param name="members" select="./member"/>
872 <xsl:param name="curcol">1</xsl:param>
873
874 <xsl:if test="$curcol &lt;= $cols">
875 <fo:table-cell>
876 <fo:block>
877 <xsl:if test="$members[position()=$cell]">
878 <xsl:apply-templates select="$members[position()=$cell]"/>
879 </xsl:if>
880 </fo:block>
881 </fo:table-cell>
882 <xsl:call-template name="simplelist.vert.row">
883 <xsl:with-param name="cols" select="$cols"/>
884 <xsl:with-param name="rows" select="$rows"/>
885 <xsl:with-param name="cell" select="$cell+$rows"/>
886 <xsl:with-param name="members" select="$members"/>
887 <xsl:with-param name="curcol" select="$curcol+1"/>
888 </xsl:call-template>
889 </xsl:if>
890</xsl:template>
891
892<xsl:template match="member">
893 <xsl:call-template name="simple.xlink">
894 <xsl:with-param name="content">
895 <xsl:apply-templates/>
896 </xsl:with-param>
897 </xsl:call-template>
898</xsl:template>
899
900<!-- ==================================================================== -->
901
902<xsl:template match="procedure">
903 <xsl:variable name="id">
904 <xsl:call-template name="object.id"/>
905 </xsl:variable>
906
907 <xsl:variable name="param.placement"
908 select="substring-after(normalize-space($formal.title.placement),
909 concat(local-name(.), ' '))"/>
910
911 <xsl:variable name="placement">
912 <xsl:choose>
913 <xsl:when test="contains($param.placement, ' ')">
914 <xsl:value-of select="substring-before($param.placement, ' ')"/>
915 </xsl:when>
916 <xsl:when test="$param.placement = ''">before</xsl:when>
917 <xsl:otherwise>
918 <xsl:value-of select="$param.placement"/>
919 </xsl:otherwise>
920 </xsl:choose>
921 </xsl:variable>
922
923 <!-- Preserve order of PIs and comments -->
924 <xsl:variable name="preamble"
925 select="*[not(self::step
926 or self::title
927 or self::titleabbrev)]
928 |comment()[not(preceding-sibling::step)]
929 |processing-instruction()[not(preceding-sibling::step)]"/>
930
931 <xsl:variable name="steps"
932 select="step
933 |comment()[preceding-sibling::step]
934 |processing-instruction()[preceding-sibling::step]"/>
935
936 <fo:block id="{$id}" xsl:use-attribute-sets="procedure.properties list.block.spacing">
937 <xsl:if test="./title and $placement = 'before'">
938 <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
939 <!-- heading even though we called formal.object.heading. odd but true. -->
940 <xsl:call-template name="formal.object.heading"/>
941 </xsl:if>
942
943 <xsl:apply-templates select="$preamble"/>
944
945 <fo:list-block xsl:use-attribute-sets="list.block.spacing"
946 provisional-distance-between-starts="2em"
947 provisional-label-separation="0.2em">
948 <xsl:apply-templates select="$steps"/>
949 </fo:list-block>
950
951 <xsl:if test="./title and $placement != 'before'">
952 <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
953 <!-- heading even though we called formal.object.heading. odd but true. -->
954 <xsl:call-template name="formal.object.heading"/>
955 </xsl:if>
956 </fo:block>
957</xsl:template>
958
959<xsl:template match="procedure/title">
960</xsl:template>
961
962<xsl:template match="substeps">
963 <fo:list-block xsl:use-attribute-sets="list.block.spacing"
964 provisional-distance-between-starts="2em"
965 provisional-label-separation="0.2em">
966 <xsl:apply-templates/>
967 </fo:list-block>
968</xsl:template>
969
970<xsl:template match="procedure/step|substeps/step">
971 <xsl:variable name="id">
972 <xsl:call-template name="object.id"/>
973 </xsl:variable>
974
975 <fo:list-item xsl:use-attribute-sets="list.item.spacing">
976 <fo:list-item-label end-indent="label-end()">
977 <fo:block id="{$id}">
978 <!-- dwc: fix for one step procedures. Use a bullet if there's no step 2 -->
979 <xsl:choose>
980 <xsl:when test="count(../step) = 1">
981 <xsl:text>&#x2022;</xsl:text>
982 </xsl:when>
983 <xsl:otherwise>
984 <xsl:apply-templates select="." mode="number">
985 <xsl:with-param name="recursive" select="0"/>
986 </xsl:apply-templates>.
987 </xsl:otherwise>
988 </xsl:choose>
989 </fo:block>
990 </fo:list-item-label>
991 <fo:list-item-body start-indent="body-start()">
992 <fo:block>
993 <xsl:apply-templates/>
994 </fo:block>
995 </fo:list-item-body>
996 </fo:list-item>
997</xsl:template>
998
999<xsl:template match="stepalternatives">
1000 <fo:list-block provisional-distance-between-starts="2em"
1001 provisional-label-separation="0.2em">
1002 <xsl:apply-templates select="step"/>
1003 </fo:list-block>
1004</xsl:template>
1005
1006<xsl:template match="stepalternatives/step">
1007 <xsl:variable name="id">
1008 <xsl:call-template name="object.id"/>
1009 </xsl:variable>
1010
1011 <fo:list-item xsl:use-attribute-sets="list.item.spacing">
1012 <fo:list-item-label end-indent="label-end()">
1013 <fo:block id="{$id}">
1014 <xsl:text>&#x2022;</xsl:text>
1015 </fo:block>
1016 </fo:list-item-label>
1017 <fo:list-item-body start-indent="body-start()">
1018 <fo:block>
1019 <xsl:apply-templates/>
1020 </fo:block>
1021 </fo:list-item-body>
1022 </fo:list-item>
1023</xsl:template>
1024
1025<xsl:template match="step/title">
1026 <fo:block font-weight="bold"
1027 keep-together.within-column="always"
1028 keep-with-next.within-column="always">
1029 <xsl:apply-templates/>
1030 </fo:block>
1031</xsl:template>
1032
1033<!-- ==================================================================== -->
1034
1035<xsl:template match="segmentedlist">
1036 <xsl:variable name="presentation">
1037 <xsl:call-template name="pi.dbfo_list-presentation"/>
1038 </xsl:variable>
1039
1040 <xsl:variable name="id">
1041 <xsl:call-template name="object.id"/>
1042 </xsl:variable>
1043
1044 <xsl:choose>
1045 <xsl:when test="$presentation = 'table'">
1046 <fo:block id="{$id}">
1047 <xsl:apply-templates select="." mode="seglist-table"/>
1048 </fo:block>
1049 </xsl:when>
1050 <xsl:when test="$presentation = 'list'">
1051 <fo:block id="{$id}">
1052 <xsl:apply-templates/>
1053 </fo:block>
1054 </xsl:when>
1055 <xsl:when test="$segmentedlist.as.table != 0">
1056 <fo:block id="{$id}">
1057 <xsl:apply-templates select="." mode="seglist-table"/>
1058 </fo:block>
1059 </xsl:when>
1060 <xsl:otherwise>
1061 <fo:block id="{$id}">
1062 <xsl:apply-templates/>
1063 </fo:block>
1064 </xsl:otherwise>
1065 </xsl:choose>
1066</xsl:template>
1067
1068<xsl:template match="segmentedlist/title">
1069 <xsl:apply-templates select="." mode="list.title.mode" />
1070</xsl:template>
1071
1072<xsl:template match="segtitle">
1073</xsl:template>
1074
1075<xsl:template match="segtitle" mode="segtitle-in-seg">
1076 <xsl:apply-templates/>
1077</xsl:template>
1078
1079<xsl:template match="seglistitem">
1080 <xsl:variable name="id">
1081 <xsl:call-template name="object.id"/>
1082 </xsl:variable>
1083 <fo:block id="{$id}">
1084 <xsl:apply-templates/>
1085 </fo:block>
1086</xsl:template>
1087
1088<xsl:template match="seg">
1089 <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
1090 <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
1091 <xsl:variable name="segtitles" select="$seglist/segtitle"/>
1092
1093 <!--
1094 Note: segtitle is only going to be the right thing in a well formed
1095 SegmentedList. If there are too many Segs or too few SegTitles,
1096 you'll get something odd...maybe an error
1097 -->
1098
1099 <fo:block>
1100 <fo:inline font-weight="bold">
1101 <xsl:apply-templates select="$segtitles[$segnum=position()]"
1102 mode="segtitle-in-seg"/>
1103 <xsl:text>: </xsl:text>
1104 </fo:inline>
1105 <xsl:apply-templates/>
1106 </fo:block>
1107</xsl:template>
1108
1109<xsl:template match="segmentedlist" mode="seglist-table">
1110 <xsl:apply-templates select="title" mode="list.title.mode" />
1111 <fo:table>
1112 <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>
1113 <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>
1114 <fo:table-header start-indent="0pt" end-indent="0pt">
1115 <fo:table-row>
1116 <xsl:apply-templates select="segtitle" mode="seglist-table"/>
1117 </fo:table-row>
1118 </fo:table-header>
1119 <fo:table-body start-indent="0pt" end-indent="0pt">
1120 <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
1121 </fo:table-body>
1122 </fo:table>
1123</xsl:template>
1124
1125<xsl:template match="segtitle" mode="seglist-table">
1126 <fo:table-cell>
1127 <fo:block font-weight="bold">
1128 <xsl:apply-templates/>
1129 </fo:block>
1130 </fo:table-cell>
1131</xsl:template>
1132
1133<xsl:template match="seglistitem" mode="seglist-table">
1134 <xsl:variable name="id">
1135 <xsl:call-template name="object.id"/>
1136 </xsl:variable>
1137 <fo:table-row id="{$id}">
1138 <xsl:apply-templates mode="seglist-table"/>
1139 </fo:table-row>
1140</xsl:template>
1141
1142<xsl:template match="seg" mode="seglist-table">
1143 <fo:table-cell>
1144 <fo:block>
1145 <xsl:apply-templates/>
1146 </fo:block>
1147 </fo:table-cell>
1148</xsl:template>
1149
1150<!-- ==================================================================== -->
1151
1152<xsl:template match="calloutlist">
1153 <xsl:variable name="id">
1154 <xsl:call-template name="object.id"/>
1155 </xsl:variable>
1156
1157 <fo:block id="{$id}"
1158 text-align="{$alignment}">
1159 <!-- The above restores alignment altered by image align attribute -->
1160 <xsl:if test="title|info/title">
1161 <xsl:apply-templates select="(title|info/title)[1]"
1162 mode="list.title.mode"/>
1163 </xsl:if>
1164
1165 <!-- Preserve order of PIs and comments -->
1166 <xsl:apply-templates
1167 select="*[not(self::callout or self::title or self::titleabbrev)]
1168 |comment()[not(preceding-sibling::callout)]
1169 |processing-instruction()[not(preceding-sibling::callout)]"/>
1170
1171 <fo:list-block space-before.optimum="1em"
1172 space-before.minimum="0.8em"
1173 space-before.maximum="1.2em"
1174 provisional-distance-between-starts="2.2em"
1175 provisional-label-separation="0.2em">
1176 <xsl:apply-templates select="callout
1177 |comment()[preceding-sibling::callout]
1178 |processing-instruction()[preceding-sibling::callout]"/>
1179 </fo:list-block>
1180 </fo:block>
1181</xsl:template>
1182
1183<xsl:template match="calloutlist/title">
1184</xsl:template>
1185
1186<xsl:template match="callout">
1187 <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
1188 <fo:list-item id="{$id}">
1189 <fo:list-item-label end-indent="label-end()">
1190 <fo:block>
1191 <xsl:call-template name="callout.arearefs">
1192 <xsl:with-param name="arearefs" select="@arearefs"/>
1193 </xsl:call-template>
1194 </fo:block>
1195 </fo:list-item-label>
1196 <fo:list-item-body start-indent="body-start()">
1197 <fo:block>
1198 <xsl:apply-templates/>
1199 </fo:block>
1200 </fo:list-item-body>
1201 </fo:list-item>
1202</xsl:template>
1203
1204<xsl:template name="callout.arearefs">
1205 <xsl:param name="arearefs"></xsl:param>
1206 <xsl:if test="$arearefs!=''">
1207 <xsl:choose>
1208 <xsl:when test="substring-before($arearefs,' ')=''">
1209 <xsl:call-template name="callout.arearef">
1210 <xsl:with-param name="arearef" select="$arearefs"/>
1211 </xsl:call-template>
1212 </xsl:when>
1213 <xsl:otherwise>
1214 <xsl:call-template name="callout.arearef">
1215 <xsl:with-param name="arearef"
1216 select="substring-before($arearefs,' ')"/>
1217 </xsl:call-template>
1218 </xsl:otherwise>
1219 </xsl:choose>
1220 <xsl:call-template name="callout.arearefs">
1221 <xsl:with-param name="arearefs"
1222 select="substring-after($arearefs,' ')"/>
1223 </xsl:call-template>
1224 </xsl:if>
1225</xsl:template>
1226
1227<xsl:template name="callout.arearef">
1228 <xsl:param name="arearef"></xsl:param>
1229 <xsl:variable name="targets" select="key('id',$arearef)"/>
1230 <xsl:variable name="target" select="$targets[1]"/>
1231
1232 <xsl:choose>
1233 <xsl:when test="count($target)=0">
1234 <xsl:value-of select="$arearef"/>
1235 <xsl:text>: ???</xsl:text>
1236 </xsl:when>
1237 <xsl:when test="local-name($target)='co'">
1238 <xsl:apply-templates select="$target" mode="callout-bug"/>
1239 </xsl:when>
1240 <xsl:when test="local-name($target)='areaset'">
1241 <xsl:call-template name="callout-bug">
1242 <xsl:with-param name="conum">
1243 <xsl:apply-templates select="$target" mode="conumber"/>
1244 </xsl:with-param>
1245 </xsl:call-template>
1246 </xsl:when>
1247 <xsl:when test="local-name($target)='area'">
1248 <xsl:choose>
1249 <xsl:when test="$target/parent::areaset">
1250 <xsl:call-template name="callout-bug">
1251 <xsl:with-param name="conum">
1252 <xsl:apply-templates select="$target/parent::areaset"
1253 mode="conumber"/>
1254 </xsl:with-param>
1255 </xsl:call-template>
1256 </xsl:when>
1257 <xsl:otherwise>
1258 <xsl:call-template name="callout-bug">
1259 <xsl:with-param name="conum">
1260 <xsl:apply-templates select="$target" mode="conumber"/>
1261 </xsl:with-param>
1262 </xsl:call-template>
1263 </xsl:otherwise>
1264 </xsl:choose>
1265 </xsl:when>
1266 <xsl:otherwise>
1267 <xsl:text>???</xsl:text>
1268 </xsl:otherwise>
1269 </xsl:choose>
1270</xsl:template>
1271
1272<!-- ==================================================================== -->
1273
1274<xsl:template name="orderedlist-starting-number">
1275 <xsl:param name="list" select="."/>
1276 <xsl:variable name="pi-start">
1277 <xsl:call-template name="pi.dbfo_start">
1278 <xsl:with-param name="node" select="$list"/>
1279 </xsl:call-template>
1280 </xsl:variable>
1281 <xsl:call-template name="output-orderedlist-starting-number">
1282 <xsl:with-param name="list" select="$list"/>
1283 <xsl:with-param name="pi-start" select="$pi-start"/>
1284 </xsl:call-template>
1285</xsl:template>
1286
1287</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.