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>