cvsimport
[fvwm.git] / doc / docbook-xsl / html / synop.xsl
blob7df13e9202ae4ad8b11b7419bc7c87ac87efb07b
1 <?xml version='1.0'?>
2 <!DOCTYPE xsl:stylesheet [
3 <!ENTITY nbsp "&#160;">
4 ]>
5 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
6 version='1.0'>
8 <!-- ********************************************************************
9 $Id: synop.xsl,v 1.1 2007/03/10 05:15:13 scott Exp $
10 ********************************************************************
12 This file is part of the XSL DocBook Stylesheet distribution.
13 See ../README or http://nwalsh.com/docbook/xsl/ for copyright
14 and other information.
16 ******************************************************************** -->
18 <!-- ==================================================================== -->
20 <!-- synopsis is in verbatim -->
22 <!-- ==================================================================== -->
24 <xsl:template match="cmdsynopsis">
25 <div>
26 <xsl:apply-templates select="." mode="class.attribute"/>
27 <p>
28 <xsl:call-template name="anchor"/>
29 <xsl:apply-templates/>
30 </p>
31 </div>
32 </xsl:template>
34 <xsl:template match="cmdsynopsis/command">
35 <br/>
36 <xsl:call-template name="inline.monoseq"/>
37 <xsl:text> </xsl:text>
38 </xsl:template>
40 <xsl:template match="cmdsynopsis/command[1]" priority="2">
41 <xsl:call-template name="inline.monoseq"/>
42 <xsl:text> </xsl:text>
43 </xsl:template>
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>
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>
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>
113 <xsl:template match="sbr">
114 <br/>
115 </xsl:template>
117 <!-- ==================================================================== -->
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>
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>
135 <xsl:template match="synopfragment" mode="synopfragment.number">
136 <xsl:number format="1"/>
137 </xsl:template>
139 <xsl:template match="synopfragment">
140 <xsl:variable name="snum">
141 <xsl:apply-templates select="." mode="synopfragment.number"/>
142 </xsl:variable>
144 <xsl:variable name="id">
145 <xsl:call-template name="object.id"/>
146 </xsl:variable>
147 <a name="{$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>
157 <xsl:template match="funcsynopsis">
158 <xsl:call-template name="informal.object"/>
159 </xsl:template>
161 <xsl:template match="funcsynopsisinfo">
162 <pre>
163 <xsl:apply-templates select="." mode="class.attribute"/>
164 <xsl:apply-templates/>
165 </pre>
166 </xsl:template>
168 <!-- ====================================================================== -->
169 <!-- funcprototype -->
170 <!--
172 funcprototype ::= (funcdef,
173 (void|varargs|paramdef+))
175 funcdef ::= (#PCDATA|type|replaceable|function)*
177 paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
180 <xsl:template match="funcprototype">
181 <xsl:variable name="html-style">
182 <xsl:call-template name="dbhtml-attribute">
183 <xsl:with-param name="pis"
184 select="ancestor::funcsynopsis//processing-instruction('dbhtml')"/>
185 <xsl:with-param name="attribute" select="'funcsynopsis-style'"/>
186 </xsl:call-template>
187 </xsl:variable>
189 <xsl:variable name="style">
190 <xsl:choose>
191 <xsl:when test="$html-style != ''">
192 <xsl:value-of select="$html-style"/>
193 </xsl:when>
194 <xsl:otherwise>
195 <xsl:value-of select="$funcsynopsis.style"/>
196 </xsl:otherwise>
197 </xsl:choose>
198 </xsl:variable>
200 <!--
201 <xsl:variable name="tabular-p"
202 select="$funcsynopsis.tabular.threshold &gt; 0
203 and string-length(.) &gt; $funcsynopsis.tabular.threshold"/>
206 <xsl:variable name="tabular-p" select="true()"/>
208 <xsl:choose>
209 <xsl:when test="$style = 'kr' and $tabular-p">
210 <xsl:apply-templates select="." mode="kr-tabular"/>
211 </xsl:when>
212 <xsl:when test="$style = 'kr'">
213 <xsl:apply-templates select="." mode="kr-nontabular"/>
214 </xsl:when>
215 <xsl:when test="$style = 'ansi' and $tabular-p">
216 <xsl:apply-templates select="." mode="ansi-tabular"/>
217 </xsl:when>
218 <xsl:otherwise>
219 <xsl:apply-templates select="." mode="ansi-nontabular"/>
220 </xsl:otherwise>
221 </xsl:choose>
222 </xsl:template>
224 <!-- ====================================================================== -->
225 <!-- funcprototype: kr, non-tabular -->
227 <xsl:template match="funcprototype" mode="kr-nontabular">
229 <xsl:apply-templates mode="kr-nontabular"/>
230 <xsl:if test="paramdef">
231 <br/>
232 <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
233 </xsl:if>
234 </p>
235 </xsl:template>
237 <xsl:template match="funcdef" mode="kr-nontabular">
238 <code>
239 <xsl:apply-templates select="." mode="class.attribute"/>
240 <xsl:apply-templates mode="kr-nontabular"/>
241 <xsl:text>(</xsl:text>
242 </code>
243 </xsl:template>
245 <xsl:template match="funcdef/function" mode="kr-nontabular">
246 <xsl:choose>
247 <xsl:when test="$funcsynopsis.decoration != 0">
248 <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
249 </xsl:when>
250 <xsl:otherwise>
251 <xsl:apply-templates mode="kr-nontabular"/>
252 </xsl:otherwise>
253 </xsl:choose>
254 </xsl:template>
256 <xsl:template match="void" mode="kr-nontabular">
257 <code>)</code>
258 <xsl:text>;</xsl:text>
259 </xsl:template>
261 <xsl:template match="varargs" mode="kr-nontabular">
262 <xsl:text>...</xsl:text>
263 <code>)</code>
264 <xsl:text>;</xsl:text>
265 </xsl:template>
267 <xsl:template match="paramdef" mode="kr-nontabular">
268 <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
269 <xsl:choose>
270 <xsl:when test="following-sibling::*">
271 <xsl:text>, </xsl:text>
272 </xsl:when>
273 <xsl:otherwise>
274 <code>)</code>
275 <xsl:text>;</xsl:text>
276 </xsl:otherwise>
277 </xsl:choose>
278 </xsl:template>
280 <xsl:template match="paramdef/parameter" mode="kr-nontabular">
281 <xsl:choose>
282 <xsl:when test="$funcsynopsis.decoration != 0">
283 <var class="pdparam">
284 <xsl:apply-templates mode="kr-nontabular"/>
285 </var>
286 </xsl:when>
287 <xsl:otherwise>
288 <code>
289 <xsl:apply-templates mode="kr-nontabular"/>
290 </code>
291 </xsl:otherwise>
292 </xsl:choose>
293 </xsl:template>
295 <xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
296 <xsl:if test="preceding-sibling::paramdef"><br/></xsl:if>
297 <code>
298 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
299 </code>
300 <xsl:text>;</xsl:text>
301 </xsl:template>
303 <xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
304 <xsl:choose>
305 <xsl:when test="$funcsynopsis.decoration != 0">
306 <var class="pdparam">
307 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
308 </var>
309 </xsl:when>
310 <xsl:otherwise>
311 <code>
312 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
313 </code>
314 </xsl:otherwise>
315 </xsl:choose>
316 </xsl:template>
318 <xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
319 <code>(</code>
320 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
321 <code>)</code>
322 </xsl:template>
324 <!-- ====================================================================== -->
325 <!-- funcprototype: kr, tabular -->
327 <xsl:template match="funcprototype" mode="kr-tabular">
328 <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"
329 style="padding-bottom: 1em">
330 <tr>
331 <td>
332 <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
333 </td>
334 <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
335 </tr>
336 <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
337 <tr>
338 <td>&#160;</td>
339 <xsl:apply-templates select="." mode="kr-tabular"/>
340 </tr>
341 </xsl:for-each>
342 </table>
343 <xsl:if test="paramdef">
344 <table border="0" summary="Function argument synopsis"
345 cellspacing="0" cellpadding="0">
346 <xsl:if test="following-sibling::funcprototype">
347 <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
348 </xsl:if>
349 <xsl:apply-templates select="paramdef" mode="kr-tabular-funcsynopsis-mode"/>
350 </table>
351 </xsl:if>
352 </xsl:template>
354 <xsl:template match="funcdef" mode="kr-tabular">
355 <code>
356 <xsl:apply-templates select="." mode="class.attribute"/>
357 <xsl:apply-templates mode="kr-tabular"/>
358 <xsl:text>(</xsl:text>
359 </code>
360 </xsl:template>
362 <xsl:template match="funcdef/function" mode="kr-tabular">
363 <xsl:choose>
364 <xsl:when test="$funcsynopsis.decoration != 0">
365 <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b>
366 </xsl:when>
367 <xsl:otherwise>
368 <xsl:apply-templates mode="kr-tabular"/>
369 </xsl:otherwise>
370 </xsl:choose>
371 </xsl:template>
373 <xsl:template match="void" mode="kr-tabular">
374 <td>
375 <code>)</code>
376 <xsl:text>;</xsl:text>
377 </td>
378 <td>&#160;</td>
379 </xsl:template>
381 <xsl:template match="varargs" mode="kr-tabular">
382 <td>
383 <xsl:text>...</xsl:text>
384 <code>)</code>
385 <xsl:text>;</xsl:text>
386 </td>
387 <td>&#160;</td>
388 </xsl:template>
390 <xsl:template match="paramdef" mode="kr-tabular">
391 <td>
392 <xsl:apply-templates select="parameter" mode="kr-tabular"/>
393 <xsl:choose>
394 <xsl:when test="following-sibling::*">
395 <xsl:text>, </xsl:text>
396 </xsl:when>
397 <xsl:otherwise>
398 <code>)</code>
399 <xsl:text>;</xsl:text>
400 </xsl:otherwise>
401 </xsl:choose>
402 </td>
403 <td>&#160;</td>
404 </xsl:template>
406 <xsl:template match="paramdef/parameter" mode="kr-tabular">
407 <xsl:choose>
408 <xsl:when test="$funcsynopsis.decoration != 0">
409 <var class="pdparam">
410 <xsl:apply-templates mode="kr-tabular"/>
411 </var>
412 </xsl:when>
413 <xsl:otherwise>
414 <code>
415 <xsl:apply-templates mode="kr-tabular"/>
416 </code>
417 </xsl:otherwise>
418 </xsl:choose>
419 </xsl:template>
421 <xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
422 <xsl:variable name="type">
423 <xsl:choose>
424 <xsl:when test="type">
425 <xsl:apply-templates select="type"
426 mode="kr-tabular-funcsynopsis-mode"/>
427 </xsl:when>
428 <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
429 <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
430 </xsl:when>
431 </xsl:choose>
432 </xsl:variable>
434 <tr>
435 <xsl:choose>
436 <xsl:when test="$type != '' and funcparams">
437 <td>
438 <code>
439 <xsl:copy-of select="$type"/>
440 </code>
441 <xsl:text>&#160;</xsl:text>
442 </td>
443 <td>
444 <code>
445 <xsl:choose>
446 <xsl:when test="type">
447 <xsl:apply-templates select="type/following-sibling::*"
448 mode="kr-tabular-funcsynopsis-mode"/>
449 </xsl:when>
450 <xsl:otherwise>
451 <xsl:apply-templates select="*"
452 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)]"
471 mode="kr-tabular-funcsynopsis-mode"/>
472 </code>
473 <xsl:text>&#160;</xsl:text>
474 </td>
475 <td>
476 <code>
477 <xsl:apply-templates select="parameter"
478 mode="kr-tabular"/>
479 <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]"
480 mode="kr-tabular-funcsynopsis-mode"/>
481 <xsl:text>;</xsl:text>
482 </code>
483 </td>
484 </xsl:otherwise>
485 </xsl:choose>
486 </tr>
487 </xsl:template>
489 <xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
490 <xsl:choose>
491 <xsl:when test="$funcsynopsis.decoration != 0">
492 <var class="pdparam">
493 <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
494 </var>
495 </xsl:when>
496 <xsl:otherwise>
497 <code>
498 <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
499 </code>
500 </xsl:otherwise>
501 </xsl:choose>
502 </xsl:template>
504 <xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
505 <code>(</code>
506 <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
507 <code>)</code>
508 <xsl:text>;</xsl:text>
509 </xsl:template>
511 <!-- ====================================================================== -->
512 <!-- funcprototype: ansi, non-tabular -->
514 <xsl:template match="funcprototype" mode="ansi-nontabular">
516 <xsl:apply-templates mode="ansi-nontabular"/>
517 </p>
518 </xsl:template>
520 <xsl:template match="funcdef" mode="ansi-nontabular">
521 <code>
522 <xsl:apply-templates select="." mode="class.attribute"/>
523 <xsl:apply-templates mode="ansi-nontabular"/>
524 <xsl:text>(</xsl:text>
525 </code>
526 </xsl:template>
528 <xsl:template match="funcdef/function" mode="ansi-nontabular">
529 <xsl:choose>
530 <xsl:when test="$funcsynopsis.decoration != 0">
531 <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
532 </xsl:when>
533 <xsl:otherwise>
534 <xsl:apply-templates mode="ansi-nontabular"/>
535 </xsl:otherwise>
536 </xsl:choose>
537 </xsl:template>
539 <xsl:template match="void" mode="ansi-nontabular">
540 <code>void)</code>
541 <xsl:text>;</xsl:text>
542 </xsl:template>
544 <xsl:template match="varargs" mode="ansi-nontabular">
545 <xsl:text>...</xsl:text>
546 <code>)</code>
547 <xsl:text>;</xsl:text>
548 </xsl:template>
550 <xsl:template match="paramdef" mode="ansi-nontabular">
551 <xsl:apply-templates mode="ansi-nontabular"/>
552 <xsl:choose>
553 <xsl:when test="following-sibling::*">
554 <xsl:text>, </xsl:text>
555 </xsl:when>
556 <xsl:otherwise>
557 <code>)</code>
558 <xsl:text>;</xsl:text>
559 </xsl:otherwise>
560 </xsl:choose>
561 </xsl:template>
563 <xsl:template match="paramdef/parameter" mode="ansi-nontabular">
564 <xsl:choose>
565 <xsl:when test="$funcsynopsis.decoration != 0">
566 <var class="pdparam">
567 <xsl:apply-templates mode="ansi-nontabular"/>
568 </var>
569 </xsl:when>
570 <xsl:otherwise>
571 <code>
572 <xsl:apply-templates mode="ansi-nontabular"/>
573 </code>
574 </xsl:otherwise>
575 </xsl:choose>
576 </xsl:template>
578 <xsl:template match="funcparams" mode="ansi-nontabular">
579 <code>(</code>
580 <xsl:apply-templates mode="ansi-nontabular"/>
581 <code>)</code>
582 </xsl:template>
584 <!-- ====================================================================== -->
585 <!-- funcprototype: ansi, tabular -->
587 <xsl:template match="funcprototype" mode="ansi-tabular">
588 <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
589 <xsl:if test="following-sibling::funcprototype">
590 <xsl:attribute name="style">padding-bottom: 1em</xsl:attribute>
591 </xsl:if>
592 <tr>
593 <td>
594 <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
595 </td>
596 <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
597 </tr>
598 <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
599 <tr>
600 <td>&#160;</td>
601 <xsl:apply-templates select="." mode="ansi-tabular"/>
602 </tr>
603 </xsl:for-each>
604 </table>
605 </xsl:template>
607 <xsl:template match="funcdef" mode="ansi-tabular">
608 <code>
609 <xsl:apply-templates select="." mode="class.attribute"/>
610 <xsl:apply-templates mode="ansi-tabular"/>
611 <xsl:text>(</xsl:text>
612 </code>
613 </xsl:template>
615 <xsl:template match="funcdef/function" mode="ansi-tabular">
616 <xsl:choose>
617 <xsl:when test="$funcsynopsis.decoration != 0">
618 <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b>
619 </xsl:when>
620 <xsl:otherwise>
621 <xsl:apply-templates mode="kr-tabular"/>
622 </xsl:otherwise>
623 </xsl:choose>
624 </xsl:template>
626 <xsl:template match="void" mode="ansi-tabular">
627 <td>
628 <code>void)</code>
629 <xsl:text>;</xsl:text>
630 </td>
631 <td>&#160;</td>
632 </xsl:template>
634 <xsl:template match="varargs" mode="ansi-tabular">
635 <td>
636 <xsl:text>...</xsl:text>
637 <code>)</code>
638 <xsl:text>;</xsl:text>
639 </td>
640 <td>&#160;</td>
641 </xsl:template>
643 <xsl:template match="paramdef" mode="ansi-tabular">
644 <xsl:variable name="type">
645 <xsl:choose>
646 <xsl:when test="type">
647 <xsl:apply-templates select="type"
648 mode="ansi-tabular"/>
649 </xsl:when>
650 <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
651 <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
652 </xsl:when>
653 </xsl:choose>
654 </xsl:variable>
656 <xsl:choose>
657 <xsl:when test="$type != '' and funcparams">
658 <td>
659 <xsl:copy-of select="$type"/>
660 <xsl:text>&#160;</xsl:text>
661 </td>
662 <td>
663 <xsl:choose>
664 <xsl:when test="type">
665 <xsl:apply-templates select="type/following-sibling::*"
666 mode="ansi-tabular"/>
667 </xsl:when>
668 <xsl:otherwise>
669 <xsl:apply-templates select="*"
670 mode="ansi-tabular"/>
671 </xsl:otherwise>
672 </xsl:choose>
673 <xsl:choose>
674 <xsl:when test="following-sibling::*">
675 <xsl:text>, </xsl:text>
676 </xsl:when>
677 <xsl:otherwise>
678 <code>)</code>
679 <xsl:text>;</xsl:text>
680 </xsl:otherwise>
681 </xsl:choose>
682 </td>
683 </xsl:when>
684 <xsl:otherwise>
685 <td>
686 <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]"
687 mode="ansi-tabular"/>
688 <xsl:text>&#160;</xsl:text>
689 </td>
690 <td>
691 <xsl:apply-templates select="parameter"
692 mode="ansi-tabular"/>
693 <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]"
694 mode="ansi-tabular"/>
695 <xsl:choose>
696 <xsl:when test="following-sibling::*">
697 <xsl:text>, </xsl:text>
698 </xsl:when>
699 <xsl:otherwise>
700 <code>)</code>
701 <xsl:text>;</xsl:text>
702 </xsl:otherwise>
703 </xsl:choose>
704 </td>
705 </xsl:otherwise>
706 </xsl:choose>
707 </xsl:template>
709 <xsl:template match="paramdef/parameter" mode="ansi-tabular">
710 <xsl:choose>
711 <xsl:when test="$funcsynopsis.decoration != 0">
712 <var class="pdparam">
713 <xsl:apply-templates mode="ansi-tabular"/>
714 </var>
715 </xsl:when>
716 <xsl:otherwise>
717 <code>
718 <xsl:apply-templates mode="ansi-tabular"/>
719 </code>
720 </xsl:otherwise>
721 </xsl:choose>
722 </xsl:template>
724 <xsl:template match="funcparams" mode="ansi-tabular">
725 <code>(</code>
726 <xsl:apply-templates/>
727 <code>)</code>
728 </xsl:template>
730 <!-- ====================================================================== -->
732 <xsl:variable name="default-classsynopsis-language">java</xsl:variable>
734 <xsl:template match="classsynopsis
735 |fieldsynopsis
736 |methodsynopsis
737 |constructorsynopsis
738 |destructorsynopsis">
739 <xsl:param name="language">
740 <xsl:choose>
741 <xsl:when test="@language">
742 <xsl:value-of select="@language"/>
743 </xsl:when>
744 <xsl:otherwise>
745 <xsl:value-of select="$default-classsynopsis-language"/>
746 </xsl:otherwise>
747 </xsl:choose>
748 </xsl:param>
750 <xsl:choose>
751 <xsl:when test="$language='java' or $language='Java'">
752 <xsl:apply-templates select="." mode="java"/>
753 </xsl:when>
754 <xsl:when test="$language='perl' or $language='Perl'">
755 <xsl:apply-templates select="." mode="perl"/>
756 </xsl:when>
757 <xsl:when test="$language='idl' or $language='IDL'">
758 <xsl:apply-templates select="." mode="idl"/>
759 </xsl:when>
760 <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
761 <xsl:apply-templates select="." mode="cpp"/>
762 </xsl:when>
763 <xsl:otherwise>
764 <xsl:message>
765 <xsl:text>Unrecognized language on </xsl:text>
766 <xsl:value-of select="local-name(.)"/>
767 <xsl:text>: </xsl:text>
768 <xsl:value-of select="$language"/>
769 </xsl:message>
770 <xsl:apply-templates select=".">
771 <xsl:with-param name="language"
772 select="$default-classsynopsis-language"/>
773 </xsl:apply-templates>
774 </xsl:otherwise>
775 </xsl:choose>
776 </xsl:template>
778 <xsl:template name="synop-break">
779 <xsl:if test="parent::classsynopsis
780 or (following-sibling::fieldsynopsis
781 |following-sibling::methodsynopsis
782 |following-sibling::constructorsynopsis
783 |following-sibling::destructorsynopsis)">
784 <br/>
785 </xsl:if>
786 </xsl:template>
789 <!-- ===== Java ======================================================== -->
791 <xsl:template match="classsynopsis" mode="java">
792 <pre>
793 <xsl:apply-templates select="." mode="class.attribute"/>
794 <xsl:apply-templates select="ooclass[1]" mode="java"/>
795 <xsl:if test="ooclass[preceding-sibling::*]">
796 <xsl:text> extends</xsl:text>
797 <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
798 <xsl:if test="oointerface|ooexception">
799 <br/>
800 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
801 </xsl:if>
802 </xsl:if>
803 <xsl:if test="oointerface">
804 <xsl:text>implements</xsl:text>
805 <xsl:apply-templates select="oointerface" mode="java"/>
806 <xsl:if test="ooexception">
807 <br/>
808 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
809 </xsl:if>
810 </xsl:if>
811 <xsl:if test="ooexception">
812 <xsl:text>throws</xsl:text>
813 <xsl:apply-templates select="ooexception" mode="java"/>
814 </xsl:if>
815 <xsl:text>&nbsp;{</xsl:text>
816 <br/>
817 <xsl:apply-templates select="constructorsynopsis
818 |destructorsynopsis
819 |fieldsynopsis
820 |methodsynopsis
821 |classsynopsisinfo" mode="java"/>
822 <xsl:text>}</xsl:text>
823 </pre>
824 </xsl:template>
826 <xsl:template match="classsynopsisinfo" mode="java">
827 <xsl:apply-templates mode="java"/>
828 </xsl:template>
830 <xsl:template match="ooclass|oointerface|ooexception" mode="java">
831 <xsl:choose>
832 <xsl:when test="preceding-sibling::*">
833 <xsl:text>, </xsl:text>
834 </xsl:when>
835 <xsl:otherwise>
836 <xsl:text> </xsl:text>
837 </xsl:otherwise>
838 </xsl:choose>
839 <span>
840 <xsl:apply-templates select="." mode="class.attribute"/>
841 <xsl:apply-templates mode="java"/>
842 </span>
843 </xsl:template>
845 <xsl:template match="modifier|package" mode="java">
846 <span>
847 <xsl:apply-templates select="." mode="class.attribute"/>
848 <xsl:apply-templates mode="java"/>
849 <xsl:if test="following-sibling::*">
850 <xsl:text>&nbsp;</xsl:text>
851 </xsl:if>
852 </span>
853 </xsl:template>
855 <xsl:template match="classname" mode="java">
856 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
857 <xsl:text>, </xsl:text>
858 </xsl:if>
859 <span>
860 <xsl:apply-templates select="." mode="class.attribute"/>
861 <xsl:apply-templates mode="java"/>
862 </span>
863 </xsl:template>
865 <xsl:template match="interfacename" mode="java">
866 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
867 <xsl:text>, </xsl:text>
868 </xsl:if>
869 <span>
870 <xsl:apply-templates select="." mode="class.attribute"/>
871 <xsl:apply-templates mode="java"/>
872 </span>
873 </xsl:template>
875 <xsl:template match="exceptionname" mode="java">
876 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
877 <xsl:text>, </xsl:text>
878 </xsl:if>
879 <span>
880 <xsl:apply-templates select="." mode="class.attribute"/>
881 <xsl:apply-templates mode="java"/>
882 </span>
883 </xsl:template>
885 <xsl:template match="fieldsynopsis" mode="java">
886 <code>
887 <xsl:apply-templates select="." mode="class.attribute"/>
888 <xsl:if test="parent::classsynopsis">
889 <xsl:text>&nbsp;&nbsp;</xsl:text>
890 </xsl:if>
891 <xsl:apply-templates mode="java"/>
892 <xsl:text>;</xsl:text>
893 </code>
894 <xsl:call-template name="synop-break"/>
895 </xsl:template>
897 <xsl:template match="type" mode="java">
898 <span>
899 <xsl:apply-templates select="." mode="class.attribute"/>
900 <xsl:apply-templates mode="java"/>
901 <xsl:text>&nbsp;</xsl:text>
902 </span>
903 </xsl:template>
905 <xsl:template match="varname" mode="java">
906 <span>
907 <xsl:apply-templates select="." mode="class.attribute"/>
908 <xsl:apply-templates mode="java"/>
909 <xsl:text>&nbsp;</xsl:text>
910 </span>
911 </xsl:template>
913 <xsl:template match="initializer" mode="java">
914 <span>
915 <xsl:apply-templates select="." mode="class.attribute"/>
916 <xsl:text>=&nbsp;</xsl:text>
917 <xsl:apply-templates mode="java"/>
918 </span>
919 </xsl:template>
921 <xsl:template match="void" mode="java">
922 <span>
923 <xsl:apply-templates select="." mode="class.attribute"/>
924 <xsl:text>void&nbsp;</xsl:text>
925 </span>
926 </xsl:template>
928 <xsl:template match="methodname" mode="java">
929 <span>
930 <xsl:apply-templates select="." mode="class.attribute"/>
931 <xsl:apply-templates mode="java"/>
932 </span>
933 </xsl:template>
935 <xsl:template match="methodparam" mode="java">
936 <xsl:param name="indent">0</xsl:param>
937 <xsl:if test="preceding-sibling::methodparam">
938 <xsl:text>,</xsl:text>
939 <br/>
940 <xsl:if test="$indent &gt; 0">
941 <xsl:call-template name="copy-string">
942 <xsl:with-param name="string">&nbsp;</xsl:with-param>
943 <xsl:with-param name="count" select="$indent + 1"/>
944 </xsl:call-template>
945 </xsl:if>
946 </xsl:if>
947 <span>
948 <xsl:apply-templates select="." mode="class.attribute"/>
949 <xsl:apply-templates mode="java"/>
950 </span>
951 </xsl:template>
953 <xsl:template match="parameter" mode="java">
954 <span>
955 <xsl:apply-templates select="." mode="class.attribute"/>
956 <xsl:apply-templates mode="java"/>
957 </span>
958 </xsl:template>
960 <xsl:template mode="java"
961 match="constructorsynopsis|destructorsynopsis|methodsynopsis">
962 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
963 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
964 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
965 <xsl:variable name="decl">
966 <xsl:if test="parent::classsynopsis">
967 <xsl:text>&nbsp;&nbsp;</xsl:text>
968 </xsl:if>
969 <xsl:apply-templates select="$start-modifiers" mode="java"/>
971 <!-- type -->
972 <xsl:if test="local-name($notmod[1]) != 'methodname'">
973 <xsl:apply-templates select="$notmod[1]" mode="java"/>
974 </xsl:if>
976 <xsl:apply-templates select="methodname" mode="java"/>
977 </xsl:variable>
979 <code>
980 <xsl:apply-templates select="." mode="class.attribute"/>
981 <xsl:copy-of select="$decl"/>
982 <xsl:text>(</xsl:text>
983 <xsl:apply-templates select="methodparam" mode="java">
984 <xsl:with-param name="indent" select="string-length($decl)"/>
985 </xsl:apply-templates>
986 <xsl:text>)</xsl:text>
987 <xsl:if test="exceptionname">
988 <br/>
989 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
990 <xsl:apply-templates select="exceptionname" mode="java"/>
991 </xsl:if>
992 <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
993 <xsl:text> </xsl:text>
994 <xsl:apply-templates select="$end-modifiers" mode="java"/>
995 </xsl:if>
996 <xsl:text>;</xsl:text>
997 </code>
998 <xsl:call-template name="synop-break"/>
999 </xsl:template>
1001 <!-- ===== C++ ========================================================= -->
1003 <xsl:template match="classsynopsis" mode="cpp">
1004 <pre>
1005 <xsl:apply-templates select="." mode="class.attribute"/>
1006 <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
1007 <xsl:if test="ooclass[preceding-sibling::*]">
1008 <xsl:text>: </xsl:text>
1009 <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/>
1010 <xsl:if test="oointerface|ooexception">
1011 <br/>
1012 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
1013 </xsl:if>
1014 </xsl:if>
1015 <xsl:if test="oointerface">
1016 <xsl:text> implements</xsl:text>
1017 <xsl:apply-templates select="oointerface" mode="cpp"/>
1018 <xsl:if test="ooexception">
1019 <br/>
1020 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
1021 </xsl:if>
1022 </xsl:if>
1023 <xsl:if test="ooexception">
1024 <xsl:text> throws</xsl:text>
1025 <xsl:apply-templates select="ooexception" mode="cpp"/>
1026 </xsl:if>
1027 <xsl:text>&nbsp;{</xsl:text>
1028 <br/>
1029 <xsl:apply-templates select="constructorsynopsis
1030 |destructorsynopsis
1031 |fieldsynopsis
1032 |methodsynopsis
1033 |classsynopsisinfo" mode="cpp"/>
1034 <xsl:text>}</xsl:text>
1035 </pre>
1036 </xsl:template>
1038 <xsl:template match="classsynopsisinfo" mode="cpp">
1039 <xsl:apply-templates mode="cpp"/>
1040 </xsl:template>
1042 <xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
1043 <xsl:if test="preceding-sibling::*">
1044 <xsl:text>, </xsl:text>
1045 </xsl:if>
1046 <span>
1047 <xsl:apply-templates select="." mode="class.attribute"/>
1048 <xsl:apply-templates mode="cpp"/>
1049 </span>
1050 </xsl:template>
1052 <xsl:template match="modifier|package" mode="cpp">
1053 <span>
1054 <xsl:apply-templates select="." mode="class.attribute"/>
1055 <xsl:apply-templates mode="cpp"/>
1056 <xsl:if test="following-sibling::*">
1057 <xsl:text>&nbsp;</xsl:text>
1058 </xsl:if>
1059 </span>
1060 </xsl:template>
1062 <xsl:template match="classname" mode="cpp">
1063 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1064 <xsl:text>, </xsl:text>
1065 </xsl:if>
1066 <span>
1067 <xsl:apply-templates select="." mode="class.attribute"/>
1068 <xsl:apply-templates mode="cpp"/>
1069 </span>
1070 </xsl:template>
1072 <xsl:template match="interfacename" mode="cpp">
1073 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1074 <xsl:text>, </xsl:text>
1075 </xsl:if>
1076 <span>
1077 <xsl:apply-templates select="." mode="class.attribute"/>
1078 <xsl:apply-templates mode="cpp"/>
1079 </span>
1080 </xsl:template>
1082 <xsl:template match="exceptionname" mode="cpp">
1083 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1084 <xsl:text>, </xsl:text>
1085 </xsl:if>
1086 <span>
1087 <xsl:apply-templates select="." mode="class.attribute"/>
1088 <xsl:apply-templates mode="cpp"/>
1089 </span>
1090 </xsl:template>
1092 <xsl:template match="fieldsynopsis" mode="cpp">
1093 <code>
1094 <xsl:apply-templates select="." mode="class.attribute"/>
1095 <xsl:if test="parent::classsynopsis">
1096 <xsl:text>&nbsp;&nbsp;</xsl:text>
1097 </xsl:if>
1098 <xsl:apply-templates mode="cpp"/>
1099 <xsl:text>;</xsl:text>
1100 </code>
1101 <xsl:call-template name="synop-break"/>
1102 </xsl:template>
1104 <xsl:template match="type" mode="cpp">
1105 <span>
1106 <xsl:apply-templates select="." mode="class.attribute"/>
1107 <xsl:apply-templates mode="cpp"/>
1108 <xsl:text>&nbsp;</xsl:text>
1109 </span>
1110 </xsl:template>
1112 <xsl:template match="varname" mode="cpp">
1113 <span>
1114 <xsl:apply-templates select="." mode="class.attribute"/>
1115 <xsl:apply-templates mode="cpp"/>
1116 <xsl:text>&nbsp;</xsl:text>
1117 </span>
1118 </xsl:template>
1120 <xsl:template match="initializer" mode="cpp">
1121 <span>
1122 <xsl:apply-templates select="." mode="class.attribute"/>
1123 <xsl:text>=&nbsp;</xsl:text>
1124 <xsl:apply-templates mode="cpp"/>
1125 </span>
1126 </xsl:template>
1128 <xsl:template match="void" mode="cpp">
1129 <span>
1130 <xsl:apply-templates select="." mode="class.attribute"/>
1131 <xsl:text>void&nbsp;</xsl:text>
1132 </span>
1133 </xsl:template>
1135 <xsl:template match="methodname" mode="cpp">
1136 <span>
1137 <xsl:apply-templates select="." mode="class.attribute"/>
1138 <xsl:apply-templates mode="cpp"/>
1139 </span>
1140 </xsl:template>
1142 <xsl:template match="methodparam" mode="cpp">
1143 <xsl:if test="preceding-sibling::methodparam">
1144 <xsl:text>, </xsl:text>
1145 </xsl:if>
1146 <span>
1147 <xsl:apply-templates select="." mode="class.attribute"/>
1148 <xsl:apply-templates mode="cpp"/>
1149 </span>
1150 </xsl:template>
1152 <xsl:template match="parameter" mode="cpp">
1153 <span>
1154 <xsl:apply-templates select="." mode="class.attribute"/>
1155 <xsl:apply-templates mode="cpp"/>
1156 </span>
1157 </xsl:template>
1159 <xsl:template mode="cpp"
1160 match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1161 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1162 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1163 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1165 <code>
1166 <xsl:apply-templates select="." mode="class.attribute"/>
1167 <xsl:if test="parent::classsynopsis">
1168 <xsl:text>&nbsp;&nbsp;</xsl:text>
1169 </xsl:if>
1170 <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
1172 <!-- type -->
1173 <xsl:if test="local-name($notmod[1]) != 'methodname'">
1174 <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
1175 </xsl:if>
1177 <xsl:apply-templates select="methodname" mode="cpp"/>
1178 <xsl:text>(</xsl:text>
1179 <xsl:apply-templates select="methodparam" mode="cpp"/>
1180 <xsl:text>)</xsl:text>
1181 <xsl:if test="exceptionname">
1182 <br/>
1183 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;</xsl:text>
1184 <xsl:apply-templates select="exceptionname" mode="cpp"/>
1185 </xsl:if>
1186 <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
1187 <xsl:text> </xsl:text>
1188 <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
1189 </xsl:if>
1190 <xsl:text>;</xsl:text>
1191 </code>
1192 <xsl:call-template name="synop-break"/>
1193 </xsl:template>
1195 <!-- ===== IDL ========================================================= -->
1197 <xsl:template match="classsynopsis" mode="idl">
1198 <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 <br/>
1207 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
1208 </xsl:if>
1209 </xsl:if>
1210 <xsl:if test="oointerface">
1211 <xsl:text> implements</xsl:text>
1212 <xsl:apply-templates select="oointerface" mode="idl"/>
1213 <xsl:if test="ooexception">
1214 <br/>
1215 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
1216 </xsl:if>
1217 </xsl:if>
1218 <xsl:if test="ooexception">
1219 <xsl:text> throws</xsl:text>
1220 <xsl:apply-templates select="ooexception" mode="idl"/>
1221 </xsl:if>
1222 <xsl:text>&nbsp;{</xsl:text>
1223 <br/>
1224 <xsl:apply-templates select="constructorsynopsis
1225 |destructorsynopsis
1226 |fieldsynopsis
1227 |methodsynopsis
1228 |classsynopsisinfo" mode="idl"/>
1229 <xsl:text>}</xsl:text>
1230 </pre>
1231 </xsl:template>
1233 <xsl:template match="classsynopsisinfo" mode="idl">
1234 <xsl:apply-templates mode="idl"/>
1235 </xsl:template>
1237 <xsl:template match="ooclass|oointerface|ooexception" mode="idl">
1238 <xsl:if test="preceding-sibling::*">
1239 <xsl:text>, </xsl:text>
1240 </xsl:if>
1241 <span>
1242 <xsl:apply-templates select="." mode="class.attribute"/>
1243 <xsl:apply-templates mode="idl"/>
1244 </span>
1245 </xsl:template>
1247 <xsl:template match="modifier|package" mode="idl">
1248 <span>
1249 <xsl:apply-templates select="." mode="class.attribute"/>
1250 <xsl:apply-templates mode="idl"/>
1251 <xsl:if test="following-sibling::*">
1252 <xsl:text>&nbsp;</xsl:text>
1253 </xsl:if>
1254 </span>
1255 </xsl:template>
1257 <xsl:template match="classname" mode="idl">
1258 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1259 <xsl:text>, </xsl:text>
1260 </xsl:if>
1261 <span>
1262 <xsl:apply-templates select="." mode="class.attribute"/>
1263 <xsl:apply-templates mode="idl"/>
1264 </span>
1265 </xsl:template>
1267 <xsl:template match="interfacename" mode="idl">
1268 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1269 <xsl:text>, </xsl:text>
1270 </xsl:if>
1271 <span>
1272 <xsl:apply-templates select="." mode="class.attribute"/>
1273 <xsl:apply-templates mode="idl"/>
1274 </span>
1275 </xsl:template>
1277 <xsl:template match="exceptionname" mode="idl">
1278 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1279 <xsl:text>, </xsl:text>
1280 </xsl:if>
1281 <span>
1282 <xsl:apply-templates select="." mode="class.attribute"/>
1283 <xsl:apply-templates mode="idl"/>
1284 </span>
1285 </xsl:template>
1287 <xsl:template match="fieldsynopsis" mode="idl">
1288 <code>
1289 <xsl:apply-templates select="." mode="class.attribute"/>
1290 <xsl:if test="parent::classsynopsis">
1291 <xsl:text>&nbsp;&nbsp;</xsl:text>
1292 </xsl:if>
1293 <xsl:apply-templates mode="idl"/>
1294 <xsl:text>;</xsl:text>
1295 </code>
1296 <xsl:call-template name="synop-break"/>
1297 </xsl:template>
1299 <xsl:template match="type" mode="idl">
1300 <span>
1301 <xsl:apply-templates select="." mode="class.attribute"/>
1302 <xsl:apply-templates mode="idl"/>
1303 <xsl:text>&nbsp;</xsl:text>
1304 </span>
1305 </xsl:template>
1307 <xsl:template match="varname" mode="idl">
1308 <span>
1309 <xsl:apply-templates select="." mode="class.attribute"/>
1310 <xsl:apply-templates mode="idl"/>
1311 <xsl:text>&nbsp;</xsl:text>
1312 </span>
1313 </xsl:template>
1315 <xsl:template match="initializer" mode="idl">
1316 <span>
1317 <xsl:apply-templates select="." mode="class.attribute"/>
1318 <xsl:text>=&nbsp;</xsl:text>
1319 <xsl:apply-templates mode="idl"/>
1320 </span>
1321 </xsl:template>
1323 <xsl:template match="void" mode="idl">
1324 <span>
1325 <xsl:apply-templates select="." mode="class.attribute"/>
1326 <xsl:text>void&nbsp;</xsl:text>
1327 </span>
1328 </xsl:template>
1330 <xsl:template match="methodname" mode="idl">
1331 <span>
1332 <xsl:apply-templates select="." mode="class.attribute"/>
1333 <xsl:apply-templates mode="idl"/>
1334 </span>
1335 </xsl:template>
1337 <xsl:template match="methodparam" mode="idl">
1338 <xsl:if test="preceding-sibling::methodparam">
1339 <xsl:text>, </xsl:text>
1340 </xsl:if>
1341 <span>
1342 <xsl:apply-templates select="." mode="class.attribute"/>
1343 <xsl:apply-templates mode="idl"/>
1344 </span>
1345 </xsl:template>
1347 <xsl:template match="parameter" mode="idl">
1348 <span>
1349 <xsl:apply-templates select="." mode="class.attribute"/>
1350 <xsl:apply-templates mode="idl"/>
1351 </span>
1352 </xsl:template>
1354 <xsl:template mode="idl"
1355 match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1356 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1357 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1358 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1359 <code>
1360 <xsl:apply-templates select="." mode="class.attribute"/>
1361 <xsl:if test="parent::classsynopsis">
1362 <xsl:text>&nbsp;&nbsp;</xsl:text>
1363 </xsl:if>
1364 <xsl:apply-templates select="$start-modifiers" mode="idl"/>
1366 <!-- type -->
1367 <xsl:if test="local-name($notmod[1]) != 'methodname'">
1368 <xsl:apply-templates select="$notmod[1]" mode="idl"/>
1369 </xsl:if>
1371 <xsl:apply-templates select="methodname" mode="idl"/>
1372 <xsl:text>(</xsl:text>
1373 <xsl:apply-templates select="methodparam" mode="idl"/>
1374 <xsl:text>)</xsl:text>
1375 <xsl:if test="exceptionname">
1376 <br/>
1377 <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;raises(</xsl:text>
1378 <xsl:apply-templates select="exceptionname" mode="idl"/>
1379 <xsl:text>)</xsl:text>
1380 </xsl:if>
1381 <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
1382 <xsl:text> </xsl:text>
1383 <xsl:apply-templates select="$end-modifiers" mode="idl"/>
1384 </xsl:if>
1385 <xsl:text>;</xsl:text>
1386 </code>
1387 <xsl:call-template name="synop-break"/>
1388 </xsl:template>
1390 <!-- ===== Perl ======================================================== -->
1392 <xsl:template match="classsynopsis" mode="perl">
1393 <pre>
1394 <xsl:apply-templates select="." mode="class.attribute"/>
1395 <xsl:text>package </xsl:text>
1396 <xsl:apply-templates select="ooclass[1]" mode="perl"/>
1397 <xsl:text>;</xsl:text>
1398 <br/>
1400 <xsl:if test="ooclass[preceding-sibling::*]">
1401 <xsl:text>@ISA = (</xsl:text>
1402 <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
1403 <xsl:text>);</xsl:text>
1404 <br/>
1405 </xsl:if>
1407 <xsl:apply-templates select="constructorsynopsis
1408 |destructorsynopsis
1409 |fieldsynopsis
1410 |methodsynopsis
1411 |classsynopsisinfo" mode="perl"/>
1412 </pre>
1413 </xsl:template>
1415 <xsl:template match="classsynopsisinfo" mode="perl">
1416 <xsl:apply-templates mode="perl"/>
1417 </xsl:template>
1419 <xsl:template match="ooclass|oointerface|ooexception" mode="perl">
1420 <xsl:if test="preceding-sibling::*">
1421 <xsl:text>, </xsl:text>
1422 </xsl:if>
1423 <span>
1424 <xsl:apply-templates select="." mode="class.attribute"/>
1425 <xsl:apply-templates mode="perl"/>
1426 </span>
1427 </xsl:template>
1429 <xsl:template match="modifier|package" mode="perl">
1430 <span>
1431 <xsl:apply-templates select="." mode="class.attribute"/>
1432 <xsl:apply-templates mode="perl"/>
1433 <xsl:if test="following-sibling::*">
1434 <xsl:text>&nbsp;</xsl:text>
1435 </xsl:if>
1436 </span>
1437 </xsl:template>
1439 <xsl:template match="classname" mode="perl">
1440 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1441 <xsl:text>, </xsl:text>
1442 </xsl:if>
1443 <span>
1444 <xsl:apply-templates select="." mode="class.attribute"/>
1445 <xsl:apply-templates mode="perl"/>
1446 </span>
1447 </xsl:template>
1449 <xsl:template match="interfacename" mode="perl">
1450 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1451 <xsl:text>, </xsl:text>
1452 </xsl:if>
1453 <span>
1454 <xsl:apply-templates select="." mode="class.attribute"/>
1455 <xsl:apply-templates mode="perl"/>
1456 </span>
1457 </xsl:template>
1459 <xsl:template match="exceptionname" mode="perl">
1460 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1461 <xsl:text>, </xsl:text>
1462 </xsl:if>
1463 <span>
1464 <xsl:apply-templates select="." mode="class.attribute"/>
1465 <xsl:apply-templates mode="perl"/>
1466 </span>
1467 </xsl:template>
1469 <xsl:template match="fieldsynopsis" mode="perl">
1470 <code>
1471 <xsl:apply-templates select="." mode="class.attribute"/>
1472 <xsl:if test="parent::classsynopsis">
1473 <xsl:text>&nbsp;&nbsp;</xsl:text>
1474 </xsl:if>
1475 <xsl:apply-templates mode="perl"/>
1476 <xsl:text>;</xsl:text>
1477 </code>
1478 <xsl:call-template name="synop-break"/>
1479 </xsl:template>
1481 <xsl:template match="type" mode="perl">
1482 <span>
1483 <xsl:apply-templates select="." mode="class.attribute"/>
1484 <xsl:apply-templates mode="perl"/>
1485 <xsl:text>&nbsp;</xsl:text>
1486 </span>
1487 </xsl:template>
1489 <xsl:template match="varname" mode="perl">
1490 <span>
1491 <xsl:apply-templates select="." mode="class.attribute"/>
1492 <xsl:apply-templates mode="perl"/>
1493 <xsl:text>&nbsp;</xsl:text>
1494 </span>
1495 </xsl:template>
1497 <xsl:template match="initializer" mode="perl">
1498 <span>
1499 <xsl:apply-templates select="." mode="class.attribute"/>
1500 <xsl:text>=&nbsp;</xsl:text>
1501 <xsl:apply-templates mode="perl"/>
1502 </span>
1503 </xsl:template>
1505 <xsl:template match="void" mode="perl">
1506 <span>
1507 <xsl:apply-templates select="." mode="class.attribute"/>
1508 <xsl:text>void&nbsp;</xsl:text>
1509 </span>
1510 </xsl:template>
1512 <xsl:template match="methodname" mode="perl">
1513 <span>
1514 <xsl:apply-templates select="." mode="class.attribute"/>
1515 <xsl:apply-templates mode="perl"/>
1516 </span>
1517 </xsl:template>
1519 <xsl:template match="methodparam" mode="perl">
1520 <xsl:if test="preceding-sibling::methodparam">
1521 <xsl:text>, </xsl:text>
1522 </xsl:if>
1523 <span>
1524 <xsl:apply-templates select="." mode="class.attribute"/>
1525 <xsl:apply-templates mode="perl"/>
1526 </span>
1527 </xsl:template>
1529 <xsl:template match="parameter" mode="perl">
1530 <span>
1531 <xsl:apply-templates select="." mode="class.attribute"/>
1532 <xsl:apply-templates mode="perl"/>
1533 </span>
1534 </xsl:template>
1536 <xsl:template mode="perl"
1537 match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1538 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1539 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1540 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1542 <code>
1543 <xsl:apply-templates select="." mode="class.attribute"/>
1544 <xsl:text>sub </xsl:text>
1546 <xsl:apply-templates select="methodname" mode="perl"/>
1547 <xsl:text> { ... };</xsl:text>
1548 </code>
1549 <xsl:call-template name="synop-break"/>
1550 </xsl:template>
1552 <!-- ==================================================================== -->
1554 <!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
1555 <!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
1556 <!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
1557 <!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
1558 <!-- * per-mode matches for those linking elements in order for them -->
1559 <!-- * to be processed as expected. -->
1561 <xsl:template match="link|olink|xref" mode="java">
1562 <xsl:apply-templates select="."/>
1563 </xsl:template>
1565 <xsl:template match="link|olink|xref" mode="cpp">
1566 <xsl:apply-templates select="."/>
1567 </xsl:template>
1569 <xsl:template match="link|olink|xref" mode="idl">
1570 <xsl:apply-templates select="."/>
1571 </xsl:template>
1573 <xsl:template match="link|olink|xref" mode="perl">
1574 <xsl:apply-templates select="."/>
1575 </xsl:template>
1577 </xsl:stylesheet>