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