source: clfs-embedded/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/synop.xsl @ 00b1e11

Last change on this file since 00b1e11 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: 45.8 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<!-- synopsis is in verbatim -->
19
20<!-- ==================================================================== -->
21
22<xsl:template match="cmdsynopsis">
23  <div>
24    <xsl:apply-templates select="." mode="class.attribute"/>
25    <p>
26      <xsl:call-template name="anchor">
27        <xsl:with-param name="conditional" select="0"/>
28      </xsl:call-template>
29      <xsl:apply-templates/>
30    </p>
31  </div>
32</xsl:template>
33
34<xsl:template match="cmdsynopsis/command">
35  <br/>
36  <xsl:call-template name="inline.monoseq"/>
37  <xsl:text> </xsl:text>
38</xsl:template>
39
40<xsl:template match="cmdsynopsis/command[1]" priority="2">
41  <xsl:call-template name="inline.monoseq"/>
42  <xsl:text> </xsl:text>
43</xsl:template>
44
45<xsl:template match="group|arg" name="group-or-arg">
46  <xsl:variable name="choice" select="@choice"/>
47  <xsl:variable name="rep" select="@rep"/>
48  <xsl:variable name="sepchar">
49    <xsl:choose>
50      <xsl:when test="ancestor-or-self::*/@sepchar">
51        <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
52      </xsl:when>
53      <xsl:otherwise>
54        <xsl:text> </xsl:text>
55      </xsl:otherwise>
56    </xsl:choose>
57  </xsl:variable>
58
59  <xsl:if test="preceding-sibling::*">
60    <xsl:value-of select="$sepchar"/>
61  </xsl:if>
62  <xsl:choose>
63    <xsl:when test="$choice='plain'">
64      <xsl:value-of select="$arg.choice.plain.open.str"/>
65    </xsl:when>
66    <xsl:when test="$choice='req'">
67      <xsl:value-of select="$arg.choice.req.open.str"/>
68    </xsl:when>
69    <xsl:when test="$choice='opt'">
70      <xsl:value-of select="$arg.choice.opt.open.str"/>
71    </xsl:when>
72    <xsl:otherwise>
73      <xsl:value-of select="$arg.choice.def.open.str"/>
74    </xsl:otherwise>
75  </xsl:choose>
76  <xsl:apply-templates/>
77  <xsl:choose>
78    <xsl:when test="$rep='repeat'">
79      <xsl:value-of select="$arg.rep.repeat.str"/>
80    </xsl:when>
81    <xsl:when test="$rep='norepeat'">
82      <xsl:value-of select="$arg.rep.norepeat.str"/>
83    </xsl:when>
84    <xsl:otherwise>
85      <xsl:value-of select="$arg.rep.def.str"/>
86    </xsl:otherwise>
87  </xsl:choose>
88  <xsl:choose>
89    <xsl:when test="$choice='plain'">
90      <xsl:value-of select="$arg.choice.plain.close.str"/>
91    </xsl:when>
92    <xsl:when test="$choice='req'">
93      <xsl:value-of select="$arg.choice.req.close.str"/>
94    </xsl:when>
95    <xsl:when test="$choice='opt'">
96      <xsl:value-of select="$arg.choice.opt.close.str"/>
97    </xsl:when>
98    <xsl:otherwise>
99      <xsl:value-of select="$arg.choice.def.close.str"/>
100    </xsl:otherwise>
101  </xsl:choose>
102</xsl:template>
103
104<xsl:template match="group/arg">
105  <xsl:variable name="choice" select="@choice"/>
106  <xsl:variable name="rep" select="@rep"/>
107  <xsl:if test="preceding-sibling::*">
108    <xsl:value-of select="$arg.or.sep"/>
109  </xsl:if>
110  <xsl:call-template name="group-or-arg"/>
111</xsl:template>
112
113<xsl:template match="sbr">
114  <br/>
115</xsl:template>
116
117<!-- ==================================================================== -->
118
119<xsl:template match="synopfragmentref">
120  <xsl:variable name="target" select="key('id',@linkend)"/>
121  <xsl:variable name="snum">
122    <xsl:apply-templates select="$target" mode="synopfragment.number"/>
123  </xsl:variable>
124  <i>
125    <a href="#{@linkend}">
126      <xsl:text>(</xsl:text>
127      <xsl:value-of select="$snum"/>
128      <xsl:text>)</xsl:text>
129    </a>
130    <xsl:text>&#160;</xsl:text>
131    <xsl:apply-templates/>
132  </i>
133</xsl:template>
134
135<xsl:template match="synopfragment" mode="synopfragment.number">
136  <xsl:number format="1"/>
137</xsl:template>
138
139<xsl:template match="synopfragment">
140  <xsl:variable name="snum">
141    <xsl:apply-templates select="." mode="synopfragment.number"/>
142  </xsl:variable>
143  <p>
144    <xsl:variable name="id">
145      <xsl:call-template name="object.id"/>
146    </xsl:variable>
147    <a id="{$id}">
148      <xsl:text>(</xsl:text>
149      <xsl:value-of select="$snum"/>
150      <xsl:text>)</xsl:text>
151    </a>
152    <xsl:text> </xsl:text>
153    <xsl:apply-templates/>
154  </p>
155</xsl:template>
156
157<xsl:template match="funcsynopsis">
158  <xsl:call-template name="informal.object"/>
159</xsl:template>
160
161<xsl:template match="funcsynopsisinfo">
162  <pre>
163    <xsl:apply-templates select="." mode="class.attribute"/>
164    <xsl:apply-templates/>
165  </pre>
166</xsl:template>
167
168<!-- ====================================================================== -->
169<!-- funcprototype -->
170<!--
171
172funcprototype ::= (funcdef,
173                   (void|varargs|paramdef+))
174
175funcdef       ::= (#PCDATA|type|replaceable|function)*
176
177paramdef      ::= (#PCDATA|type|replaceable|parameter|funcparams)*
178-->
179
180<xsl:template match="funcprototype">
181  <xsl:variable name="html-style">
182    <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
183      <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
184    </xsl:call-template>
185  </xsl:variable>
186
187  <xsl:variable name="style">
188    <xsl:choose>
189      <xsl:when test="$html-style != ''">
190        <xsl:value-of select="$html-style"/>
191      </xsl:when>
192      <xsl:otherwise>
193        <xsl:value-of select="$funcsynopsis.style"/>
194      </xsl:otherwise>
195    </xsl:choose>
196  </xsl:variable>
197
198<!--
199  <xsl:variable name="tabular-p"
200                select="$funcsynopsis.tabular.threshold &gt; 0
201                        and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
202-->
203
204  <xsl:variable name="tabular-p" select="true()"/>
205
206  <xsl:choose>
207    <xsl:when test="$style = 'kr' and $tabular-p">
208      <xsl:apply-templates select="." mode="kr-tabular"/>
209    </xsl:when>
210    <xsl:when test="$style = 'kr'">
211      <xsl:apply-templates select="." mode="kr-nontabular"/>
212    </xsl:when>
213    <xsl:when test="$style = 'ansi' and $tabular-p">
214      <xsl:apply-templates select="." mode="ansi-tabular"/>
215    </xsl:when>
216    <xsl:otherwise>
217      <xsl:apply-templates select="." mode="ansi-nontabular"/>
218    </xsl:otherwise>
219  </xsl:choose>
220</xsl:template>
221
222<!-- ====================================================================== -->
223<!-- funcprototype: kr, non-tabular -->
224
225<xsl:template match="funcprototype" mode="kr-nontabular">
226  <p>
227    <xsl:apply-templates mode="kr-nontabular"/>
228    <xsl:if test="paramdef">
229      <br/>
230      <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
231    </xsl:if>
232  </p>
233</xsl:template>
234
235<xsl:template match="funcdef" mode="kr-nontabular">
236  <code>
237    <xsl:apply-templates select="." mode="class.attribute"/>
238    <xsl:apply-templates mode="kr-nontabular"/>
239    <xsl:text>(</xsl:text>
240  </code>
241</xsl:template>
242
243<xsl:template match="funcdef/function" mode="kr-nontabular">
244  <xsl:choose>
245    <xsl:when test="$funcsynopsis.decoration != 0">
246      <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
247    </xsl:when>
248    <xsl:otherwise>
249      <xsl:apply-templates mode="kr-nontabular"/>
250    </xsl:otherwise>
251  </xsl:choose>
252</xsl:template>
253
254<xsl:template match="void" mode="kr-nontabular">
255  <code>)</code>
256  <xsl:text>;</xsl:text>
257</xsl:template>
258
259<xsl:template match="varargs" mode="kr-nontabular">
260  <xsl:text>...</xsl:text>
261  <code>)</code>
262  <xsl:text>;</xsl:text>
263</xsl:template>
264
265<xsl:template match="paramdef" mode="kr-nontabular">
266  <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
267  <xsl:choose>
268    <xsl:when test="following-sibling::*">
269      <xsl:text>, </xsl:text>
270    </xsl:when>
271    <xsl:otherwise>
272      <code>)</code>
273      <xsl:text>;</xsl:text>
274    </xsl:otherwise>
275  </xsl:choose>
276</xsl:template>
277
278<xsl:template match="paramdef/parameter" mode="kr-nontabular">
279  <xsl:choose>
280    <xsl:when test="$funcsynopsis.decoration != 0">
281      <var class="pdparam">
282        <xsl:apply-templates mode="kr-nontabular"/>
283      </var>
284    </xsl:when>
285    <xsl:otherwise>
286      <code>
287        <xsl:apply-templates mode="kr-nontabular"/>
288      </code>
289    </xsl:otherwise>
290  </xsl:choose>
291</xsl:template>
292
293<xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
294  <xsl:if test="preceding-sibling::paramdef"><br/></xsl:if>
295  <code>
296    <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
297  </code>
298  <xsl:text>;</xsl:text>
299</xsl:template>
300
301<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
302  <xsl:choose>
303    <xsl:when test="$funcsynopsis.decoration != 0">
304      <var class="pdparam">
305        <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
306      </var>
307    </xsl:when>
308    <xsl:otherwise>
309      <code>
310        <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
311      </code>
312    </xsl:otherwise>
313  </xsl:choose>
314</xsl:template>
315
316<xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
317  <code>(</code>
318  <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
319  <code>)</code>
320</xsl:template>
321
322<!-- ====================================================================== -->
323<!-- funcprototype: kr, tabular -->
324
325<xsl:template match="funcprototype" mode="kr-tabular">
326  <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
327    <tr>
328      <td>
329        <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
330      </td>
331      <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
332    </tr>
333    <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
334      <tr>
335        <td>&#160;</td>
336        <xsl:apply-templates select="." mode="kr-tabular"/>
337      </tr>
338    </xsl:for-each>
339  </table>
340  <xsl:if test="paramdef">
341    <table border="0" summary="Function argument synopsis" cellspacing="0" cellpadding="0">
342      <xsl:if test="following-sibling::funcprototype">
343        <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
344      </xsl:if>
345      <xsl:apply-templates select="paramdef" mode="kr-tabular-funcsynopsis-mode"/>
346    </table>
347  </xsl:if>
348</xsl:template>
349
350<xsl:template match="funcdef" mode="kr-tabular">
351  <code>
352    <xsl:apply-templates select="." mode="class.attribute"/>
353    <xsl:apply-templates mode="kr-tabular"/>
354    <xsl:text>(</xsl:text>
355  </code>
356</xsl:template>
357
358<xsl:template match="funcdef/function" mode="kr-tabular">
359  <xsl:choose>
360    <xsl:when test="$funcsynopsis.decoration != 0">
361      <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
362    </xsl:when>
363    <xsl:otherwise>
364      <xsl:apply-templates mode="kr-tabular"/>
365    </xsl:otherwise>
366  </xsl:choose>
367</xsl:template>
368
369<xsl:template match="void" mode="kr-tabular">
370  <td>
371    <code>)</code>
372    <xsl:text>;</xsl:text>
373  </td>
374  <td>&#160;</td>
375</xsl:template>
376
377<xsl:template match="varargs" mode="kr-tabular">
378  <td>
379    <xsl:text>...</xsl:text>
380    <code>)</code>
381    <xsl:text>;</xsl:text>
382  </td>
383  <td>&#160;</td>
384</xsl:template>
385
386<xsl:template match="paramdef" mode="kr-tabular">
387  <td>
388    <xsl:apply-templates select="parameter" mode="kr-tabular"/>
389    <xsl:choose>
390      <xsl:when test="following-sibling::*">
391        <xsl:text>, </xsl:text>
392      </xsl:when>
393      <xsl:otherwise>
394        <code>)</code>
395        <xsl:text>;</xsl:text>
396      </xsl:otherwise>
397    </xsl:choose>
398  </td>
399  <td>&#160;</td>
400</xsl:template>
401
402<xsl:template match="paramdef/parameter" mode="kr-tabular">
403  <xsl:choose>
404    <xsl:when test="$funcsynopsis.decoration != 0">
405      <var class="pdparam">
406        <xsl:apply-templates mode="kr-tabular"/>
407      </var>
408    </xsl:when>
409    <xsl:otherwise>
410      <code>
411        <xsl:apply-templates mode="kr-tabular"/>
412      </code>
413    </xsl:otherwise>
414  </xsl:choose>
415</xsl:template>
416
417<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
418  <xsl:variable name="type">
419    <xsl:choose>
420      <xsl:when test="type">
421        <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
422      </xsl:when>
423      <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
424        <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
425      </xsl:when>
426    </xsl:choose>
427  </xsl:variable>
428
429  <tr>
430    <xsl:choose>
431      <xsl:when test="$type != '' and funcparams">
432        <td>
433          <code>
434            <xsl:copy-of select="$type"/>
435          </code>
436          <xsl:text>&#160;</xsl:text>
437        </td>
438        <td>
439          <code>
440            <xsl:choose>
441              <xsl:when test="type">
442                <xsl:apply-templates select="type/following-sibling::*" mode="kr-tabular-funcsynopsis-mode"/>
443              </xsl:when>
444              <xsl:otherwise>
445                <xsl:apply-templates select="*" mode="kr-tabular-funcsynopsis-mode"/>
446              </xsl:otherwise>
447            </xsl:choose>
448          </code>
449        </td>
450      </xsl:when>
451
452      <xsl:when test="funcparams">
453        <td colspan="2">
454          <code>
455            <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
456          </code>
457        </td>
458      </xsl:when>
459
460      <xsl:otherwise>
461        <td>
462          <code>
463            <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
464          </code>
465          <xsl:text>&#160;</xsl:text>
466        </td>
467        <td>
468          <code>
469            <xsl:apply-templates select="parameter" mode="kr-tabular"/>
470            <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
471            <xsl:text>;</xsl:text>
472          </code>
473        </td>
474      </xsl:otherwise>
475    </xsl:choose>
476  </tr>
477</xsl:template>
478
479<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
480  <xsl:choose>
481    <xsl:when test="$funcsynopsis.decoration != 0">
482      <var class="pdparam">
483        <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
484      </var>
485    </xsl:when>
486    <xsl:otherwise>
487      <code>
488        <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
489      </code>
490    </xsl:otherwise>
491  </xsl:choose>
492</xsl:template>
493
494<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
495  <code>(</code>
496  <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
497  <code>)</code>
498  <xsl:text>;</xsl:text>
499</xsl:template>
500
501<!-- ====================================================================== -->
502<!-- funcprototype: ansi, non-tabular -->
503
504<xsl:template match="funcprototype" mode="ansi-nontabular">
505  <p>
506    <xsl:apply-templates mode="ansi-nontabular"/>
507  </p>
508</xsl:template>
509
510<xsl:template match="funcdef" mode="ansi-nontabular">
511  <code>
512    <xsl:apply-templates select="." mode="class.attribute"/>
513    <xsl:apply-templates mode="ansi-nontabular"/>
514    <xsl:text>(</xsl:text>
515  </code>
516</xsl:template>
517
518<xsl:template match="funcdef/function" mode="ansi-nontabular">
519  <xsl:choose>
520    <xsl:when test="$funcsynopsis.decoration != 0">
521      <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
522    </xsl:when>
523    <xsl:otherwise>
524      <xsl:apply-templates mode="ansi-nontabular"/>
525    </xsl:otherwise>
526  </xsl:choose>
527</xsl:template>
528
529<xsl:template match="void" mode="ansi-nontabular">
530  <code>void)</code>
531  <xsl:text>;</xsl:text>
532</xsl:template>
533
534<xsl:template match="varargs" mode="ansi-nontabular">
535  <xsl:text>...</xsl:text>
536  <code>)</code>
537  <xsl:text>;</xsl:text>
538</xsl:template>
539
540<xsl:template match="paramdef" mode="ansi-nontabular">
541  <xsl:apply-templates mode="ansi-nontabular"/>
542  <xsl:choose>
543    <xsl:when test="following-sibling::*">
544      <xsl:text>, </xsl:text>
545    </xsl:when>
546    <xsl:otherwise>
547      <code>)</code>
548      <xsl:text>;</xsl:text>
549    </xsl:otherwise>
550  </xsl:choose>
551</xsl:template>
552
553<xsl:template match="paramdef/parameter" mode="ansi-nontabular">
554  <xsl:choose>
555    <xsl:when test="$funcsynopsis.decoration != 0">
556      <var class="pdparam">
557        <xsl:apply-templates mode="ansi-nontabular"/>
558      </var>
559    </xsl:when>
560    <xsl:otherwise>
561      <code>
562        <xsl:apply-templates mode="ansi-nontabular"/>
563      </code>
564    </xsl:otherwise>
565  </xsl:choose>
566</xsl:template>
567
568<xsl:template match="funcparams" mode="ansi-nontabular">
569  <code>(</code>
570  <xsl:apply-templates mode="ansi-nontabular"/>
571  <code>)</code>
572</xsl:template>
573
574<!-- ====================================================================== -->
575<!-- funcprototype: ansi, tabular -->
576
577<xsl:template match="funcprototype" mode="ansi-tabular">
578  <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
579    <xsl:if test="following-sibling::funcprototype">
580      <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
581    </xsl:if>
582    <tr>
583      <td>
584        <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
585      </td>
586      <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
587    </tr>
588    <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
589      <tr>
590        <td>&#160;</td>
591        <xsl:apply-templates select="." mode="ansi-tabular"/>
592      </tr>
593    </xsl:for-each>
594  </table>
595</xsl:template>
596
597<xsl:template match="funcdef" mode="ansi-tabular">
598  <code>
599    <xsl:apply-templates select="." mode="class.attribute"/>
600    <xsl:apply-templates mode="ansi-tabular"/>
601    <xsl:text>(</xsl:text>
602  </code>
603</xsl:template>
604
605<xsl:template match="funcdef/function" mode="ansi-tabular">
606  <xsl:choose>
607    <xsl:when test="$funcsynopsis.decoration != 0">
608      <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
609    </xsl:when>
610    <xsl:otherwise>
611      <xsl:apply-templates mode="kr-tabular"/>
612    </xsl:otherwise>
613  </xsl:choose>
614</xsl:template>
615
616<xsl:template match="void" mode="ansi-tabular">
617  <td>
618    <code>void)</code>
619    <xsl:text>;</xsl:text>
620  </td>
621  <td>&#160;</td>
622</xsl:template>
623
624<xsl:template match="varargs" mode="ansi-tabular">
625  <td>
626    <xsl:text>...</xsl:text>
627    <code>)</code>
628    <xsl:text>;</xsl:text>
629  </td>
630  <td>&#160;</td>
631</xsl:template>
632
633<xsl:template match="paramdef" mode="ansi-tabular">
634  <xsl:variable name="type">
635    <xsl:choose>
636      <xsl:when test="type">
637        <xsl:apply-templates select="type" mode="ansi-tabular"/>
638      </xsl:when>
639      <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
640        <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
641      </xsl:when>
642    </xsl:choose>
643  </xsl:variable>
644
645  <xsl:choose>
646    <xsl:when test="$type != '' and funcparams">
647      <td>
648        <xsl:copy-of select="$type"/>
649        <xsl:text>&#160;</xsl:text>
650      </td>
651      <td>
652        <xsl:choose>
653          <xsl:when test="type">
654            <xsl:apply-templates select="type/following-sibling::*" mode="ansi-tabular"/>
655          </xsl:when>
656          <xsl:otherwise>
657            <xsl:apply-templates select="*" mode="ansi-tabular"/>
658          </xsl:otherwise>
659        </xsl:choose>
660        <xsl:choose>
661          <xsl:when test="following-sibling::*">
662            <xsl:text>, </xsl:text>
663          </xsl:when>
664          <xsl:otherwise>
665            <code>)</code>
666            <xsl:text>;</xsl:text>
667          </xsl:otherwise>
668        </xsl:choose>
669      </td>
670    </xsl:when>
671    <xsl:otherwise>
672      <td>
673        <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="ansi-tabular"/>
674        <xsl:text>&#160;</xsl:text>
675      </td>
676      <td>
677        <xsl:apply-templates select="parameter" mode="ansi-tabular"/>
678        <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="ansi-tabular"/>
679        <xsl:choose>
680          <xsl:when test="following-sibling::*">
681            <xsl:text>, </xsl:text>
682          </xsl:when>
683          <xsl:otherwise>
684            <code>)</code>
685            <xsl:text>;</xsl:text>
686          </xsl:otherwise>
687        </xsl:choose>
688      </td>
689    </xsl:otherwise>
690  </xsl:choose>
691</xsl:template>
692
693<xsl:template match="paramdef/parameter" mode="ansi-tabular">
694  <xsl:choose>
695    <xsl:when test="$funcsynopsis.decoration != 0">
696      <var class="pdparam">
697        <xsl:apply-templates mode="ansi-tabular"/>
698      </var>
699    </xsl:when>
700    <xsl:otherwise>
701      <code>
702        <xsl:apply-templates mode="ansi-tabular"/>
703      </code>
704    </xsl:otherwise>
705  </xsl:choose>
706</xsl:template>
707
708<xsl:template match="funcparams" mode="ansi-tabular">
709  <code>(</code>
710  <xsl:apply-templates/>
711  <code>)</code>
712</xsl:template>
713
714<!-- ====================================================================== -->
715
716<xsl:variable name="default-classsynopsis-language">java</xsl:variable>
717
718<xsl:template match="classsynopsis                      |fieldsynopsis                      |methodsynopsis                      |constructorsynopsis                      |destructorsynopsis">
719  <xsl:param name="language">
720    <xsl:choose>
721      <xsl:when test="@language">
722        <xsl:value-of select="@language"/>
723      </xsl:when>
724      <xsl:otherwise>
725        <xsl:value-of select="$default-classsynopsis-language"/>
726      </xsl:otherwise>
727    </xsl:choose>
728  </xsl:param>
729
730  <xsl:choose>
731    <xsl:when test="$language='java' or $language='Java'">
732      <xsl:apply-templates select="." mode="java"/>
733    </xsl:when>
734    <xsl:when test="$language='perl' or $language='Perl'">
735      <xsl:apply-templates select="." mode="perl"/>
736    </xsl:when>
737    <xsl:when test="$language='idl' or $language='IDL'">
738      <xsl:apply-templates select="." mode="idl"/>
739    </xsl:when>
740    <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
741      <xsl:apply-templates select="." mode="cpp"/>
742    </xsl:when>
743    <xsl:otherwise>
744      <xsl:message>
745        <xsl:text>Unrecognized language on </xsl:text>
746        <xsl:value-of select="local-name(.)"/>
747        <xsl:text>: </xsl:text>
748        <xsl:value-of select="$language"/>
749      </xsl:message>
750      <xsl:apply-templates select=".">
751        <xsl:with-param name="language" select="$default-classsynopsis-language"/>
752      </xsl:apply-templates>
753    </xsl:otherwise>
754  </xsl:choose>
755</xsl:template>
756
757<xsl:template name="synop-break">
758  <xsl:if test="parent::classsynopsis                 or (following-sibling::fieldsynopsis                     |following-sibling::methodsynopsis                     |following-sibling::constructorsynopsis                     |following-sibling::destructorsynopsis)">
759    <br/>
760  </xsl:if>
761</xsl:template>
762
763
764<!-- ===== Java ======================================================== -->
765
766<xsl:template match="classsynopsis" mode="java">
767  <pre>
768    <xsl:apply-templates select="." mode="class.attribute"/>
769    <xsl:apply-templates select="ooclass[1]" mode="java"/>
770    <xsl:if test="ooclass[preceding-sibling::*]">
771      <xsl:text> extends</xsl:text>
772      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
773      <xsl:if test="oointerface|ooexception">
774        <br/>
775        <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
776      </xsl:if>
777    </xsl:if>
778    <xsl:if test="oointerface">
779      <xsl:text>implements</xsl:text>
780      <xsl:apply-templates select="oointerface" mode="java"/>
781      <xsl:if test="ooexception">
782        <br/>
783        <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
784      </xsl:if>
785    </xsl:if>
786    <xsl:if test="ooexception">
787      <xsl:text>throws</xsl:text>
788      <xsl:apply-templates select="ooexception" mode="java"/>
789    </xsl:if>
790    <xsl:text>&#160;{</xsl:text>
791    <br/>
792    <xsl:apply-templates select="constructorsynopsis                                  |destructorsynopsis                                  |fieldsynopsis                                  |methodsynopsis                                  |classsynopsisinfo" mode="java"/>
793    <xsl:text>}</xsl:text>
794  </pre>
795</xsl:template>
796
797<xsl:template match="classsynopsisinfo" mode="java">
798  <xsl:apply-templates mode="java"/>
799</xsl:template>
800
801<xsl:template match="ooclass|oointerface|ooexception" mode="java">
802  <xsl:choose>
803    <xsl:when test="preceding-sibling::*">
804      <xsl:text>, </xsl:text>
805    </xsl:when>
806    <xsl:otherwise>
807      <xsl:text> </xsl:text>
808    </xsl:otherwise>
809  </xsl:choose>
810  <span>
811    <xsl:apply-templates select="." mode="class.attribute"/>
812    <xsl:apply-templates mode="java"/>
813  </span>
814</xsl:template>
815
816<xsl:template match="modifier|package" mode="java">
817  <span>
818    <xsl:apply-templates select="." mode="class.attribute"/>
819    <xsl:apply-templates mode="java"/>
820    <xsl:if test="following-sibling::*">
821      <xsl:text>&#160;</xsl:text>
822    </xsl:if>
823  </span>
824</xsl:template>
825
826<xsl:template match="classname" mode="java">
827  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
828    <xsl:text>, </xsl:text>
829  </xsl:if>
830  <span>
831    <xsl:apply-templates select="." mode="class.attribute"/>
832    <xsl:apply-templates mode="java"/>
833  </span>
834</xsl:template>
835
836<xsl:template match="interfacename" mode="java">
837  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
838    <xsl:text>, </xsl:text>
839  </xsl:if>
840  <span>
841    <xsl:apply-templates select="." mode="class.attribute"/>
842    <xsl:apply-templates mode="java"/>
843  </span>
844</xsl:template>
845
846<xsl:template match="exceptionname" mode="java">
847  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
848    <xsl:text>, </xsl:text>
849  </xsl:if>
850  <span>
851    <xsl:apply-templates select="." mode="class.attribute"/>
852    <xsl:apply-templates mode="java"/>
853  </span>
854</xsl:template>
855
856<xsl:template match="fieldsynopsis" mode="java">
857  <code>
858    <xsl:apply-templates select="." mode="class.attribute"/>
859    <xsl:if test="parent::classsynopsis">
860      <xsl:text>&#160;&#160;</xsl:text>
861    </xsl:if>
862    <xsl:apply-templates mode="java"/>
863    <xsl:text>;</xsl:text>
864  </code>
865  <xsl:call-template name="synop-break"/>
866</xsl:template>
867
868<xsl:template match="type" mode="java">
869  <span>
870    <xsl:apply-templates select="." mode="class.attribute"/>
871    <xsl:apply-templates mode="java"/>
872    <xsl:text>&#160;</xsl:text>
873  </span>
874</xsl:template>
875
876<xsl:template match="varname" mode="java">
877  <span>
878    <xsl:apply-templates select="." mode="class.attribute"/>
879    <xsl:apply-templates mode="java"/>
880    <xsl:text>&#160;</xsl:text>
881  </span>
882</xsl:template>
883
884<xsl:template match="initializer" mode="java">
885  <span>
886    <xsl:apply-templates select="." mode="class.attribute"/>
887    <xsl:text>=&#160;</xsl:text>
888    <xsl:apply-templates mode="java"/>
889  </span>
890</xsl:template>
891
892<xsl:template match="void" mode="java">
893  <span>
894    <xsl:apply-templates select="." mode="class.attribute"/>
895    <xsl:text>void&#160;</xsl:text>
896  </span>
897</xsl:template>
898
899<xsl:template match="methodname" mode="java">
900  <span>
901    <xsl:apply-templates select="." mode="class.attribute"/>
902    <xsl:apply-templates mode="java"/>
903  </span>
904</xsl:template>
905
906<xsl:template match="methodparam" mode="java">
907  <xsl:param name="indent">0</xsl:param>
908  <xsl:if test="preceding-sibling::methodparam">
909    <xsl:text>,</xsl:text>
910    <br/>
911    <xsl:if test="$indent &gt; 0">
912      <xsl:call-template name="copy-string">
913        <xsl:with-param name="string">&#160;</xsl:with-param>
914        <xsl:with-param name="count" select="$indent + 1"/>
915      </xsl:call-template>
916    </xsl:if>
917  </xsl:if>
918  <span>
919    <xsl:apply-templates select="." mode="class.attribute"/>
920    <xsl:apply-templates mode="java"/>
921  </span>
922</xsl:template>
923
924<xsl:template match="parameter" mode="java">
925  <span>
926    <xsl:apply-templates select="." mode="class.attribute"/>
927    <xsl:apply-templates mode="java"/>
928  </span>
929</xsl:template>
930
931<xsl:template mode="java" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
932  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
933  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
934  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
935  <xsl:variable name="decl">
936    <xsl:if test="parent::classsynopsis">
937      <xsl:text>&#160;&#160;</xsl:text>
938    </xsl:if>
939    <xsl:apply-templates select="$start-modifiers" mode="java"/>
940
941    <!-- type -->
942    <xsl:if test="local-name($notmod[1]) != 'methodname'">
943      <xsl:apply-templates select="$notmod[1]" mode="java"/>
944    </xsl:if>
945
946    <xsl:apply-templates select="methodname" mode="java"/>
947  </xsl:variable>
948
949  <code>
950    <xsl:apply-templates select="." mode="class.attribute"/>
951    <xsl:copy-of select="$decl"/>
952    <xsl:text>(</xsl:text>
953    <xsl:apply-templates select="methodparam" mode="java">
954      <xsl:with-param name="indent" select="string-length($decl)"/>
955    </xsl:apply-templates>
956    <xsl:text>)</xsl:text>
957    <xsl:if test="exceptionname">
958      <br/>
959      <xsl:text>&#160;&#160;&#160;&#160;throws&#160;</xsl:text>
960      <xsl:apply-templates select="exceptionname" mode="java"/>
961    </xsl:if>
962    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
963      <xsl:text> </xsl:text>
964      <xsl:apply-templates select="$end-modifiers" mode="java"/>
965    </xsl:if>
966    <xsl:text>;</xsl:text>
967  </code>
968  <xsl:call-template name="synop-break"/>
969</xsl:template>
970
971<!-- ===== C++ ========================================================= -->
972
973<xsl:template match="classsynopsis" mode="cpp">
974  <pre>
975    <xsl:apply-templates select="." mode="class.attribute"/>
976    <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
977    <xsl:if test="ooclass[preceding-sibling::*]">
978      <xsl:text>: </xsl:text>
979      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
980      <xsl:if test="oointerface|ooexception">
981        <br/>
982        <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
983      </xsl:if>
984    </xsl:if>
985    <xsl:if test="oointerface">
986      <xsl:text> implements</xsl:text>
987      <xsl:apply-templates select="oointerface" mode="cpp"/>
988      <xsl:if test="ooexception">
989        <br/>
990        <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
991      </xsl:if>
992    </xsl:if>
993    <xsl:if test="ooexception">
994      <xsl:text> throws</xsl:text>
995      <xsl:apply-templates select="ooexception" mode="cpp"/>
996    </xsl:if>
997    <xsl:text>&#160;{</xsl:text>
998    <br/>
999    <xsl:apply-templates select="constructorsynopsis                                  |destructorsynopsis                                  |fieldsynopsis                                  |methodsynopsis                                  |classsynopsisinfo" mode="cpp"/>
1000    <xsl:text>}</xsl:text>
1001  </pre>
1002</xsl:template>
1003
1004<xsl:template match="classsynopsisinfo" mode="cpp">
1005  <xsl:apply-templates mode="cpp"/>
1006</xsl:template>
1007
1008<xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
1009  <xsl:if test="preceding-sibling::*">
1010    <xsl:text>, </xsl:text>
1011  </xsl:if>
1012  <span>
1013    <xsl:apply-templates select="." mode="class.attribute"/>
1014    <xsl:apply-templates mode="cpp"/>
1015  </span>
1016</xsl:template>
1017
1018<xsl:template match="modifier|package" mode="cpp">
1019  <span>
1020    <xsl:apply-templates select="." mode="class.attribute"/>
1021    <xsl:apply-templates mode="cpp"/>
1022    <xsl:if test="following-sibling::*">
1023      <xsl:text>&#160;</xsl:text>
1024    </xsl:if>
1025  </span>
1026</xsl:template>
1027
1028<xsl:template match="classname" mode="cpp">
1029  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1030    <xsl:text>, </xsl:text>
1031  </xsl:if>
1032  <span>
1033    <xsl:apply-templates select="." mode="class.attribute"/>
1034    <xsl:apply-templates mode="cpp"/>
1035  </span>
1036</xsl:template>
1037
1038<xsl:template match="interfacename" mode="cpp">
1039  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1040    <xsl:text>, </xsl:text>
1041  </xsl:if>
1042  <span>
1043    <xsl:apply-templates select="." mode="class.attribute"/>
1044    <xsl:apply-templates mode="cpp"/>
1045  </span>
1046</xsl:template>
1047
1048<xsl:template match="exceptionname" mode="cpp">
1049  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1050    <xsl:text>, </xsl:text>
1051  </xsl:if>
1052  <span>
1053    <xsl:apply-templates select="." mode="class.attribute"/>
1054    <xsl:apply-templates mode="cpp"/>
1055  </span>
1056</xsl:template>
1057
1058<xsl:template match="fieldsynopsis" mode="cpp">
1059  <code>
1060    <xsl:apply-templates select="." mode="class.attribute"/>
1061    <xsl:if test="parent::classsynopsis">
1062      <xsl:text>&#160;&#160;</xsl:text>
1063    </xsl:if>
1064    <xsl:apply-templates mode="cpp"/>
1065    <xsl:text>;</xsl:text>
1066  </code>
1067  <xsl:call-template name="synop-break"/>
1068</xsl:template>
1069
1070<xsl:template match="type" mode="cpp">
1071  <span>
1072    <xsl:apply-templates select="." mode="class.attribute"/>
1073    <xsl:apply-templates mode="cpp"/>
1074    <xsl:text>&#160;</xsl:text>
1075  </span>
1076</xsl:template>
1077
1078<xsl:template match="varname" mode="cpp">
1079  <span>
1080    <xsl:apply-templates select="." mode="class.attribute"/>
1081    <xsl:apply-templates mode="cpp"/>
1082    <xsl:text>&#160;</xsl:text>
1083  </span>
1084</xsl:template>
1085
1086<xsl:template match="initializer" mode="cpp">
1087  <span>
1088    <xsl:apply-templates select="." mode="class.attribute"/>
1089    <xsl:text>=&#160;</xsl:text>
1090    <xsl:apply-templates mode="cpp"/>
1091  </span>
1092</xsl:template>
1093
1094<xsl:template match="void" mode="cpp">
1095  <span>
1096    <xsl:apply-templates select="." mode="class.attribute"/>
1097    <xsl:text>void&#160;</xsl:text>
1098  </span>
1099</xsl:template>
1100
1101<xsl:template match="methodname" mode="cpp">
1102  <span>
1103    <xsl:apply-templates select="." mode="class.attribute"/>
1104    <xsl:apply-templates mode="cpp"/>
1105  </span>
1106</xsl:template>
1107
1108<xsl:template match="methodparam" mode="cpp">
1109  <xsl:if test="preceding-sibling::methodparam">
1110    <xsl:text>, </xsl:text>
1111  </xsl:if>
1112  <span>
1113    <xsl:apply-templates select="." mode="class.attribute"/>
1114    <xsl:apply-templates mode="cpp"/>
1115  </span>
1116</xsl:template>
1117
1118<xsl:template match="parameter" mode="cpp">
1119  <span>
1120    <xsl:apply-templates select="." mode="class.attribute"/>
1121    <xsl:apply-templates mode="cpp"/>
1122  </span>
1123</xsl:template>
1124
1125<xsl:template mode="cpp" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1126  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1127  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1128  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1129
1130  <code>
1131    <xsl:apply-templates select="." mode="class.attribute"/>
1132    <xsl:if test="parent::classsynopsis">
1133      <xsl:text>&#160;&#160;</xsl:text>
1134    </xsl:if>
1135    <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
1136
1137    <!-- type -->
1138    <xsl:if test="local-name($notmod[1]) != 'methodname'">
1139      <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
1140    </xsl:if>
1141
1142    <xsl:apply-templates select="methodname" mode="cpp"/>
1143    <xsl:text>(</xsl:text>
1144    <xsl:apply-templates select="methodparam" mode="cpp"/>
1145    <xsl:text>)</xsl:text>
1146    <xsl:if test="exceptionname">
1147      <br/>
1148      <xsl:text>&#160;&#160;&#160;&#160;throws&#160;</xsl:text>
1149      <xsl:apply-templates select="exceptionname" mode="cpp"/>
1150    </xsl:if>
1151    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
1152      <xsl:text> </xsl:text>
1153      <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
1154    </xsl:if>
1155    <xsl:text>;</xsl:text>
1156  </code>
1157  <xsl:call-template name="synop-break"/>
1158</xsl:template>
1159
1160<!-- ===== IDL ========================================================= -->
1161
1162<xsl:template match="classsynopsis" mode="idl">
1163  <pre>
1164    <xsl:apply-templates select="." mode="class.attribute"/>
1165    <xsl:text>interface </xsl:text>
1166    <xsl:apply-templates select="ooclass[1]" mode="idl"/>
1167    <xsl:if test="ooclass[preceding-sibling::*]">
1168      <xsl:text>: </xsl:text>
1169      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
1170      <xsl:if test="oointerface|ooexception">
1171        <br/>
1172        <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
1173      </xsl:if>
1174    </xsl:if>
1175    <xsl:if test="oointerface">
1176      <xsl:text> implements</xsl:text>
1177      <xsl:apply-templates select="oointerface" mode="idl"/>
1178      <xsl:if test="ooexception">
1179        <br/>
1180        <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
1181      </xsl:if>
1182    </xsl:if>
1183    <xsl:if test="ooexception">
1184      <xsl:text> throws</xsl:text>
1185      <xsl:apply-templates select="ooexception" mode="idl"/>
1186    </xsl:if>
1187    <xsl:text>&#160;{</xsl:text>
1188    <br/>
1189    <xsl:apply-templates select="constructorsynopsis                                  |destructorsynopsis                                  |fieldsynopsis                                  |methodsynopsis                                  |classsynopsisinfo" mode="idl"/>
1190    <xsl:text>}</xsl:text>
1191  </pre>
1192</xsl:template>
1193
1194<xsl:template match="classsynopsisinfo" mode="idl">
1195  <xsl:apply-templates mode="idl"/>
1196</xsl:template>
1197
1198<xsl:template match="ooclass|oointerface|ooexception" mode="idl">
1199  <xsl:if test="preceding-sibling::*">
1200    <xsl:text>, </xsl:text>
1201  </xsl:if>
1202  <span>
1203    <xsl:apply-templates select="." mode="class.attribute"/>
1204    <xsl:apply-templates mode="idl"/>
1205  </span>
1206</xsl:template>
1207
1208<xsl:template match="modifier|package" mode="idl">
1209  <span>
1210    <xsl:apply-templates select="." mode="class.attribute"/>
1211    <xsl:apply-templates mode="idl"/>
1212    <xsl:if test="following-sibling::*">
1213      <xsl:text>&#160;</xsl:text>
1214    </xsl:if>
1215  </span>
1216</xsl:template>
1217
1218<xsl:template match="classname" mode="idl">
1219  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1220    <xsl:text>, </xsl:text>
1221  </xsl:if>
1222  <span>
1223    <xsl:apply-templates select="." mode="class.attribute"/>
1224    <xsl:apply-templates mode="idl"/>
1225  </span>
1226</xsl:template>
1227
1228<xsl:template match="interfacename" mode="idl">
1229  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1230    <xsl:text>, </xsl:text>
1231  </xsl:if>
1232  <span>
1233    <xsl:apply-templates select="." mode="class.attribute"/>
1234    <xsl:apply-templates mode="idl"/>
1235  </span>
1236</xsl:template>
1237
1238<xsl:template match="exceptionname" mode="idl">
1239  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1240    <xsl:text>, </xsl:text>
1241  </xsl:if>
1242  <span>
1243    <xsl:apply-templates select="." mode="class.attribute"/>
1244    <xsl:apply-templates mode="idl"/>
1245  </span>
1246</xsl:template>
1247
1248<xsl:template match="fieldsynopsis" mode="idl">
1249  <code>
1250    <xsl:apply-templates select="." mode="class.attribute"/>
1251    <xsl:if test="parent::classsynopsis">
1252      <xsl:text>&#160;&#160;</xsl:text>
1253    </xsl:if>
1254    <xsl:apply-templates mode="idl"/>
1255    <xsl:text>;</xsl:text>
1256  </code>
1257  <xsl:call-template name="synop-break"/>
1258</xsl:template>
1259
1260<xsl:template match="type" mode="idl">
1261  <span>
1262    <xsl:apply-templates select="." mode="class.attribute"/>
1263    <xsl:apply-templates mode="idl"/>
1264    <xsl:text>&#160;</xsl:text>
1265  </span>
1266</xsl:template>
1267
1268<xsl:template match="varname" mode="idl">
1269  <span>
1270    <xsl:apply-templates select="." mode="class.attribute"/>
1271    <xsl:apply-templates mode="idl"/>
1272    <xsl:text>&#160;</xsl:text>
1273  </span>
1274</xsl:template>
1275
1276<xsl:template match="initializer" mode="idl">
1277  <span>
1278    <xsl:apply-templates select="." mode="class.attribute"/>
1279    <xsl:text>=&#160;</xsl:text>
1280    <xsl:apply-templates mode="idl"/>
1281  </span>
1282</xsl:template>
1283
1284<xsl:template match="void" mode="idl">
1285  <span>
1286    <xsl:apply-templates select="." mode="class.attribute"/>
1287    <xsl:text>void&#160;</xsl:text>
1288  </span>
1289</xsl:template>
1290
1291<xsl:template match="methodname" mode="idl">
1292  <span>
1293    <xsl:apply-templates select="." mode="class.attribute"/>
1294    <xsl:apply-templates mode="idl"/>
1295  </span>
1296</xsl:template>
1297
1298<xsl:template match="methodparam" mode="idl">
1299  <xsl:if test="preceding-sibling::methodparam">
1300    <xsl:text>, </xsl:text>
1301  </xsl:if>
1302  <span>
1303    <xsl:apply-templates select="." mode="class.attribute"/>
1304    <xsl:apply-templates mode="idl"/>
1305  </span>
1306</xsl:template>
1307
1308<xsl:template match="parameter" mode="idl">
1309  <span>
1310    <xsl:apply-templates select="." mode="class.attribute"/>
1311    <xsl:apply-templates mode="idl"/>
1312  </span>
1313</xsl:template>
1314
1315<xsl:template mode="idl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1316  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1317  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1318  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1319  <code>
1320    <xsl:apply-templates select="." mode="class.attribute"/>
1321    <xsl:if test="parent::classsynopsis">
1322      <xsl:text>&#160;&#160;</xsl:text>
1323    </xsl:if>
1324    <xsl:apply-templates select="$start-modifiers" mode="idl"/>
1325
1326    <!-- type -->
1327    <xsl:if test="local-name($notmod[1]) != 'methodname'">
1328      <xsl:apply-templates select="$notmod[1]" mode="idl"/>
1329    </xsl:if>
1330
1331    <xsl:apply-templates select="methodname" mode="idl"/>
1332    <xsl:text>(</xsl:text>
1333    <xsl:apply-templates select="methodparam" mode="idl"/>
1334    <xsl:text>)</xsl:text>
1335    <xsl:if test="exceptionname">
1336      <br/>
1337      <xsl:text>&#160;&#160;&#160;&#160;raises(</xsl:text>
1338      <xsl:apply-templates select="exceptionname" mode="idl"/>
1339      <xsl:text>)</xsl:text>
1340    </xsl:if>
1341    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
1342      <xsl:text> </xsl:text>
1343      <xsl:apply-templates select="$end-modifiers" mode="idl"/>
1344    </xsl:if>
1345    <xsl:text>;</xsl:text>
1346  </code>
1347  <xsl:call-template name="synop-break"/>
1348</xsl:template>
1349
1350<!-- ===== Perl ======================================================== -->
1351
1352<xsl:template match="classsynopsis" mode="perl">
1353  <pre>
1354    <xsl:apply-templates select="." mode="class.attribute"/>
1355    <xsl:text>package </xsl:text>
1356    <xsl:apply-templates select="ooclass[1]" mode="perl"/>
1357    <xsl:text>;</xsl:text>
1358    <br/>
1359
1360    <xsl:if test="ooclass[preceding-sibling::*]">
1361      <xsl:text>@ISA = (</xsl:text>
1362      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
1363      <xsl:text>);</xsl:text>
1364      <br/>
1365    </xsl:if>
1366
1367    <xsl:apply-templates select="constructorsynopsis                                  |destructorsynopsis                                  |fieldsynopsis                                  |methodsynopsis                                  |classsynopsisinfo" mode="perl"/>
1368  </pre>
1369</xsl:template>
1370
1371<xsl:template match="classsynopsisinfo" mode="perl">
1372  <xsl:apply-templates mode="perl"/>
1373</xsl:template>
1374
1375<xsl:template match="ooclass|oointerface|ooexception" mode="perl">
1376  <xsl:if test="preceding-sibling::*">
1377    <xsl:text>, </xsl:text>
1378  </xsl:if>
1379  <span>
1380    <xsl:apply-templates select="." mode="class.attribute"/>
1381    <xsl:apply-templates mode="perl"/>
1382  </span>
1383</xsl:template>
1384
1385<xsl:template match="modifier|package" mode="perl">
1386  <span>
1387    <xsl:apply-templates select="." mode="class.attribute"/>
1388    <xsl:apply-templates mode="perl"/>
1389    <xsl:if test="following-sibling::*">
1390      <xsl:text>&#160;</xsl:text>
1391    </xsl:if>
1392  </span>
1393</xsl:template>
1394
1395<xsl:template match="classname" mode="perl">
1396  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1397    <xsl:text>, </xsl:text>
1398  </xsl:if>
1399  <span>
1400    <xsl:apply-templates select="." mode="class.attribute"/>
1401    <xsl:apply-templates mode="perl"/>
1402  </span>
1403</xsl:template>
1404
1405<xsl:template match="interfacename" mode="perl">
1406  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1407    <xsl:text>, </xsl:text>
1408  </xsl:if>
1409  <span>
1410    <xsl:apply-templates select="." mode="class.attribute"/>
1411    <xsl:apply-templates mode="perl"/>
1412  </span>
1413</xsl:template>
1414
1415<xsl:template match="exceptionname" mode="perl">
1416  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1417    <xsl:text>, </xsl:text>
1418  </xsl:if>
1419  <span>
1420    <xsl:apply-templates select="." mode="class.attribute"/>
1421    <xsl:apply-templates mode="perl"/>
1422  </span>
1423</xsl:template>
1424
1425<xsl:template match="fieldsynopsis" mode="perl">
1426  <code>
1427    <xsl:apply-templates select="." mode="class.attribute"/>
1428    <xsl:if test="parent::classsynopsis">
1429      <xsl:text>&#160;&#160;</xsl:text>
1430    </xsl:if>
1431    <xsl:apply-templates mode="perl"/>
1432    <xsl:text>;</xsl:text>
1433  </code>
1434  <xsl:call-template name="synop-break"/>
1435</xsl:template>
1436
1437<xsl:template match="type" mode="perl">
1438  <span>
1439    <xsl:apply-templates select="." mode="class.attribute"/>
1440    <xsl:apply-templates mode="perl"/>
1441    <xsl:text>&#160;</xsl:text>
1442  </span>
1443</xsl:template>
1444
1445<xsl:template match="varname" mode="perl">
1446  <span>
1447    <xsl:apply-templates select="." mode="class.attribute"/>
1448    <xsl:apply-templates mode="perl"/>
1449    <xsl:text>&#160;</xsl:text>
1450  </span>
1451</xsl:template>
1452
1453<xsl:template match="initializer" mode="perl">
1454  <span>
1455    <xsl:apply-templates select="." mode="class.attribute"/>
1456    <xsl:text>=&#160;</xsl:text>
1457    <xsl:apply-templates mode="perl"/>
1458  </span>
1459</xsl:template>
1460
1461<xsl:template match="void" mode="perl">
1462  <span>
1463    <xsl:apply-templates select="." mode="class.attribute"/>
1464    <xsl:text>void&#160;</xsl:text>
1465  </span>
1466</xsl:template>
1467
1468<xsl:template match="methodname" mode="perl">
1469  <span>
1470    <xsl:apply-templates select="." mode="class.attribute"/>
1471    <xsl:apply-templates mode="perl"/>
1472  </span>
1473</xsl:template>
1474
1475<xsl:template match="methodparam" mode="perl">
1476  <xsl:if test="preceding-sibling::methodparam">
1477    <xsl:text>, </xsl:text>
1478  </xsl:if>
1479  <span>
1480    <xsl:apply-templates select="." mode="class.attribute"/>
1481    <xsl:apply-templates mode="perl"/>
1482  </span>
1483</xsl:template>
1484
1485<xsl:template match="parameter" mode="perl">
1486  <span>
1487    <xsl:apply-templates select="." mode="class.attribute"/>
1488    <xsl:apply-templates mode="perl"/>
1489  </span>
1490</xsl:template>
1491
1492<xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1493  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1494  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1495  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1496
1497  <code>
1498    <xsl:apply-templates select="." mode="class.attribute"/>
1499    <xsl:text>sub </xsl:text>
1500
1501    <xsl:apply-templates select="methodname" mode="perl"/>
1502    <xsl:text> { ... };</xsl:text>
1503  </code>
1504  <xsl:call-template name="synop-break"/>
1505</xsl:template>
1506
1507<!-- ==================================================================== -->
1508
1509<!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
1510<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
1511<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
1512<!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
1513<!-- * per-mode matches for those linking elements in order for them -->
1514<!-- * to be processed as expected. -->
1515
1516<xsl:template match="link|olink|xref" mode="java">
1517  <xsl:apply-templates select="."/>
1518</xsl:template>
1519
1520<xsl:template match="link|olink|xref" mode="cpp">
1521  <xsl:apply-templates select="."/>
1522</xsl:template>
1523
1524<xsl:template match="link|olink|xref" mode="idl">
1525  <xsl:apply-templates select="."/>
1526</xsl:template>
1527
1528<xsl:template match="link|olink|xref" mode="perl">
1529  <xsl:apply-templates select="."/>
1530</xsl:template>
1531
1532</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.