source: clfs-embedded/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/lists.xsl @ 9882b55

Last change on this file since 9882b55 was 9882b55, checked in by Manuel Canales Esparcia <manuel@…>, 15 years ago

Added the new lfs-xsl stylesheets.

  • Property mode set to 100644
File size: 34.4 KB
Line 
1<?xml version="1.0" encoding="ASCII"?>
2<!--This file was created automatically by html2xhtml-->
3<!--from the HTML stylesheets.-->
4<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" 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  <div>
20    <xsl:apply-templates select="." mode="class.attribute"/>
21    <xsl:call-template name="anchor"/>
22    <xsl:if test="title">
23      <xsl:call-template name="formal.object.heading"/>
24    </xsl:if>
25
26    <!-- Preserve order of PIs and comments -->
27    <xsl:apply-templates select="*[not(self::listitem                   or self::title                   or self::titleabbrev)]                 |comment()[not(preceding-sibling::listitem)]                 |processing-instruction()[not(preceding-sibling::listitem)]"/>
28
29    <ul>
30      <xsl:if test="$css.decoration != 0">
31        <xsl:attribute name="type">
32          <xsl:call-template name="list.itemsymbol"/>
33        </xsl:attribute>
34      </xsl:if>
35
36      <xsl:if test="@spacing='compact'">
37        <xsl:attribute name="compact">
38          <xsl:value-of select="@spacing"/>
39        </xsl:attribute>
40      </xsl:if>
41      <xsl:apply-templates select="listitem                     |comment()[preceding-sibling::listitem]                     |processing-instruction()[preceding-sibling::listitem]"/>
42    </ul>
43  </div>
44</xsl:template>
45
46<xsl:template match="itemizedlist/title">
47  <!-- nop -->
48</xsl:template>
49
50<xsl:template match="itemizedlist/listitem">
51  <xsl:variable name="mark" select="../@mark"/>
52  <xsl:variable name="override" select="@override"/>
53
54  <xsl:variable name="usemark">
55    <xsl:choose>
56      <xsl:when test="$override != ''">
57        <xsl:value-of select="$override"/>
58      </xsl:when>
59      <xsl:otherwise>
60        <xsl:value-of select="$mark"/>
61      </xsl:otherwise>
62    </xsl:choose>
63  </xsl:variable>
64
65  <xsl:variable name="cssmark">
66    <xsl:choose>
67      <xsl:when test="$usemark = 'opencircle'">circle</xsl:when>
68      <xsl:when test="$usemark = 'bullet'">disc</xsl:when>
69      <xsl:when test="$usemark = 'box'">square</xsl:when>
70      <xsl:otherwise>
71        <xsl:value-of select="$usemark"/>
72      </xsl:otherwise>
73    </xsl:choose>
74  </xsl:variable>
75
76  <li>
77    <xsl:if test="$css.decoration = '1' and $cssmark != ''">
78      <xsl:attribute name="style">
79        <xsl:text>list-style-type: </xsl:text>
80        <xsl:value-of select="$cssmark"/>
81      </xsl:attribute>
82    </xsl:if>
83
84    <!-- we can't just drop the anchor in since some browsers (Opera)
85         get confused about line breaks if we do. So if the first child
86         is a para, assume the para will put in the anchor. Otherwise,
87         put the anchor in anyway. -->
88    <xsl:if test="local-name(child::*[1]) != 'para'">
89      <xsl:call-template name="anchor"/>
90    </xsl:if>
91
92    <xsl:choose>
93      <xsl:when test="$show.revisionflag != 0 and @revisionflag">
94        <div class="{@revisionflag}">
95          <xsl:apply-templates/>
96        </div>
97      </xsl:when>
98      <xsl:otherwise>
99        <xsl:apply-templates/>
100      </xsl:otherwise>
101    </xsl:choose>
102  </li>
103</xsl:template>
104
105<xsl:template match="orderedlist">
106  <xsl:variable name="start">
107    <xsl:call-template name="orderedlist-starting-number"/>
108  </xsl:variable>
109
110  <xsl:variable name="numeration">
111    <xsl:call-template name="list.numeration"/>
112  </xsl:variable>
113
114  <xsl:variable name="type">
115    <xsl:choose>
116      <xsl:when test="$numeration='arabic'">1</xsl:when>
117      <xsl:when test="$numeration='loweralpha'">a</xsl:when>
118      <xsl:when test="$numeration='lowerroman'">i</xsl:when>
119      <xsl:when test="$numeration='upperalpha'">A</xsl:when>
120      <xsl:when test="$numeration='upperroman'">I</xsl:when>
121      <!-- What!? This should never happen -->
122      <xsl:otherwise>
123        <xsl:message>
124          <xsl:text>Unexpected numeration: </xsl:text>
125          <xsl:value-of select="$numeration"/>
126        </xsl:message>
127        <xsl:value-of select="1"/>
128      </xsl:otherwise>
129    </xsl:choose>
130  </xsl:variable>
131
132  <div>
133    <xsl:apply-templates select="." mode="class.attribute"/>
134    <xsl:call-template name="anchor"/>
135
136    <xsl:if test="title">
137      <xsl:call-template name="formal.object.heading"/>
138    </xsl:if>
139
140    <!-- Preserve order of PIs and comments -->
141    <xsl:apply-templates select="*[not(self::listitem                   or self::title                   or self::titleabbrev)]                 |comment()[not(preceding-sibling::listitem)]                 |processing-instruction()[not(preceding-sibling::listitem)]"/>
142
143    <ol>
144      <xsl:if test="$start != '1'">
145        <xsl:attribute name="start">
146          <xsl:value-of select="$start"/>
147        </xsl:attribute>
148      </xsl:if>
149      <xsl:if test="$numeration != ''">
150        <xsl:attribute name="type">
151          <xsl:value-of select="$type"/>
152        </xsl:attribute>
153      </xsl:if>
154      <xsl:if test="@spacing='compact'">
155        <xsl:attribute name="compact">
156          <xsl:value-of select="@spacing"/>
157        </xsl:attribute>
158      </xsl:if>
159      <xsl:apply-templates select="listitem                     |comment()[preceding-sibling::listitem]                     |processing-instruction()[preceding-sibling::listitem]"/>
160    </ol>
161  </div>
162</xsl:template>
163
164<xsl:template match="orderedlist/title">
165  <!-- nop -->
166</xsl:template>
167
168<xsl:template match="orderedlist/listitem">
169  <li>
170    <xsl:if test="@override">
171      <xsl:attribute name="value">
172        <xsl:value-of select="@override"/>
173      </xsl:attribute>
174    </xsl:if>
175
176    <!-- we can't just drop the anchor in since some browsers (Opera)
177         get confused about line breaks if we do. So if the first child
178         is a para, assume the para will put in the anchor. Otherwise,
179         put the anchor in anyway. -->
180    <xsl:if test="local-name(child::*[1]) != 'para'">
181      <xsl:call-template name="anchor"/>
182    </xsl:if>
183
184    <xsl:choose>
185      <xsl:when test="$show.revisionflag != 0 and @revisionflag">
186        <div class="{@revisionflag}">
187          <xsl:apply-templates/>
188        </div>
189      </xsl:when>
190      <xsl:otherwise>
191        <xsl:apply-templates/>
192      </xsl:otherwise>
193    </xsl:choose>
194  </li>
195</xsl:template>
196
197<xsl:template match="variablelist">
198  <xsl:variable name="pi-presentation">
199    <xsl:call-template name="dbhtml-attribute">
200      <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
201      <xsl:with-param name="attribute" select="'list-presentation'"/>
202    </xsl:call-template>
203  </xsl:variable>
204
205  <xsl:variable name="presentation">
206    <xsl:choose>
207      <xsl:when test="$pi-presentation != ''">
208        <xsl:value-of select="$pi-presentation"/>
209      </xsl:when>
210      <xsl:when test="$variablelist.as.table != 0">
211        <xsl:value-of select="'table'"/>
212      </xsl:when>
213      <xsl:otherwise>
214        <xsl:value-of select="'list'"/>
215      </xsl:otherwise>
216    </xsl:choose>
217  </xsl:variable>
218
219  <xsl:variable name="list-width">
220    <xsl:call-template name="dbhtml-attribute">
221      <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
222      <xsl:with-param name="attribute" select="'list-width'"/>
223    </xsl:call-template>
224  </xsl:variable>
225
226  <xsl:variable name="term-width">
227    <xsl:call-template name="dbhtml-attribute">
228      <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
229      <xsl:with-param name="attribute" select="'term-width'"/>
230    </xsl:call-template>
231  </xsl:variable>
232
233  <xsl:variable name="table-summary">
234    <xsl:call-template name="dbhtml-attribute">
235      <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
236      <xsl:with-param name="attribute" select="'table-summary'"/>
237    </xsl:call-template>
238  </xsl:variable>
239
240  <div>
241    <xsl:apply-templates select="." mode="class.attribute"/>
242    <xsl:call-template name="anchor"/>
243    <xsl:if test="title">
244      <xsl:call-template name="formal.object.heading"/>
245    </xsl:if>
246
247    <xsl:choose>
248      <xsl:when test="$presentation = 'table'">
249        <!-- Preserve order of PIs and comments -->
250        <xsl:apply-templates select="*[not(self::varlistentry                     or self::title                     or self::titleabbrev)]                   |comment()[not(preceding-sibling::varlistentry)]                   |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
251        <table border="0">
252          <xsl:if test="$list-width != ''">
253            <xsl:attribute name="width">
254              <xsl:value-of select="$list-width"/>
255            </xsl:attribute>
256          </xsl:if>
257          <xsl:if test="$table-summary != ''">
258            <xsl:attribute name="summary">
259              <xsl:value-of select="$table-summary"/>
260            </xsl:attribute>
261          </xsl:if>
262          <col align="left" valign="top">
263            <xsl:if test="$term-width != ''">
264              <xsl:attribute name="width">
265                <xsl:value-of select="$term-width"/>
266              </xsl:attribute>
267            </xsl:if>
268          </col>
269          <tbody>
270            <xsl:apply-templates mode="varlist-table" select="varlistentry                       |comment()[preceding-sibling::varlistentry]                       |processing-instruction()[preceding-sibling::varlistentry]"/>
271          </tbody>
272        </table>
273      </xsl:when>
274      <xsl:otherwise>
275        <!-- Preserve order of PIs and comments -->
276        <xsl:apply-templates select="*[not(self::varlistentry                     or self::title                     or self::titleabbrev)]                   |comment()[not(preceding-sibling::varlistentry)]                   |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
277        <dl>
278          <xsl:apply-templates select="varlistentry                       |comment()[preceding-sibling::varlistentry]                       |processing-instruction()[preceding-sibling::varlistentry]"/>
279        </dl>
280      </xsl:otherwise>
281    </xsl:choose>
282  </div>
283</xsl:template>
284
285<xsl:template match="variablelist/title">
286  <!-- nop -->
287</xsl:template>
288
289<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
290  <!--nop-->
291</xsl:template>
292
293<xsl:template match="variablelist/titleabbrev">
294  <!--nop-->
295</xsl:template>
296
297<xsl:template match="listitem" mode="xref">
298  <xsl:number format="1"/>
299</xsl:template>
300
301<xsl:template match="listitem/simpara" priority="2">
302  <!-- If a listitem contains only a single simpara, don't output
303       the <p> wrapper; this has the effect of creating an li
304       with simple text content. -->
305  <xsl:choose>
306    <xsl:when test="not(preceding-sibling::*)                     and not (following-sibling::*)">
307      <xsl:call-template name="anchor"/>
308      <xsl:apply-templates/>
309    </xsl:when>
310    <xsl:otherwise>
311      <p>
312        <xsl:if test="@role and $para.propagates.style != 0">
313           <xsl:apply-templates select="." mode="class.attribute">
314             <xsl:with-param name="class" select="@role"/>
315           </xsl:apply-templates>
316        </xsl:if>
317
318        <xsl:call-template name="anchor"/>
319        <xsl:apply-templates/>
320      </p>
321    </xsl:otherwise>
322  </xsl:choose>
323</xsl:template>
324
325<xsl:template match="varlistentry">
326  <dt>
327    <xsl:call-template name="anchor"/>
328    <xsl:apply-templates select="term"/>
329  </dt>
330  <dd>
331    <xsl:apply-templates select="listitem"/>
332  </dd>
333</xsl:template>
334
335<xsl:template match="varlistentry" mode="varlist-table">
336  <xsl:variable name="presentation">
337    <xsl:call-template name="dbhtml-attribute">
338      <xsl:with-param name="pis" select="../processing-instruction('dbhtml')"/>
339      <xsl:with-param name="attribute" select="'term-presentation'"/>
340    </xsl:call-template>
341  </xsl:variable>
342
343  <xsl:variable name="separator">
344    <xsl:call-template name="dbhtml-attribute">
345      <xsl:with-param name="pis" select="../processing-instruction('dbhtml')"/>
346      <xsl:with-param name="attribute" select="'term-separator'"/>
347    </xsl:call-template>
348  </xsl:variable>
349  <tr>
350    <xsl:call-template name="tr.attributes">
351      <xsl:with-param name="rownum">
352        <xsl:number from="variablelist" count="varlistentry"/>
353      </xsl:with-param>
354    </xsl:call-template>
355
356    <td>
357      <p>
358      <xsl:call-template name="anchor"/>
359      <xsl:choose>
360        <xsl:when test="$presentation = 'bold'">
361          <b>
362            <xsl:apply-templates select="term"/>
363            <xsl:value-of select="$separator"/>
364          </b>
365        </xsl:when>
366        <xsl:when test="$presentation = 'italic'">
367          <i>
368            <xsl:apply-templates select="term"/>
369            <xsl:value-of select="$separator"/>
370          </i>
371        </xsl:when>
372        <xsl:when test="$presentation = 'bold-italic'">
373          <b>
374            <i>
375              <xsl:apply-templates select="term"/>
376              <xsl:value-of select="$separator"/>
377            </i>
378          </b>
379        </xsl:when>
380        <xsl:otherwise>
381          <xsl:apply-templates select="term"/>
382          <xsl:value-of select="$separator"/>
383        </xsl:otherwise>
384      </xsl:choose>
385      </p>
386    </td>
387    <td>
388      <xsl:apply-templates select="listitem"/>
389    </td>
390  </tr>
391</xsl:template>
392
393<xsl:template match="varlistentry/term">
394  <span class="term">
395    <xsl:call-template name="anchor"/>
396    <xsl:call-template name="simple.xlink">
397      <xsl:with-param name="content">
398        <xsl:apply-templates/>
399      </xsl:with-param>
400    </xsl:call-template>
401    <xsl:choose>
402      <xsl:when test="position() = last()"/> <!-- do nothing -->
403      <xsl:otherwise>
404        <!-- * if we have multiple terms in the same varlistentry, generate -->
405        <!-- * a separator (", " by default) and/or an additional line -->
406        <!-- * break after each one except the last -->
407        <xsl:value-of select="$variablelist.term.separator"/>
408        <xsl:if test="not($variablelist.term.break.after = '0')">
409          <br/>
410        </xsl:if>
411      </xsl:otherwise>
412    </xsl:choose>
413  </span>
414</xsl:template>
415
416<xsl:template match="varlistentry/listitem">
417  <!-- we can't just drop the anchor in since some browsers (Opera)
418       get confused about line breaks if we do. So if the first child
419       is a para, assume the para will put in the anchor. Otherwise,
420       put the anchor in anyway. -->
421  <xsl:if test="local-name(child::*[1]) != 'para'">
422    <xsl:call-template name="anchor"/>
423  </xsl:if>
424
425  <xsl:choose>
426    <xsl:when test="$show.revisionflag != 0 and @revisionflag">
427      <div class="{@revisionflag}">
428        <xsl:apply-templates/>
429      </div>
430    </xsl:when>
431    <xsl:otherwise>
432      <xsl:apply-templates/>
433    </xsl:otherwise>
434  </xsl:choose>
435</xsl:template>
436
437<!-- ==================================================================== -->
438
439<xsl:template match="simplelist">
440  <!-- with no type specified, the default is 'vert' -->
441  <xsl:call-template name="anchor"/>
442  <table class="simplelist" border="0" summary="Simple list">
443    <xsl:call-template name="simplelist.vert">
444      <xsl:with-param name="cols">
445        <xsl:choose>
446          <xsl:when test="@columns">
447            <xsl:value-of select="@columns"/>
448          </xsl:when>
449          <xsl:otherwise>1</xsl:otherwise>
450        </xsl:choose>
451      </xsl:with-param>
452    </xsl:call-template>
453  </table>
454</xsl:template>
455
456<xsl:template match="simplelist[@type='inline']">
457  <span>
458    <xsl:apply-templates select="." mode="class.attribute"/>
459  <!-- if dbchoice PI exists, use that to determine the choice separator -->
460  <!-- (that is, equivalent of "and" or "or" in current locale), or literal -->
461  <!-- value of "choice" otherwise -->
462  <xsl:variable name="localized-choice-separator">
463    <xsl:choose>
464      <xsl:when test="processing-instruction('dbchoice')">
465        <xsl:call-template name="select.choice.separator"/>
466      </xsl:when>
467      <xsl:otherwise>
468        <!-- empty -->
469      </xsl:otherwise>
470    </xsl:choose>
471  </xsl:variable>
472
473  <xsl:for-each select="member">
474    <xsl:call-template name="simple.xlink">
475      <xsl:with-param name="content">
476        <xsl:apply-templates/>
477      </xsl:with-param>
478    </xsl:call-template>
479    <xsl:choose>
480      <xsl:when test="position() = last()"/> <!-- do nothing -->
481      <xsl:otherwise>
482        <xsl:text>, </xsl:text>
483        <xsl:if test="position() = last() - 1">
484          <xsl:if test="$localized-choice-separator != ''">
485            <xsl:value-of select="$localized-choice-separator"/>
486            <xsl:text> </xsl:text>
487          </xsl:if>
488        </xsl:if>
489      </xsl:otherwise>
490    </xsl:choose>
491  </xsl:for-each>
492  </span>
493</xsl:template>
494
495<xsl:template match="simplelist[@type='horiz']">
496  <xsl:call-template name="anchor"/>
497  <table class="simplelist" border="0" summary="Simple list">
498    <xsl:call-template name="simplelist.horiz">
499      <xsl:with-param name="cols">
500        <xsl:choose>
501          <xsl:when test="@columns">
502            <xsl:value-of select="@columns"/>
503          </xsl:when>
504          <xsl:otherwise>1</xsl:otherwise>
505        </xsl:choose>
506      </xsl:with-param>
507    </xsl:call-template>
508  </table>
509</xsl:template>
510
511<xsl:template match="simplelist[@type='vert']">
512  <xsl:call-template name="anchor"/>
513  <table class="simplelist" border="0" summary="Simple list">
514    <xsl:call-template name="simplelist.vert">
515      <xsl:with-param name="cols">
516        <xsl:choose>
517          <xsl:when test="@columns">
518            <xsl:value-of select="@columns"/>
519          </xsl:when>
520          <xsl:otherwise>1</xsl:otherwise>
521        </xsl:choose>
522      </xsl:with-param>
523    </xsl:call-template>
524  </table>
525</xsl:template>
526
527<xsl:template name="simplelist.horiz">
528  <xsl:param name="cols">1</xsl:param>
529  <xsl:param name="cell">1</xsl:param>
530  <xsl:param name="members" select="./member"/>
531
532  <xsl:if test="$cell &lt;= count($members)">
533    <tr>
534      <xsl:call-template name="tr.attributes">
535        <xsl:with-param name="row" select="$members[1]"/>
536        <xsl:with-param name="rownum" select="(($cell - 1) div $cols) + 1"/>
537      </xsl:call-template>
538
539      <xsl:call-template name="simplelist.horiz.row">
540        <xsl:with-param name="cols" select="$cols"/>
541        <xsl:with-param name="cell" select="$cell"/>
542        <xsl:with-param name="members" select="$members"/>
543      </xsl:call-template>
544   </tr>
545    <xsl:call-template name="simplelist.horiz">
546      <xsl:with-param name="cols" select="$cols"/>
547      <xsl:with-param name="cell" select="$cell + $cols"/>
548      <xsl:with-param name="members" select="$members"/>
549    </xsl:call-template>
550  </xsl:if>
551</xsl:template>
552
553<xsl:template name="simplelist.horiz.row">
554  <xsl:param name="cols">1</xsl:param>
555  <xsl:param name="cell">1</xsl:param>
556  <xsl:param name="members" select="./member"/>
557  <xsl:param name="curcol">1</xsl:param>
558
559  <xsl:if test="$curcol &lt;= $cols">
560    <td>
561      <xsl:choose>
562        <xsl:when test="$members[position()=$cell]">
563          <xsl:apply-templates select="$members[position()=$cell]"/>
564        </xsl:when>
565        <xsl:otherwise>
566          <xsl:text>&#160;</xsl:text>
567        </xsl:otherwise>
568      </xsl:choose>
569    </td>
570    <xsl:call-template name="simplelist.horiz.row">
571      <xsl:with-param name="cols" select="$cols"/>
572      <xsl:with-param name="cell" select="$cell+1"/>
573      <xsl:with-param name="members" select="$members"/>
574      <xsl:with-param name="curcol" select="$curcol+1"/>
575    </xsl:call-template>
576  </xsl:if>
577</xsl:template>
578
579<xsl:template name="simplelist.vert">
580  <xsl:param name="cols">1</xsl:param>
581  <xsl:param name="cell">1</xsl:param>
582  <xsl:param name="members" select="./member"/>
583  <xsl:param name="rows" select="floor((count($members)+$cols - 1) div $cols)"/>
584
585  <xsl:if test="$cell &lt;= $rows">
586    <tr>
587      <xsl:call-template name="tr.attributes">
588        <xsl:with-param name="row" select="$members[1]"/>
589        <xsl:with-param name="rownum" select="$cell"/>
590      </xsl:call-template>
591
592      <xsl:call-template name="simplelist.vert.row">
593        <xsl:with-param name="cols" select="$cols"/>
594        <xsl:with-param name="rows" select="$rows"/>
595        <xsl:with-param name="cell" select="$cell"/>
596        <xsl:with-param name="members" select="$members"/>
597      </xsl:call-template>
598    </tr>
599    <xsl:call-template name="simplelist.vert">
600      <xsl:with-param name="cols" select="$cols"/>
601      <xsl:with-param name="cell" select="$cell+1"/>
602      <xsl:with-param name="members" select="$members"/>
603      <xsl:with-param name="rows" select="$rows"/>
604    </xsl:call-template>
605  </xsl:if>
606</xsl:template>
607
608<xsl:template name="simplelist.vert.row">
609  <xsl:param name="cols">1</xsl:param>
610  <xsl:param name="rows">1</xsl:param>
611  <xsl:param name="cell">1</xsl:param>
612  <xsl:param name="members" select="./member"/>
613  <xsl:param name="curcol">1</xsl:param>
614
615  <xsl:if test="$curcol &lt;= $cols">
616    <td>
617      <xsl:choose>
618        <xsl:when test="$members[position()=$cell]">
619          <xsl:apply-templates select="$members[position()=$cell]"/>
620        </xsl:when>
621        <xsl:otherwise>
622          <xsl:text>&#160;</xsl:text>
623        </xsl:otherwise>
624      </xsl:choose>
625    </td>
626    <xsl:call-template name="simplelist.vert.row">
627      <xsl:with-param name="cols" select="$cols"/>
628      <xsl:with-param name="rows" select="$rows"/>
629      <xsl:with-param name="cell" select="$cell+$rows"/>
630      <xsl:with-param name="members" select="$members"/>
631      <xsl:with-param name="curcol" select="$curcol+1"/>
632    </xsl:call-template>
633  </xsl:if>
634</xsl:template>
635
636<xsl:template match="member">
637  <xsl:call-template name="anchor"/>
638  <xsl:call-template name="simple.xlink">
639    <xsl:with-param name="content">
640      <xsl:apply-templates/>
641    </xsl:with-param>
642  </xsl:call-template>
643</xsl:template>
644
645<!-- ==================================================================== -->
646
647<xsl:template match="procedure">
648  <xsl:variable name="param.placement" select="substring-after(normalize-space($formal.title.placement),                                         concat(local-name(.), ' '))"/>
649
650  <xsl:variable name="placement">
651    <xsl:choose>
652      <xsl:when test="contains($param.placement, ' ')">
653        <xsl:value-of select="substring-before($param.placement, ' ')"/>
654      </xsl:when>
655      <xsl:when test="$param.placement = ''">before</xsl:when>
656      <xsl:otherwise>
657        <xsl:value-of select="$param.placement"/>
658      </xsl:otherwise>
659    </xsl:choose>
660  </xsl:variable>
661
662  <!-- Preserve order of PIs and comments -->
663  <xsl:variable name="preamble" select="*[not(self::step                   or self::title                   or self::titleabbrev)]                 |comment()[not(preceding-sibling::step)]                 |processing-instruction()[not(preceding-sibling::step)]"/>
664
665  <div>
666    <xsl:apply-templates select="." mode="class.attribute"/>
667    <xsl:call-template name="anchor">
668      <xsl:with-param name="conditional">
669        <xsl:choose>
670          <xsl:when test="title">0</xsl:when>
671          <xsl:otherwise>1</xsl:otherwise>
672        </xsl:choose>
673      </xsl:with-param>
674    </xsl:call-template>
675
676    <xsl:if test="title and $placement = 'before'">
677      <xsl:call-template name="formal.object.heading"/>
678    </xsl:if>
679
680    <xsl:apply-templates select="$preamble"/>
681
682    <xsl:choose>
683      <xsl:when test="count(step) = 1">
684        <ul>
685          <xsl:apply-templates select="step                     |comment()[preceding-sibling::step]                     |processing-instruction()[preceding-sibling::step]"/>
686        </ul>
687      </xsl:when>
688      <xsl:otherwise>
689        <ol>
690          <xsl:attribute name="type">
691            <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/>
692          </xsl:attribute>
693          <xsl:apply-templates select="step                     |comment()[preceding-sibling::step]                     |processing-instruction()[preceding-sibling::step]"/>
694        </ol>
695      </xsl:otherwise>
696    </xsl:choose>
697
698    <xsl:if test="title and $placement != 'before'">
699      <xsl:call-template name="formal.object.heading"/>
700    </xsl:if>
701  </div>
702</xsl:template>
703
704<xsl:template match="procedure/title">
705  <!-- nop -->
706</xsl:template>
707
708<xsl:template match="substeps">
709  <xsl:variable name="numeration">
710    <xsl:call-template name="procedure.step.numeration"/>
711  </xsl:variable>
712
713  <xsl:call-template name="anchor"/>
714
715  <ol type="{$numeration}">
716    <xsl:apply-templates/>
717  </ol>
718</xsl:template>
719
720<xsl:template match="step">
721  <li>
722    <xsl:call-template name="anchor"/>
723    <xsl:apply-templates/>
724  </li>
725</xsl:template>
726
727<xsl:template match="stepalternatives">
728  <xsl:call-template name="anchor"/>
729  <ul>
730    <xsl:apply-templates/>
731  </ul>
732</xsl:template>
733
734<xsl:template match="step/title">
735  <p class="title">
736    <b>
737      <xsl:apply-templates/>
738    </b>
739  </p>
740</xsl:template>
741
742<!-- ==================================================================== -->
743
744<xsl:template match="segmentedlist">
745  <xsl:variable name="presentation">
746    <xsl:call-template name="dbhtml-attribute">
747      <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
748      <xsl:with-param name="attribute" select="'list-presentation'"/>
749    </xsl:call-template>
750  </xsl:variable>
751
752  <div>
753    <xsl:apply-templates select="." mode="class.attribute"/>
754    <xsl:call-template name="anchor"/>
755
756    <xsl:choose>
757      <xsl:when test="$presentation = 'table'">
758        <xsl:apply-templates select="." mode="seglist-table"/>
759      </xsl:when>
760      <xsl:when test="$presentation = 'list'">
761        <xsl:apply-templates/>
762      </xsl:when>
763      <xsl:when test="$segmentedlist.as.table != 0">
764        <xsl:apply-templates select="." mode="seglist-table"/>
765      </xsl:when>
766      <xsl:otherwise>
767        <xsl:apply-templates/>
768      </xsl:otherwise>
769    </xsl:choose>
770  </div>
771</xsl:template>
772
773<xsl:template match="segmentedlist/title">
774  <div class="title">
775    <strong><span class="title"><xsl:apply-templates/></span></strong>
776  </div>
777</xsl:template>
778
779<xsl:template match="segtitle">
780</xsl:template>
781
782<xsl:template match="segtitle" mode="segtitle-in-seg">
783  <xsl:apply-templates/>
784</xsl:template>
785
786<xsl:template match="seglistitem">
787  <div class="seglistitem">
788    <xsl:call-template name="anchor"/>
789    <xsl:apply-templates/>
790  </div>
791</xsl:template>
792
793<xsl:template match="seg">
794  <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
795  <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
796  <xsl:variable name="segtitles" select="$seglist/segtitle"/>
797
798  <!--
799     Note: segtitle is only going to be the right thing in a well formed
800     SegmentedList.  If there are too many Segs or too few SegTitles,
801     you'll get something odd...maybe an error
802  -->
803
804  <div class="seg">
805    <strong>
806      <span class="segtitle">
807        <xsl:apply-templates select="$segtitles[$segnum=position()]" mode="segtitle-in-seg"/>
808        <xsl:text>: </xsl:text>
809      </span>
810    </strong>
811    <xsl:apply-templates/>
812  </div>
813</xsl:template>
814
815<xsl:template match="segmentedlist" mode="seglist-table">
816  <xsl:variable name="table-summary">
817    <xsl:call-template name="dbhtml-attribute">
818      <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
819      <xsl:with-param name="attribute" select="'table-summary'"/>
820    </xsl:call-template>
821  </xsl:variable>
822
823  <xsl:variable name="list-width">
824    <xsl:call-template name="dbhtml-attribute">
825      <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
826      <xsl:with-param name="attribute" select="'list-width'"/>
827    </xsl:call-template>
828  </xsl:variable>
829
830  <xsl:apply-templates select="title"/>
831
832  <table border="0">
833    <xsl:if test="$list-width != ''">
834      <xsl:attribute name="width">
835        <xsl:value-of select="$list-width"/>
836      </xsl:attribute>
837    </xsl:if>
838    <xsl:if test="$table-summary != ''">
839      <xsl:attribute name="summary">
840        <xsl:value-of select="$table-summary"/>
841      </xsl:attribute>
842    </xsl:if>
843    <thead>
844      <tr class="segtitle">
845        <xsl:call-template name="tr.attributes">
846          <xsl:with-param name="row" select="segtitle[1]"/>
847          <xsl:with-param name="rownum" select="1"/>
848        </xsl:call-template>
849        <xsl:apply-templates select="segtitle" mode="seglist-table"/>
850      </tr>
851    </thead>
852    <tbody>
853      <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
854    </tbody>
855  </table>
856</xsl:template>
857
858<xsl:template match="segtitle" mode="seglist-table">
859  <th><xsl:apply-templates/></th>
860</xsl:template>
861
862<xsl:template match="seglistitem" mode="seglist-table">
863  <xsl:variable name="seglinum">
864    <xsl:number from="segmentedlist" count="seglistitem"/>
865  </xsl:variable>
866
867  <tr class="seglistitem">
868    <xsl:call-template name="tr.attributes">
869      <xsl:with-param name="rownum" select="$seglinum + 1"/>
870    </xsl:call-template>
871    <xsl:apply-templates mode="seglist-table"/>
872  </tr>
873</xsl:template>
874
875<xsl:template match="seg" mode="seglist-table">
876  <td class="seg"><xsl:apply-templates/></td>
877</xsl:template>
878
879<xsl:template match="seg[1]" mode="seglist-table">
880  <td class="seg">
881    <xsl:call-template name="anchor">
882      <xsl:with-param name="node" select="ancestor::seglistitem"/>
883    </xsl:call-template>
884    <xsl:apply-templates/>
885  </td>
886</xsl:template>
887
888<!-- ==================================================================== -->
889
890<xsl:template match="calloutlist">
891  <div>
892    <xsl:apply-templates select="." mode="class.attribute"/>
893    <xsl:call-template name="anchor"/>
894    <xsl:if test="title|info/title">
895      <xsl:call-template name="formal.object.heading"/>
896    </xsl:if>
897
898    <!-- Preserve order of PIs and comments -->
899    <xsl:apply-templates select="*[not(self::callout or self::title or self::titleabbrev)]                    |comment()[not(preceding-sibling::callout)]      |processing-instruction()[not(preceding-sibling::callout)]"/>
900
901    <xsl:choose>
902      <xsl:when test="$callout.list.table != 0">
903        <table border="0" summary="Callout list">
904          <xsl:apply-templates select="callout            |comment()[preceding-sibling::callout]     |processing-instruction()[preceding-sibling::callout]"/>
905        </table>
906      </xsl:when>
907      <xsl:otherwise>
908        <dl compact="compact">
909          <xsl:apply-templates select="callout            |comment()[preceding-sibling::callout]     |processing-instruction()[preceding-sibling::callout]"/>
910        </dl>
911      </xsl:otherwise>
912    </xsl:choose>
913  </div>
914</xsl:template>
915
916<xsl:template match="calloutlist/title">
917</xsl:template>
918
919<xsl:template match="callout">
920  <xsl:choose>
921    <xsl:when test="$callout.list.table != 0">
922      <tr>
923        <xsl:call-template name="tr.attributes">
924          <xsl:with-param name="rownum">
925            <xsl:number from="calloutlist" count="callout"/>
926          </xsl:with-param>
927        </xsl:call-template>
928
929        <td width="5%" valign="top" align="left">
930          <p>
931            <xsl:call-template name="anchor"/>
932            <xsl:call-template name="callout.arearefs">
933              <xsl:with-param name="arearefs" select="@arearefs"/>
934            </xsl:call-template>
935          </p>
936        </td>
937        <td valign="top" align="left">
938          <xsl:apply-templates/>
939        </td>
940      </tr>
941    </xsl:when>
942    <xsl:otherwise>
943      <dt>
944        <xsl:call-template name="anchor"/>
945        <xsl:call-template name="callout.arearefs">
946          <xsl:with-param name="arearefs" select="@arearefs"/>
947        </xsl:call-template>
948      </dt>
949      <dd><xsl:apply-templates/></dd>
950    </xsl:otherwise>
951  </xsl:choose>
952</xsl:template>
953
954<xsl:template match="callout/simpara" priority="2">
955  <!-- If a callout contains only a single simpara, don't output
956       the <p> wrapper; this has the effect of creating an li
957       with simple text content. -->
958  <xsl:choose>
959    <xsl:when test="not(preceding-sibling::*)                     and not (following-sibling::*)">
960      <xsl:call-template name="anchor"/>
961      <xsl:apply-templates/>
962    </xsl:when>
963    <xsl:otherwise>
964      <p>
965        <xsl:if test="@role and $para.propagates.style != 0">
966          <xsl:apply-templates select="." mode="class.attribute">
967            <xsl:with-param name="class" select="@role"/>
968          </xsl:apply-templates>
969        </xsl:if>
970
971        <xsl:call-template name="anchor"/>
972        <xsl:apply-templates/>
973      </p>
974    </xsl:otherwise>
975  </xsl:choose>
976</xsl:template>
977
978<xsl:template name="callout.arearefs">
979  <xsl:param name="arearefs"/>
980  <xsl:if test="$arearefs!=''">
981    <xsl:choose>
982      <xsl:when test="substring-before($arearefs,' ')=''">
983        <xsl:call-template name="callout.arearef">
984          <xsl:with-param name="arearef" select="$arearefs"/>
985        </xsl:call-template>
986      </xsl:when>
987      <xsl:otherwise>
988        <xsl:call-template name="callout.arearef">
989          <xsl:with-param name="arearef" select="substring-before($arearefs,' ')"/>
990        </xsl:call-template>
991      </xsl:otherwise>
992    </xsl:choose>
993    <xsl:call-template name="callout.arearefs">
994      <xsl:with-param name="arearefs" select="substring-after($arearefs,' ')"/>
995    </xsl:call-template>
996  </xsl:if>
997</xsl:template>
998
999<xsl:template name="callout.arearef">
1000  <xsl:param name="arearef"/>
1001  <xsl:variable name="targets" select="key('id',$arearef)"/>
1002  <xsl:variable name="target" select="$targets[1]"/>
1003
1004  <xsl:call-template name="check.id.unique">
1005    <xsl:with-param name="linkend" select="$arearef"/>
1006  </xsl:call-template>
1007
1008  <xsl:choose>
1009    <xsl:when test="count($target)=0">
1010      <xsl:text>???</xsl:text>
1011    </xsl:when>
1012    <xsl:when test="local-name($target)='co'">
1013      <a>
1014        <xsl:attribute name="href">
1015          <xsl:text>#</xsl:text>
1016          <xsl:value-of select="$arearef"/>
1017        </xsl:attribute>
1018        <xsl:apply-templates select="$target" mode="callout-bug"/>
1019      </a>
1020      <xsl:text> </xsl:text>
1021    </xsl:when>
1022    <xsl:when test="local-name($target)='areaset'">
1023      <xsl:call-template name="callout-bug">
1024        <xsl:with-param name="conum">
1025          <xsl:apply-templates select="$target" mode="conumber"/>
1026        </xsl:with-param>
1027      </xsl:call-template>
1028    </xsl:when>
1029    <xsl:when test="local-name($target)='area'">
1030      <xsl:choose>
1031        <xsl:when test="$target/parent::areaset">
1032          <xsl:call-template name="callout-bug">
1033            <xsl:with-param name="conum">
1034              <xsl:apply-templates select="$target/parent::areaset" mode="conumber"/>
1035            </xsl:with-param>
1036          </xsl:call-template>
1037        </xsl:when>
1038        <xsl:otherwise>
1039          <xsl:call-template name="callout-bug">
1040            <xsl:with-param name="conum">
1041              <xsl:apply-templates select="$target" mode="conumber"/>
1042            </xsl:with-param>
1043          </xsl:call-template>
1044        </xsl:otherwise>
1045      </xsl:choose>
1046    </xsl:when>
1047    <xsl:otherwise>
1048      <xsl:text>???</xsl:text>
1049    </xsl:otherwise>
1050  </xsl:choose>
1051</xsl:template>
1052
1053<!-- ==================================================================== -->
1054
1055</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.