2 <!DOCTYPE xsl:stylesheet [
<!ENTITY RE
" "> ]
>
3 <xsl:stylesheet xmlns:
xsl=
"http://www.w3.org/1999/XSL/Transform" version='
1.0'
>
4 <!--#############################################################################
5 |- #############################################################################
8 + ############################################################################## -->
12 <xsl:template match=
"classsynopsis">
13 <!-- PARAM language : -->
14 <xsl:param name=
"language">
16 <xsl:when test=
"@language">
17 <xsl:value-of select=
"@language"/>
20 <xsl:value-of select=
"$default-classsynopsis-language"/>
26 <xsl:when test=
"$language='java'"> <xsl:apply-templates select=
"." mode=
"java"/> </xsl:when>
27 <xsl:when test=
"$language='perl'"> <xsl:apply-templates select=
"." mode=
"perl"/> </xsl:when>
28 <xsl:when test=
"$language='idl'"> <xsl:apply-templates select=
"." mode=
"idl"/> </xsl:when>
29 <xsl:when test=
"$language='cpp'"> <xsl:apply-templates select=
"." mode=
"cpp"/> </xsl:when>
31 <xsl:message>Unrecognized language on classsynopsis:
<xsl:value-of select=
"$language"/> </xsl:message>
32 <xsl:apply-templates select=
".">
33 <xsl:with-param name=
"language" select=
"$default-classsynopsis-language"/>
34 </xsl:apply-templates>
43 <!-- ===== Java ======================================================== -->
45 <xsl:template match=
"classsynopsis" mode=
"java">
46 <pre class=
"{name(.)}">
47 <xsl:apply-templates select=
"ooclass[1]" mode=
"java"/>
48 <xsl:if test=
"ooclass[position() > 1]">
49 <xsl:text> extends
</xsl:text>
50 <xsl:apply-templates select=
"ooclass[position() > 1]" mode=
"java"/>
51 <xsl:if test=
"oointerface|ooexception">
52 <xsl:text>&RE; </xsl:text>
55 <xsl:if test=
"oointerface">
56 <xsl:text>implements
</xsl:text>
57 <xsl:apply-templates select=
"oointerface" mode=
"java"/>
58 <xsl:if test=
"ooexception">
59 <xsl:text>&RE; </xsl:text>
62 <xsl:if test=
"ooexception">
63 <xsl:text>throws
</xsl:text>
64 <xsl:apply-templates select=
"ooexception" mode=
"java"/>
66 <xsl:text> {
&RE;&RE;</xsl:text>
67 <xsl:apply-templates select=
"constructorsynopsis
71 |classsynopsisinfo" mode=
"java"/>
72 <xsl:text>}
</xsl:text>
76 <xsl:template match=
"classsynopsisinfo" mode=
"java">
77 <xsl:apply-templates mode=
"java"/>
80 <xsl:template match=
"ooclass|oointerface|ooexception" mode=
"java">
82 <xsl:when test=
"position() > 1">
83 <xsl:text>,
</xsl:text>
86 <xsl:text> </xsl:text>
90 <xsl:apply-templates mode=
"java"/>
94 <xsl:template match=
"modifier" mode=
"java">
96 <xsl:apply-templates mode=
"java"/>
97 <xsl:text> </xsl:text>
101 <xsl:template match=
"classname" mode=
"java">
102 <xsl:if test=
"name(preceding-sibling::*[1]) = 'classname'">
103 <xsl:text>,
</xsl:text>
106 <xsl:apply-templates mode=
"java"/>
110 <xsl:template match=
"interfacename" mode=
"java">
111 <xsl:if test=
"name(preceding-sibling::*[1]) = 'interfacename'">
112 <xsl:text>,
</xsl:text>
115 <xsl:apply-templates mode=
"java"/>
119 <xsl:template match=
"exceptionname" mode=
"java">
120 <xsl:if test=
"name(preceding-sibling::*[1]) = 'exceptionname'">
121 <xsl:text>,
</xsl:text>
124 <xsl:apply-templates mode=
"java"/>
128 <xsl:template match=
"fieldsynopsis" mode=
"java">
130 <xsl:text> </xsl:text>
131 <xsl:apply-templates mode=
"java"/>
132 <xsl:text>;
</xsl:text>
136 <xsl:template match=
"type" mode=
"java">
138 <xsl:apply-templates mode=
"java"/>
139 <xsl:text> </xsl:text>
143 <xsl:template match=
"varname" mode=
"java">
145 <xsl:apply-templates mode=
"java"/>
146 <xsl:text> </xsl:text>
150 <xsl:template match=
"initializer" mode=
"java">
152 <xsl:text>=
</xsl:text>
153 <xsl:apply-templates mode=
"java"/>
157 <xsl:template match=
"void" mode=
"java">
159 <xsl:text>void
</xsl:text>
163 <xsl:template match=
"methodname" mode=
"java">
165 <xsl:apply-templates mode=
"java"/>
171 <xsl:template match=
"methodparam" mode=
"java">
172 <!-- PARAM: indent := 0 -->
173 <xsl:param name=
"indent">0</xsl:param>
174 <xsl:if test=
"position() > 1">
175 <xsl:text>,
&RE;</xsl:text>
176 <xsl:if test=
"$indent > 0">
177 <!-- RCAS FIXME: copy-string does not exist
178 <xsl:call-template name="copy-string">
179 <xsl:with-param name="string"> </xsl:with-param>
180 <xsl:with-param name="count" select="$indent + 1"/>
185 <xsl:apply-templates mode=
"java"/>
190 <xsl:template match=
"parameter" mode=
"java">
191 <xsl:apply-templates mode=
"java"/>
194 <xsl:template mode=
"java"
195 match=
"constructorsynopsis|destructorsynopsis|methodsynopsis">
196 <xsl:variable name=
"modifiers" select=
"modifier"/>
197 <xsl:variable name=
"notmod" select=
"*[name(.) != 'modifier']"/>
198 <xsl:variable name=
"decl">
199 <xsl:text> </xsl:text>
200 <xsl:apply-templates select=
"$modifiers" mode=
"java"/>
203 <xsl:if test=
"name($notmod[1]) != 'methodname'">
204 <xsl:apply-templates select=
"$notmod[1]" mode=
"java"/>
207 <xsl:apply-templates select=
"methodname" mode=
"java"/>
211 <xsl:copy-of select=
"$decl"/>
212 <xsl:text>(
</xsl:text>
213 <xsl:apply-templates select=
"methodparam" mode=
"java">
214 <xsl:with-param name=
"indent" select=
"string-length($decl)"/>
215 </xsl:apply-templates>
216 <xsl:text>)
</xsl:text>
217 <xsl:if test=
"exceptionname">
218 <xsl:text>&RE; throws
</xsl:text>
219 <xsl:apply-templates select=
"exceptionname" mode=
"java"/>
221 <xsl:text>;
</xsl:text>
225 <!-- ===== C++ ========================================================= -->
227 <xsl:template match=
"classsynopsis" mode=
"cpp">
228 <pre class=
"{name(.)}">
229 <xsl:apply-templates select=
"ooclass[1]" mode=
"cpp"/>
230 <xsl:if test=
"ooclass[position() > 1]">
231 <xsl:text>:
</xsl:text>
232 <xsl:apply-templates select=
"ooclass[position() > 1]" mode=
"cpp"/>
233 <xsl:if test=
"oointerface|ooexception">
234 <xsl:text>&RE; </xsl:text>
237 <xsl:if test=
"oointerface">
238 <xsl:text> implements
</xsl:text>
239 <xsl:apply-templates select=
"oointerface" mode=
"cpp"/>
240 <xsl:if test=
"ooexception">
241 <xsl:text>&RE; </xsl:text>
244 <xsl:if test=
"ooexception">
245 <xsl:text> throws
</xsl:text>
246 <xsl:apply-templates select=
"ooexception" mode=
"cpp"/>
248 <xsl:text> {
&RE;&RE;</xsl:text>
249 <xsl:apply-templates select=
"constructorsynopsis
253 |classsynopsisinfo" mode=
"cpp"/>
254 <xsl:text>}
</xsl:text>
258 <xsl:template match=
"classsynopsisinfo" mode=
"cpp">
259 <xsl:apply-templates mode=
"cpp"/>
262 <xsl:template match=
"ooclass|oointerface|ooexception" mode=
"cpp">
263 <xsl:if test=
"position() > 1">
264 <xsl:text>,
</xsl:text>
267 <xsl:apply-templates mode=
"cpp"/>
271 <xsl:template match=
"modifier" mode=
"cpp">
273 <xsl:apply-templates mode=
"cpp"/>
274 <xsl:text> </xsl:text>
278 <xsl:template match=
"classname" mode=
"cpp">
279 <xsl:if test=
"name(preceding-sibling::*[1]) = 'classname'">
280 <xsl:text>,
</xsl:text>
283 <xsl:apply-templates mode=
"cpp"/>
287 <xsl:template match=
"interfacename" mode=
"cpp">
288 <xsl:if test=
"name(preceding-sibling::*[1]) = 'interfacename'">
289 <xsl:text>,
</xsl:text>
292 <xsl:apply-templates mode=
"cpp"/>
296 <xsl:template match=
"exceptionname" mode=
"cpp">
297 <xsl:if test=
"name(preceding-sibling::*[1]) = 'exceptionname'">
298 <xsl:text>,
</xsl:text>
301 <xsl:apply-templates mode=
"cpp"/>
305 <xsl:template match=
"fieldsynopsis" mode=
"cpp">
307 <xsl:text> </xsl:text>
308 <xsl:apply-templates mode=
"cpp"/>
309 <xsl:text>;
</xsl:text>
313 <xsl:template match=
"type" mode=
"cpp">
315 <xsl:apply-templates mode=
"cpp"/>
316 <xsl:text> </xsl:text>
320 <xsl:template match=
"varname" mode=
"cpp">
322 <xsl:apply-templates mode=
"cpp"/>
323 <xsl:text> </xsl:text>
327 <xsl:template match=
"initializer" mode=
"cpp">
329 <xsl:text>=
</xsl:text>
330 <xsl:apply-templates mode=
"cpp"/>
334 <xsl:template match=
"void" mode=
"cpp">
336 <xsl:text>void
</xsl:text>
340 <xsl:template match=
"methodname" mode=
"cpp">
342 <xsl:apply-templates mode=
"cpp"/>
346 <xsl:template match=
"methodparam" mode=
"cpp">
347 <xsl:if test=
"position() > 1">
348 <xsl:text>,
</xsl:text>
351 <xsl:apply-templates mode=
"cpp"/>
355 <xsl:template match=
"parameter" mode=
"cpp">
357 <xsl:apply-templates mode=
"cpp"/>
361 <xsl:template mode=
"cpp"
362 match=
"constructorsynopsis|destructorsynopsis|methodsynopsis">
363 <xsl:variable name=
"modifiers" select=
"modifier"/>
364 <xsl:variable name=
"notmod" select=
"*[name(.) != 'modifier']"/>
365 <xsl:variable name=
"type">
368 <xsl:text> </xsl:text>
369 <xsl:apply-templates select=
"$modifiers" mode=
"cpp"/>
372 <xsl:if test=
"name($notmod[1]) != 'methodname'">
373 <xsl:apply-templates select=
"$notmod[1]" mode=
"cpp"/>
376 <xsl:apply-templates select=
"methodname" mode=
"cpp"/>
377 <xsl:text>(
</xsl:text>
378 <xsl:apply-templates select=
"methodparam" mode=
"cpp"/>
379 <xsl:text>)
</xsl:text>
380 <xsl:if test=
"exceptionname">
381 <xsl:text>&RE; throws
</xsl:text>
382 <xsl:apply-templates select=
"exceptionname" mode=
"cpp"/>
384 <xsl:text>;
</xsl:text>
388 <!-- ===== IDL ========================================================= -->
390 <xsl:template match=
"classsynopsis" mode=
"idl">
391 <pre class=
"{name(.)}">
392 <xsl:text>interface
</xsl:text>
393 <xsl:apply-templates select=
"ooclass[1]" mode=
"idl"/>
394 <xsl:if test=
"ooclass[position() > 1]">
395 <xsl:text>:
</xsl:text>
396 <xsl:apply-templates select=
"ooclass[position() > 1]" mode=
"idl"/>
397 <xsl:if test=
"oointerface|ooexception">
398 <xsl:text>&RE; </xsl:text>
401 <xsl:if test=
"oointerface">
402 <xsl:text> implements
</xsl:text>
403 <xsl:apply-templates select=
"oointerface" mode=
"idl"/>
404 <xsl:if test=
"ooexception">
405 <xsl:text>&RE; </xsl:text>
408 <xsl:if test=
"ooexception">
409 <xsl:text> throws
</xsl:text>
410 <xsl:apply-templates select=
"ooexception" mode=
"idl"/>
412 <xsl:text> {
&RE;&RE;</xsl:text>
413 <xsl:apply-templates select=
"constructorsynopsis
417 |classsynopsisinfo" mode=
"idl"/>
418 <xsl:text>}
</xsl:text>
422 <xsl:template match=
"classsynopsisinfo" mode=
"idl">
423 <xsl:apply-templates mode=
"idl"/>
426 <xsl:template match=
"ooclass|oointerface|ooexception" mode=
"idl">
427 <xsl:if test=
"position() > 1">
428 <xsl:text>,
</xsl:text>
431 <xsl:apply-templates mode=
"idl"/>
435 <xsl:template match=
"modifier" mode=
"idl">
437 <xsl:apply-templates mode=
"idl"/>
438 <xsl:text> </xsl:text>
442 <xsl:template match=
"classname" mode=
"idl">
443 <xsl:if test=
"name(preceding-sibling::*[1]) = 'classname'">
444 <xsl:text>,
</xsl:text>
447 <xsl:apply-templates mode=
"idl"/>
451 <xsl:template match=
"interfacename" mode=
"idl">
452 <xsl:if test=
"name(preceding-sibling::*[1]) = 'interfacename'">
453 <xsl:text>,
</xsl:text>
456 <xsl:apply-templates mode=
"idl"/>
460 <xsl:template match=
"exceptionname" mode=
"idl">
461 <xsl:if test=
"name(preceding-sibling::*[1]) = 'exceptionname'">
462 <xsl:text>,
</xsl:text>
465 <xsl:apply-templates mode=
"idl"/>
469 <xsl:template match=
"fieldsynopsis" mode=
"idl">
471 <xsl:text> </xsl:text>
472 <xsl:apply-templates mode=
"idl"/>
473 <xsl:text>;
</xsl:text>
477 <xsl:template match=
"type" mode=
"idl">
479 <xsl:apply-templates mode=
"idl"/>
480 <xsl:text> </xsl:text>
484 <xsl:template match=
"varname" mode=
"idl">
486 <xsl:apply-templates mode=
"idl"/>
487 <xsl:text> </xsl:text>
491 <xsl:template match=
"initializer" mode=
"idl">
493 <xsl:text>=
</xsl:text>
494 <xsl:apply-templates mode=
"idl"/>
498 <xsl:template match=
"void" mode=
"idl">
500 <xsl:text>void
</xsl:text>
504 <xsl:template match=
"methodname" mode=
"idl">
506 <xsl:apply-templates mode=
"idl"/>
510 <xsl:template match=
"methodparam" mode=
"idl">
511 <xsl:if test=
"position() > 1">
512 <xsl:text>,
</xsl:text>
515 <xsl:apply-templates mode=
"idl"/>
519 <xsl:template match=
"parameter" mode=
"idl">
521 <xsl:apply-templates mode=
"idl"/>
525 <xsl:template mode=
"idl"
526 match=
"constructorsynopsis|destructorsynopsis|methodsynopsis">
527 <xsl:variable name=
"modifiers" select=
"modifier"/>
528 <xsl:variable name=
"notmod" select=
"*[name(.) != 'modifier']"/>
529 <xsl:variable name=
"type">
532 <xsl:text> </xsl:text>
533 <xsl:apply-templates select=
"$modifiers" mode=
"idl"/>
536 <xsl:if test=
"name($notmod[1]) != 'methodname'">
537 <xsl:apply-templates select=
"$notmod[1]" mode=
"idl"/>
540 <xsl:apply-templates select=
"methodname" mode=
"idl"/>
541 <xsl:text>(
</xsl:text>
542 <xsl:apply-templates select=
"methodparam" mode=
"idl"/>
543 <xsl:text>)
</xsl:text>
544 <xsl:if test=
"exceptionname">
545 <xsl:text>&RE; raises(
</xsl:text>
546 <xsl:apply-templates select=
"exceptionname" mode=
"idl"/>
547 <xsl:text>)
</xsl:text>
549 <xsl:text>;
</xsl:text>
557 <!-- ===== Perl ======================================================== -->
559 <xsl:template match=
"classsynopsis" mode=
"perl">
560 <pre class=
"{name(.)}">
561 <xsl:text>package
</xsl:text>
562 <xsl:apply-templates select=
"ooclass[1]" mode=
"perl"/>
563 <xsl:text>;
&RE;</xsl:text>
565 <xsl:if test=
"ooclass[position() > 1]">
566 <xsl:text>@ISA = (
</xsl:text>
567 <xsl:apply-templates select=
"ooclass[position() > 1]" mode=
"perl"/>
568 <xsl:text>);
&RE;</xsl:text>
571 <xsl:apply-templates select=
"constructorsynopsis
575 |classsynopsisinfo" mode=
"perl"/>
579 <xsl:template match=
"classsynopsisinfo" mode=
"perl">
580 <xsl:apply-templates mode=
"perl"/>
583 <xsl:template match=
"ooclass|oointerface|ooexception" mode=
"perl">
584 <xsl:if test=
"position() > 1">
585 <xsl:text>,
</xsl:text>
588 <xsl:apply-templates mode=
"perl"/>
592 <xsl:template match=
"modifier" mode=
"perl">
594 <xsl:apply-templates mode=
"perl"/>
595 <xsl:text> </xsl:text>
599 <xsl:template match=
"classname" mode=
"perl">
600 <xsl:if test=
"name(preceding-sibling::*[1]) = 'classname'">
601 <xsl:text>,
</xsl:text>
604 <xsl:apply-templates mode=
"perl"/>
608 <xsl:template match=
"interfacename" mode=
"perl">
609 <xsl:if test=
"name(preceding-sibling::*[1]) = 'interfacename'">
610 <xsl:text>,
</xsl:text>
613 <xsl:apply-templates mode=
"perl"/>
617 <xsl:template match=
"exceptionname" mode=
"perl">
618 <xsl:if test=
"name(preceding-sibling::*[1]) = 'exceptionname'">
619 <xsl:text>,
</xsl:text>
622 <xsl:apply-templates mode=
"perl"/>
626 <xsl:template match=
"fieldsynopsis" mode=
"perl">
628 <xsl:text> </xsl:text>
629 <xsl:apply-templates mode=
"perl"/>
630 <xsl:text>;
</xsl:text>
634 <xsl:template match=
"type" mode=
"perl">
636 <xsl:apply-templates mode=
"perl"/>
637 <xsl:text> </xsl:text>
641 <xsl:template match=
"varname" mode=
"perl">
643 <xsl:apply-templates mode=
"perl"/>
644 <xsl:text> </xsl:text>
648 <xsl:template match=
"initializer" mode=
"perl">
650 <xsl:text>=
</xsl:text>
651 <xsl:apply-templates mode=
"perl"/>
655 <xsl:template match=
"void" mode=
"perl">
657 <xsl:text>void
</xsl:text>
663 <xsl:template match=
"methodname" mode=
"perl">
664 <xsl:apply-templates mode=
"perl"/>
667 <xsl:template match=
"methodparam" mode=
"perl">
668 <xsl:if test=
"position() > 1"> <xsl:text>,
</xsl:text> </xsl:if>
669 <xsl:apply-templates mode=
"perl"/>
673 <xsl:template match=
"parameter" mode=
"perl">
674 <xsl:apply-templates mode=
"perl"/>
678 <xsl:template mode=
"perl" match=
"constructorsynopsis|destructorsynopsis|methodsynopsis">
679 <xsl:variable name=
"modifiers" select=
"modifier"/>
680 <xsl:variable name=
"notmod" select=
"*[name(.) != 'modifier']"/>
681 <xsl:variable name=
"type"> </xsl:variable>
683 <xsl:text>sub
</xsl:text>
685 <xsl:apply-templates select=
"methodname" mode=
"perl"/>
686 <xsl:text> { ... };
</xsl:text>