1 <?xml version="1.0" encoding="ASCII"?>
2 <!--This file was created automatically by html2xhtml-->
3 <!--from the HTML stylesheets.-->
4 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
6 <!-- ********************************************************************
7 $Id: synop.xsl 9829 2013-11-05 20:07:15Z bobstayton $
8 ********************************************************************
10 This file is part of the XSL DocBook Stylesheet distribution.
11 See ../README or http://docbook.sf.net/release/xsl/current/ for
12 copyright and other information.
14 ******************************************************************** -->
16 <!-- ==================================================================== -->
18 <!-- synopsis is in verbatim -->
20 <!-- ==================================================================== -->
22 <xsl:template match="cmdsynopsis">
24 <xsl:apply-templates select="." mode="common.html.attributes"/>
26 <xsl:call-template name="id.attribute">
27 <xsl:with-param name="conditional" select="0"/>
30 <xsl:when test="..//processing-instruction('dbcmdlist')">
31 <!-- * Placing a dbcmdlist PI as a child of a particular element -->
32 <!-- * creates a hyperlinked list of all cmdsynopsis instances -->
33 <!-- * that are descendants of that element; so for any -->
34 <!-- * cmdsynopsis that is a descendant of an element containing -->
35 <!-- * a dbcmdlist PI, we need to output an a@id instance so that -->
36 <!-- * we will have something to link to -->
37 <xsl:call-template name="anchor">
38 <xsl:with-param name="conditional" select="0"/>
42 <xsl:call-template name="anchor">
43 <xsl:with-param name="conditional" select="1"/>
47 <xsl:apply-templates/>
52 <xsl:template match="cmdsynopsis/command">
54 <xsl:call-template name="inline.monoseq"/>
55 <xsl:text> </xsl:text>
58 <xsl:template match="cmdsynopsis/command[1]" priority="2">
59 <xsl:call-template name="inline.monoseq"/>
60 <xsl:text> </xsl:text>
63 <xsl:template match="group|arg" name="group-or-arg">
64 <xsl:variable name="choice" select="@choice"/>
65 <xsl:variable name="rep" select="@rep"/>
66 <xsl:variable name="sepchar">
68 <xsl:when test="ancestor-or-self::*/@sepchar">
69 <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
72 <xsl:text> </xsl:text>
77 <xsl:if test="preceding-sibling::*">
78 <xsl:value-of select="$sepchar"/>
81 <xsl:when test="$choice='plain'">
82 <xsl:value-of select="$arg.choice.plain.open.str"/>
84 <xsl:when test="$choice='req'">
85 <xsl:value-of select="$arg.choice.req.open.str"/>
87 <xsl:when test="$choice='opt'">
88 <xsl:value-of select="$arg.choice.opt.open.str"/>
91 <xsl:value-of select="$arg.choice.def.open.str"/>
94 <xsl:apply-templates/>
96 <xsl:when test="$rep='repeat'">
97 <xsl:value-of select="$arg.rep.repeat.str"/>
99 <xsl:when test="$rep='norepeat'">
100 <xsl:value-of select="$arg.rep.norepeat.str"/>
103 <xsl:value-of select="$arg.rep.def.str"/>
107 <xsl:when test="$choice='plain'">
108 <xsl:value-of select="$arg.choice.plain.close.str"/>
110 <xsl:when test="$choice='req'">
111 <xsl:value-of select="$arg.choice.req.close.str"/>
113 <xsl:when test="$choice='opt'">
114 <xsl:value-of select="$arg.choice.opt.close.str"/>
117 <xsl:value-of select="$arg.choice.def.close.str"/>
122 <xsl:template match="group/arg">
123 <xsl:variable name="choice" select="@choice"/>
124 <xsl:variable name="rep" select="@rep"/>
125 <xsl:if test="preceding-sibling::*">
126 <xsl:value-of select="$arg.or.sep"/>
128 <xsl:call-template name="group-or-arg"/>
131 <xsl:template match="sbr">
135 <!-- ==================================================================== -->
137 <xsl:template match="synopfragmentref">
138 <xsl:variable name="target" select="key('id',@linkend)"/>
139 <xsl:variable name="snum">
140 <xsl:apply-templates select="$target" mode="synopfragment.number"/>
142 <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
143 <a href="#{@linkend}">
144 <xsl:text>(</xsl:text>
145 <xsl:value-of select="$snum"/>
146 <xsl:text>)</xsl:text>
148 <xsl:text> </xsl:text>
149 <xsl:apply-templates/>
153 <xsl:template match="synopfragment" mode="synopfragment.number">
154 <xsl:number format="1"/>
157 <xsl:template match="synopfragment">
158 <xsl:variable name="snum">
159 <xsl:apply-templates select="." mode="synopfragment.number"/>
161 <!-- You can't introduce another <p> here, because you're
162 already in a <p> from cmdsynopsis-->
164 <xsl:variable name="id">
165 <xsl:call-template name="object.id"/>
168 <xsl:text>(</xsl:text>
169 <xsl:value-of select="$snum"/>
170 <xsl:text>)</xsl:text>
172 <xsl:text> </xsl:text>
173 <xsl:apply-templates/>
177 <xsl:template match="funcsynopsis">
178 <xsl:if test="..//processing-instruction('dbfunclist')">
179 <!-- * Placing a dbfunclist PI as a child of a particular element -->
180 <!-- * creates a hyperlinked list of all funcsynopsis instances that -->
181 <!-- * are descendants of that element; so for any funcsynopsis that is -->
182 <!-- * a descendant of an element containing a dbfunclist PI, we need -->
183 <!-- * to output an a@id instance so that we will have something to -->
186 <xsl:call-template name="id.attribute">
187 <xsl:with-param name="conditional" select="0"/>
190 <xsl:call-template name="anchor">
191 <xsl:with-param name="conditional" select="0"/>
194 <xsl:call-template name="informal.object"/>
197 <xsl:template match="funcsynopsisinfo">
199 <xsl:apply-templates select="." mode="common.html.attributes"/>
200 <xsl:call-template name="id.attribute"/>
201 <xsl:apply-templates/>
205 <!-- ====================================================================== -->
206 <!-- funcprototype -->
209 funcprototype ::= (funcdef,
210 (void|varargs|paramdef+))
212 funcdef ::= (#PCDATA|type|replaceable|function)*
214 paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)*
217 <xsl:template match="funcprototype">
218 <xsl:variable name="html-style">
219 <xsl:call-template name="pi.dbhtml_funcsynopsis-style">
220 <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/>
224 <xsl:variable name="style">
226 <xsl:when test="$html-style != ''">
227 <xsl:value-of select="$html-style"/>
230 <xsl:value-of select="$funcsynopsis.style"/>
235 <!-- * 2008-02-17. the code no longer relies on the funcsynopsis.tabular.threshold -->
236 <!-- * param at all (the stuff below has been commented out since mid -->
237 <!-- * 2006), so I completely removed the funcsynopsis.tabular.threshold param -->
238 <!-- * .. MikeSmith -->
240 <xsl:variable name="tabular-p"
241 select="$funcsynopsis.tabular.threshold > 0
242 and string-length(.) > $funcsynopsis.tabular.threshold"/>
245 <xsl:variable name="tabular-p" select="true()"/>
248 <xsl:when test="$style = 'kr' and $tabular-p">
249 <xsl:apply-templates select="." mode="kr-tabular"/>
251 <xsl:when test="$style = 'kr'">
252 <xsl:apply-templates select="." mode="kr-nontabular"/>
254 <xsl:when test="$style = 'ansi' and $tabular-p">
255 <xsl:apply-templates select="." mode="ansi-tabular"/>
258 <xsl:apply-templates select="." mode="ansi-nontabular"/>
263 <!-- ====================================================================== -->
264 <!-- funcprototype: kr, non-tabular -->
266 <xsl:template match="funcprototype" mode="kr-nontabular">
268 <xsl:apply-templates mode="kr-nontabular"/>
269 <xsl:if test="paramdef">
271 <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
276 <xsl:template match="funcdef" mode="kr-nontabular">
278 <xsl:apply-templates select="." mode="common.html.attributes"/>
279 <xsl:call-template name="id.attribute"/>
280 <xsl:apply-templates mode="kr-nontabular"/>
281 <xsl:text>(</xsl:text>
285 <xsl:template match="funcdef/function" mode="kr-nontabular">
287 <xsl:when test="$funcsynopsis.decoration != 0">
288 <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform" class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></strong>
291 <xsl:apply-templates mode="kr-nontabular"/>
296 <xsl:template match="void" mode="kr-nontabular">
298 <xsl:text>;</xsl:text>
301 <xsl:template match="varargs" mode="kr-nontabular">
302 <xsl:text>...</xsl:text>
304 <xsl:text>;</xsl:text>
307 <xsl:template match="paramdef" mode="kr-nontabular">
308 <xsl:apply-templates select="parameter" mode="kr-nontabular"/>
310 <xsl:when test="following-sibling::*">
311 <xsl:text>, </xsl:text>
315 <xsl:text>;</xsl:text>
320 <xsl:template match="paramdef/parameter" mode="kr-nontabular">
322 <xsl:when test="$funcsynopsis.decoration != 0">
323 <var class="pdparam">
324 <xsl:apply-templates mode="kr-nontabular"/>
329 <xsl:apply-templates mode="kr-nontabular"/>
335 <xsl:template match="paramdef" mode="kr-funcsynopsis-mode">
336 <xsl:if test="preceding-sibling::paramdef"><br/></xsl:if>
338 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
340 <xsl:text>;</xsl:text>
343 <xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode">
345 <xsl:when test="$funcsynopsis.decoration != 0">
346 <var class="pdparam">
347 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
352 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
358 <xsl:template match="funcparams" mode="kr-funcsynopsis-mode">
360 <xsl:apply-templates mode="kr-funcsynopsis-mode"/>
364 <!-- ====================================================================== -->
365 <!-- funcprototype: kr, tabular -->
367 <xsl:template match="funcprototype" mode="kr-tabular">
368 <table border="{$table.border.off}" class="funcprototype-table">
369 <xsl:if test="$div.element != 'section'">
370 <xsl:attribute name="summary">Function synopsis</xsl:attribute>
372 <xsl:if test="$css.decoration != 0">
373 <xsl:attribute name="style">cellspacing: 0; cellpadding: 0;</xsl:attribute>
377 <xsl:apply-templates select="funcdef" mode="kr-tabular"/>
379 <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/>
381 <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
384 <xsl:apply-templates select="." mode="kr-tabular"/>
388 <xsl:if test="paramdef">
389 <div class="paramdef-list">
390 <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/>
393 <div class="funcprototype-spacer"> </div> <!-- hACk: blank div for vertical spacing -->
396 <xsl:template match="funcdef" mode="kr-tabular">
398 <xsl:apply-templates select="." mode="common.html.attributes"/>
399 <xsl:call-template name="id.attribute"/>
400 <xsl:apply-templates mode="kr-tabular"/>
401 <xsl:text>(</xsl:text>
405 <xsl:template match="funcdef/function" mode="kr-tabular">
407 <xsl:when test="$funcsynopsis.decoration != 0">
408 <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform" class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></strong>
411 <xsl:apply-templates mode="kr-tabular"/>
416 <xsl:template match="void" mode="kr-tabular">
419 <xsl:text>;</xsl:text>
424 <xsl:template match="varargs" mode="kr-tabular">
426 <xsl:text>...</xsl:text>
428 <xsl:text>;</xsl:text>
433 <xsl:template match="paramdef" mode="kr-tabular">
435 <xsl:apply-templates select="parameter" mode="kr-tabular"/>
437 <xsl:when test="following-sibling::*">
438 <xsl:text>, </xsl:text>
442 <xsl:text>;</xsl:text>
449 <xsl:template match="paramdef/parameter" mode="kr-tabular">
451 <xsl:when test="$funcsynopsis.decoration != 0">
452 <var class="pdparam">
453 <xsl:apply-templates mode="kr-tabular"/>
458 <xsl:apply-templates mode="kr-tabular"/>
464 <xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode">
465 <xsl:variable name="type">
467 <xsl:when test="type">
468 <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/>
470 <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''">
471 <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/>
478 <xsl:when test="$type != '' and funcparams">
481 <xsl:copy-of select="$type"/>
483 <xsl:text> </xsl:text>
488 <xsl:when test="type">
489 <xsl:apply-templates select="type/following-sibling::*" mode="kr-tabular-funcsynopsis-mode"/>
492 <xsl:apply-templates select="*" mode="kr-tabular-funcsynopsis-mode"/>
499 <xsl:when test="funcparams">
502 <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
510 <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
512 <xsl:text> </xsl:text>
516 <xsl:apply-templates select="parameter" mode="kr-tabular"/>
517 <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/>
518 <xsl:text>;</xsl:text>
526 <xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode">
528 <xsl:when test="$funcsynopsis.decoration != 0">
529 <var class="pdparam">
530 <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
535 <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
541 <xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode">
543 <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/>
545 <xsl:text>;</xsl:text>
548 <!-- ====================================================================== -->
549 <!-- funcprototype: ansi, non-tabular -->
551 <xsl:template match="funcprototype" mode="ansi-nontabular">
553 <xsl:apply-templates mode="ansi-nontabular"/>
557 <xsl:template match="funcdef" mode="ansi-nontabular">
559 <xsl:apply-templates select="." mode="common.html.attributes"/>
560 <xsl:call-template name="id.attribute"/>
561 <xsl:apply-templates mode="ansi-nontabular"/>
562 <xsl:text>(</xsl:text>
566 <xsl:template match="funcdef/function" mode="ansi-nontabular">
568 <xsl:when test="$funcsynopsis.decoration != 0">
569 <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform" class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></strong>
572 <xsl:apply-templates mode="ansi-nontabular"/>
577 <xsl:template match="void" mode="ansi-nontabular">
579 <xsl:text>;</xsl:text>
582 <xsl:template match="varargs" mode="ansi-nontabular">
583 <xsl:text>...</xsl:text>
585 <xsl:text>;</xsl:text>
588 <xsl:template match="paramdef" mode="ansi-nontabular">
589 <xsl:apply-templates mode="ansi-nontabular"/>
591 <xsl:when test="following-sibling::*">
592 <xsl:text>, </xsl:text>
596 <xsl:text>;</xsl:text>
601 <xsl:template match="paramdef/parameter" mode="ansi-nontabular">
603 <xsl:when test="$funcsynopsis.decoration != 0">
604 <var class="pdparam">
605 <xsl:apply-templates mode="ansi-nontabular"/>
610 <xsl:apply-templates mode="ansi-nontabular"/>
616 <xsl:template match="funcparams" mode="ansi-nontabular">
618 <xsl:apply-templates mode="ansi-nontabular"/>
622 <!-- ====================================================================== -->
623 <!-- funcprototype: ansi, tabular -->
625 <xsl:template match="funcprototype" mode="ansi-tabular">
626 <table border="{$table.border.off}" class="funcprototype-table">
627 <xsl:if test="$div.element != 'section'">
628 <xsl:attribute name="summary">Function synopsis</xsl:attribute>
630 <xsl:if test="$css.decoration != 0">
631 <xsl:attribute name="style">cellspacing: 0; cellpadding: 0;</xsl:attribute>
635 <xsl:apply-templates select="funcdef" mode="ansi-tabular"/>
637 <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/>
639 <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]">
642 <xsl:apply-templates select="." mode="ansi-tabular"/>
646 <div class="funcprototype-spacer"> </div> <!-- hACk: blank div for vertical spacing -->
649 <xsl:template match="funcdef" mode="ansi-tabular">
651 <xsl:apply-templates select="." mode="common.html.attributes"/>
652 <xsl:call-template name="id.attribute"/>
653 <xsl:apply-templates mode="ansi-tabular"/>
654 <xsl:text>(</xsl:text>
658 <xsl:template match="funcdef/function" mode="ansi-tabular">
660 <xsl:when test="$funcsynopsis.decoration != 0">
661 <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform" class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></strong>
664 <xsl:apply-templates mode="kr-tabular"/>
669 <xsl:template match="void" mode="ansi-tabular">
672 <xsl:text>;</xsl:text>
677 <xsl:template match="varargs" mode="ansi-tabular">
679 <xsl:text>...</xsl:text>
681 <xsl:text>;</xsl:text>
686 <xsl:template match="paramdef" mode="ansi-tabular">
688 <xsl:apply-templates mode="ansi-tabular"/>
690 <xsl:when test="following-sibling::*">
691 <xsl:text>, </xsl:text>
695 <xsl:text>;</xsl:text>
701 <xsl:template match="paramdef/parameter" mode="ansi-tabular">
703 <xsl:when test="$funcsynopsis.decoration != 0">
704 <var class="pdparam">
705 <xsl:apply-templates mode="ansi-tabular"/>
710 <xsl:apply-templates mode="ansi-tabular"/>
716 <xsl:template match="funcparams" mode="ansi-tabular">
718 <xsl:apply-templates/>
722 <!-- ====================================================================== -->
724 <xsl:variable name="default-classsynopsis-language">java</xsl:variable>
726 <xsl:template match="classsynopsis |fieldsynopsis |methodsynopsis |constructorsynopsis |destructorsynopsis">
727 <xsl:param name="language">
729 <xsl:when test="@language">
730 <xsl:value-of select="@language"/>
733 <xsl:value-of select="$default-classsynopsis-language"/>
739 <xsl:when test="$language='java' or $language='Java'">
740 <xsl:apply-templates select="." mode="java"/>
742 <xsl:when test="$language='perl' or $language='Perl'">
743 <xsl:apply-templates select="." mode="perl"/>
745 <xsl:when test="$language='idl' or $language='IDL'">
746 <xsl:apply-templates select="." mode="idl"/>
748 <xsl:when test="$language='cpp' or $language='c++' or $language='C++'">
749 <xsl:apply-templates select="." mode="cpp"/>
753 <xsl:text>Unrecognized language on </xsl:text>
754 <xsl:value-of select="local-name(.)"/>
755 <xsl:text>: </xsl:text>
756 <xsl:value-of select="$language"/>
758 <xsl:apply-templates select=".">
759 <xsl:with-param name="language" select="$default-classsynopsis-language"/>
760 </xsl:apply-templates>
765 <xsl:template name="synop-break">
766 <xsl:if test="parent::classsynopsis or (following-sibling::fieldsynopsis |following-sibling::methodsynopsis |following-sibling::constructorsynopsis |following-sibling::destructorsynopsis)">
772 <!-- ===== Java ======================================================== -->
774 <xsl:template match="classsynopsis" mode="java">
776 <xsl:apply-templates select="." mode="common.html.attributes"/>
777 <xsl:call-template name="id.attribute"/>
778 <xsl:apply-templates select="ooclass[1]" mode="java"/>
779 <xsl:if test="ooclass[preceding-sibling::*]">
780 <xsl:text> extends</xsl:text>
781 <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/>
782 <xsl:if test="oointerface|ooexception">
784 <xsl:text>    </xsl:text>
787 <xsl:if test="oointerface">
788 <xsl:text>implements</xsl:text>
789 <xsl:apply-templates select="oointerface" mode="java"/>
790 <xsl:if test="ooexception">
792 <xsl:text>    </xsl:text>
795 <xsl:if test="ooexception">
796 <xsl:text>throws</xsl:text>
797 <xsl:apply-templates select="ooexception" mode="java"/>
799 <xsl:text> {</xsl:text>
801 <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="java"/>
802 <xsl:text>}</xsl:text>
806 <xsl:template match="classsynopsisinfo" mode="java">
807 <xsl:apply-templates mode="java"/>
810 <xsl:template match="ooclass|oointerface|ooexception" mode="java">
812 <xsl:when test="preceding-sibling::*">
813 <xsl:text>, </xsl:text>
816 <xsl:text> </xsl:text>
820 <xsl:apply-templates select="." mode="common.html.attributes"/>
821 <xsl:call-template name="id.attribute"/>
822 <xsl:apply-templates mode="java"/>
826 <xsl:template match="modifier|package" mode="java">
828 <xsl:apply-templates select="." mode="common.html.attributes"/>
829 <xsl:call-template name="id.attribute"/>
830 <xsl:apply-templates mode="java"/>
831 <xsl:if test="following-sibling::*">
832 <xsl:text> </xsl:text>
837 <xsl:template match="classname" mode="java">
838 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
839 <xsl:text>, </xsl:text>
842 <xsl:apply-templates select="." mode="common.html.attributes"/>
843 <xsl:call-template name="id.attribute"/>
844 <xsl:apply-templates mode="java"/>
848 <xsl:template match="interfacename" mode="java">
849 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
850 <xsl:text>, </xsl:text>
853 <xsl:apply-templates select="." mode="common.html.attributes"/>
854 <xsl:call-template name="id.attribute"/>
855 <xsl:apply-templates mode="java"/>
859 <xsl:template match="exceptionname" mode="java">
860 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
861 <xsl:text>, </xsl:text>
864 <xsl:apply-templates select="." mode="common.html.attributes"/>
865 <xsl:call-template name="id.attribute"/>
866 <xsl:apply-templates mode="java"/>
870 <xsl:template match="fieldsynopsis" mode="java">
872 <xsl:apply-templates select="." mode="common.html.attributes"/>
873 <xsl:call-template name="id.attribute"/>
874 <xsl:if test="parent::classsynopsis">
875 <xsl:text>  </xsl:text>
877 <xsl:apply-templates mode="java"/>
878 <xsl:text>;</xsl:text>
880 <xsl:call-template name="synop-break"/>
883 <xsl:template match="type" mode="java">
885 <xsl:apply-templates select="." mode="common.html.attributes"/>
886 <xsl:call-template name="id.attribute"/>
887 <xsl:apply-templates mode="java"/>
888 <xsl:text> </xsl:text>
892 <xsl:template match="varname" mode="java">
894 <xsl:apply-templates select="." mode="common.html.attributes"/>
895 <xsl:call-template name="id.attribute"/>
896 <xsl:apply-templates mode="java"/>
897 <xsl:text> </xsl:text>
901 <xsl:template match="initializer" mode="java">
903 <xsl:apply-templates select="." mode="common.html.attributes"/>
904 <xsl:call-template name="id.attribute"/>
905 <xsl:text>= </xsl:text>
906 <xsl:apply-templates mode="java"/>
910 <xsl:template match="void" mode="java">
912 <xsl:apply-templates select="." mode="common.html.attributes"/>
913 <xsl:call-template name="id.attribute"/>
914 <xsl:text>void </xsl:text>
918 <xsl:template match="methodname" mode="java">
920 <xsl:apply-templates select="." mode="common.html.attributes"/>
921 <xsl:call-template name="id.attribute"/>
922 <xsl:apply-templates mode="java"/>
926 <xsl:template match="methodparam" mode="java">
927 <xsl:param name="indent">0</xsl:param>
928 <xsl:if test="preceding-sibling::methodparam">
929 <xsl:text>,</xsl:text>
931 <xsl:if test="$indent > 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"/>
939 <xsl:apply-templates select="." mode="common.html.attributes"/>
940 <xsl:call-template name="id.attribute"/>
941 <xsl:apply-templates mode="java"/>
945 <xsl:template match="parameter" mode="java">
947 <xsl:apply-templates select="." mode="common.html.attributes"/>
948 <xsl:call-template name="id.attribute"/>
949 <xsl:apply-templates mode="java"/>
953 <xsl:template mode="java" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
954 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
955 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
956 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
957 <xsl:variable name="decl">
958 <xsl:if test="parent::classsynopsis">
959 <xsl:text>  </xsl:text>
961 <xsl:apply-templates select="$start-modifiers" mode="java"/>
964 <xsl:if test="local-name($notmod[1]) != 'methodname'">
965 <xsl:apply-templates select="$notmod[1]" mode="java"/>
968 <xsl:apply-templates select="methodname" mode="java"/>
972 <xsl:apply-templates select="." mode="common.html.attributes"/>
973 <xsl:call-template name="id.attribute"/>
974 <xsl:copy-of select="$decl"/>
975 <xsl:text>(</xsl:text>
976 <xsl:apply-templates select="methodparam" mode="java">
977 <xsl:with-param name="indent" select="string-length($decl)"/>
978 </xsl:apply-templates>
979 <xsl:text>)</xsl:text>
980 <xsl:if test="exceptionname">
982 <xsl:text>    throws </xsl:text>
983 <xsl:apply-templates select="exceptionname" mode="java"/>
985 <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
986 <xsl:text> </xsl:text>
987 <xsl:apply-templates select="$end-modifiers" mode="java"/>
989 <xsl:text>;</xsl:text>
991 <xsl:call-template name="synop-break"/>
994 <!-- ===== C++ ========================================================= -->
996 <xsl:template match="classsynopsis" mode="cpp">
998 <xsl:apply-templates select="." mode="common.html.attributes"/>
999 <xsl:call-template name="id.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">
1006 <xsl:text>    </xsl:text>
1009 <xsl:if test="oointerface">
1010 <xsl:text> implements</xsl:text>
1011 <xsl:apply-templates select="oointerface" mode="cpp"/>
1012 <xsl:if test="ooexception">
1014 <xsl:text>    </xsl:text>
1017 <xsl:if test="ooexception">
1018 <xsl:text> throws</xsl:text>
1019 <xsl:apply-templates select="ooexception" mode="cpp"/>
1021 <xsl:text> {</xsl:text>
1023 <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="cpp"/>
1024 <xsl:text>}</xsl:text>
1028 <xsl:template match="classsynopsisinfo" mode="cpp">
1029 <xsl:apply-templates mode="cpp"/>
1032 <xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
1033 <xsl:if test="preceding-sibling::*">
1034 <xsl:text>, </xsl:text>
1037 <xsl:apply-templates select="." mode="common.html.attributes"/>
1038 <xsl:call-template name="id.attribute"/>
1039 <xsl:apply-templates mode="cpp"/>
1043 <xsl:template match="modifier|package" mode="cpp">
1045 <xsl:apply-templates select="." mode="common.html.attributes"/>
1046 <xsl:call-template name="id.attribute"/>
1047 <xsl:apply-templates mode="cpp"/>
1048 <xsl:if test="following-sibling::*">
1049 <xsl:text> </xsl:text>
1054 <xsl:template match="classname" mode="cpp">
1055 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1056 <xsl:text>, </xsl:text>
1059 <xsl:apply-templates select="." mode="common.html.attributes"/>
1060 <xsl:call-template name="id.attribute"/>
1061 <xsl:apply-templates mode="cpp"/>
1065 <xsl:template match="interfacename" mode="cpp">
1066 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1067 <xsl:text>, </xsl:text>
1070 <xsl:apply-templates select="." mode="common.html.attributes"/>
1071 <xsl:call-template name="id.attribute"/>
1072 <xsl:apply-templates mode="cpp"/>
1076 <xsl:template match="exceptionname" mode="cpp">
1077 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1078 <xsl:text>, </xsl:text>
1081 <xsl:apply-templates select="." mode="common.html.attributes"/>
1082 <xsl:call-template name="id.attribute"/>
1083 <xsl:apply-templates mode="cpp"/>
1087 <xsl:template match="fieldsynopsis" mode="cpp">
1089 <xsl:apply-templates select="." mode="common.html.attributes"/>
1090 <xsl:call-template name="id.attribute"/>
1091 <xsl:if test="parent::classsynopsis">
1092 <xsl:text>  </xsl:text>
1094 <xsl:apply-templates mode="cpp"/>
1095 <xsl:text>;</xsl:text>
1097 <xsl:call-template name="synop-break"/>
1100 <xsl:template match="type" mode="cpp">
1102 <xsl:apply-templates select="." mode="common.html.attributes"/>
1103 <xsl:call-template name="id.attribute"/>
1104 <xsl:apply-templates mode="cpp"/>
1105 <xsl:text> </xsl:text>
1109 <xsl:template match="varname" mode="cpp">
1111 <xsl:apply-templates select="." mode="common.html.attributes"/>
1112 <xsl:call-template name="id.attribute"/>
1113 <xsl:apply-templates mode="cpp"/>
1114 <xsl:text> </xsl:text>
1118 <xsl:template match="initializer" mode="cpp">
1120 <xsl:apply-templates select="." mode="common.html.attributes"/>
1121 <xsl:call-template name="id.attribute"/>
1122 <xsl:text>= </xsl:text>
1123 <xsl:apply-templates mode="cpp"/>
1127 <xsl:template match="void" mode="cpp">
1129 <xsl:apply-templates select="." mode="common.html.attributes"/>
1130 <xsl:call-template name="id.attribute"/>
1131 <xsl:text>void </xsl:text>
1135 <xsl:template match="methodname" mode="cpp">
1137 <xsl:apply-templates select="." mode="common.html.attributes"/>
1138 <xsl:call-template name="id.attribute"/>
1139 <xsl:apply-templates mode="cpp"/>
1143 <xsl:template match="methodparam" mode="cpp">
1144 <xsl:if test="preceding-sibling::methodparam">
1145 <xsl:text>, </xsl:text>
1148 <xsl:apply-templates select="." mode="common.html.attributes"/>
1149 <xsl:call-template name="id.attribute"/>
1150 <xsl:apply-templates mode="cpp"/>
1154 <xsl:template match="parameter" mode="cpp">
1156 <xsl:apply-templates select="." mode="common.html.attributes"/>
1157 <xsl:call-template name="id.attribute"/>
1158 <xsl:apply-templates mode="cpp"/>
1162 <xsl:template mode="cpp" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1163 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1164 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1165 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1168 <xsl:apply-templates select="." mode="common.html.attributes"/>
1169 <xsl:call-template name="id.attribute"/>
1170 <xsl:if test="parent::classsynopsis">
1171 <xsl:text>  </xsl:text>
1173 <xsl:apply-templates select="$start-modifiers" mode="cpp"/>
1176 <xsl:if test="local-name($notmod[1]) != 'methodname'">
1177 <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
1180 <xsl:apply-templates select="methodname" mode="cpp"/>
1181 <xsl:text>(</xsl:text>
1182 <xsl:apply-templates select="methodparam" mode="cpp"/>
1183 <xsl:text>)</xsl:text>
1184 <xsl:if test="exceptionname">
1186 <xsl:text>    throws </xsl:text>
1187 <xsl:apply-templates select="exceptionname" mode="cpp"/>
1189 <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
1190 <xsl:text> </xsl:text>
1191 <xsl:apply-templates select="$end-modifiers" mode="cpp"/>
1193 <xsl:text>;</xsl:text>
1195 <xsl:call-template name="synop-break"/>
1198 <!-- ===== IDL ========================================================= -->
1200 <xsl:template match="classsynopsis" mode="idl">
1202 <xsl:apply-templates select="." mode="common.html.attributes"/>
1203 <xsl:call-template name="id.attribute"/>
1204 <xsl:text>interface </xsl:text>
1205 <xsl:apply-templates select="ooclass[1]" mode="idl"/>
1206 <xsl:if test="ooclass[preceding-sibling::*]">
1207 <xsl:text>: </xsl:text>
1208 <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/>
1209 <xsl:if test="oointerface|ooexception">
1211 <xsl:text>    </xsl:text>
1214 <xsl:if test="oointerface">
1215 <xsl:text> implements</xsl:text>
1216 <xsl:apply-templates select="oointerface" mode="idl"/>
1217 <xsl:if test="ooexception">
1219 <xsl:text>    </xsl:text>
1222 <xsl:if test="ooexception">
1223 <xsl:text> throws</xsl:text>
1224 <xsl:apply-templates select="ooexception" mode="idl"/>
1226 <xsl:text> {</xsl:text>
1228 <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="idl"/>
1229 <xsl:text>}</xsl:text>
1233 <xsl:template match="classsynopsisinfo" mode="idl">
1234 <xsl:apply-templates mode="idl"/>
1237 <xsl:template match="ooclass|oointerface|ooexception" mode="idl">
1238 <xsl:if test="preceding-sibling::*">
1239 <xsl:text>, </xsl:text>
1242 <xsl:apply-templates select="." mode="common.html.attributes"/>
1243 <xsl:call-template name="id.attribute"/>
1244 <xsl:apply-templates mode="idl"/>
1248 <xsl:template match="modifier|package" mode="idl">
1250 <xsl:apply-templates select="." mode="common.html.attributes"/>
1251 <xsl:call-template name="id.attribute"/>
1252 <xsl:apply-templates mode="idl"/>
1253 <xsl:if test="following-sibling::*">
1254 <xsl:text> </xsl:text>
1259 <xsl:template match="classname" mode="idl">
1260 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1261 <xsl:text>, </xsl:text>
1264 <xsl:apply-templates select="." mode="common.html.attributes"/>
1265 <xsl:call-template name="id.attribute"/>
1266 <xsl:apply-templates mode="idl"/>
1270 <xsl:template match="interfacename" mode="idl">
1271 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1272 <xsl:text>, </xsl:text>
1275 <xsl:apply-templates select="." mode="common.html.attributes"/>
1276 <xsl:call-template name="id.attribute"/>
1277 <xsl:apply-templates mode="idl"/>
1281 <xsl:template match="exceptionname" mode="idl">
1282 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1283 <xsl:text>, </xsl:text>
1286 <xsl:apply-templates select="." mode="common.html.attributes"/>
1287 <xsl:call-template name="id.attribute"/>
1288 <xsl:apply-templates mode="idl"/>
1292 <xsl:template match="fieldsynopsis" mode="idl">
1294 <xsl:apply-templates select="." mode="common.html.attributes"/>
1295 <xsl:call-template name="id.attribute"/>
1296 <xsl:if test="parent::classsynopsis">
1297 <xsl:text>  </xsl:text>
1299 <xsl:apply-templates mode="idl"/>
1300 <xsl:text>;</xsl:text>
1302 <xsl:call-template name="synop-break"/>
1305 <xsl:template match="type" mode="idl">
1307 <xsl:apply-templates select="." mode="common.html.attributes"/>
1308 <xsl:call-template name="id.attribute"/>
1309 <xsl:apply-templates mode="idl"/>
1310 <xsl:text> </xsl:text>
1314 <xsl:template match="varname" mode="idl">
1316 <xsl:apply-templates select="." mode="common.html.attributes"/>
1317 <xsl:call-template name="id.attribute"/>
1318 <xsl:apply-templates mode="idl"/>
1319 <xsl:text> </xsl:text>
1323 <xsl:template match="initializer" mode="idl">
1325 <xsl:apply-templates select="." mode="common.html.attributes"/>
1326 <xsl:call-template name="id.attribute"/>
1327 <xsl:text>= </xsl:text>
1328 <xsl:apply-templates mode="idl"/>
1332 <xsl:template match="void" mode="idl">
1334 <xsl:apply-templates select="." mode="common.html.attributes"/>
1335 <xsl:call-template name="id.attribute"/>
1336 <xsl:text>void </xsl:text>
1340 <xsl:template match="methodname" mode="idl">
1342 <xsl:apply-templates select="." mode="common.html.attributes"/>
1343 <xsl:call-template name="id.attribute"/>
1344 <xsl:apply-templates mode="idl"/>
1348 <xsl:template match="methodparam" mode="idl">
1349 <xsl:if test="preceding-sibling::methodparam">
1350 <xsl:text>, </xsl:text>
1353 <xsl:apply-templates select="." mode="common.html.attributes"/>
1354 <xsl:call-template name="id.attribute"/>
1355 <xsl:apply-templates mode="idl"/>
1359 <xsl:template match="parameter" mode="idl">
1361 <xsl:apply-templates select="." mode="common.html.attributes"/>
1362 <xsl:call-template name="id.attribute"/>
1363 <xsl:apply-templates mode="idl"/>
1367 <xsl:template mode="idl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1368 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1369 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1370 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1372 <xsl:apply-templates select="." mode="common.html.attributes"/>
1373 <xsl:call-template name="id.attribute"/>
1374 <xsl:if test="parent::classsynopsis">
1375 <xsl:text>  </xsl:text>
1377 <xsl:apply-templates select="$start-modifiers" mode="idl"/>
1380 <xsl:if test="local-name($notmod[1]) != 'methodname'">
1381 <xsl:apply-templates select="$notmod[1]" mode="idl"/>
1384 <xsl:apply-templates select="methodname" mode="idl"/>
1385 <xsl:text>(</xsl:text>
1386 <xsl:apply-templates select="methodparam" mode="idl"/>
1387 <xsl:text>)</xsl:text>
1388 <xsl:if test="exceptionname">
1390 <xsl:text>    raises(</xsl:text>
1391 <xsl:apply-templates select="exceptionname" mode="idl"/>
1392 <xsl:text>)</xsl:text>
1394 <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]">
1395 <xsl:text> </xsl:text>
1396 <xsl:apply-templates select="$end-modifiers" mode="idl"/>
1398 <xsl:text>;</xsl:text>
1400 <xsl:call-template name="synop-break"/>
1403 <!-- ===== Perl ======================================================== -->
1405 <xsl:template match="classsynopsis" mode="perl">
1407 <xsl:apply-templates select="." mode="common.html.attributes"/>
1408 <xsl:call-template name="id.attribute"/>
1409 <xsl:text>package </xsl:text>
1410 <xsl:apply-templates select="ooclass[1]" mode="perl"/>
1411 <xsl:text>;</xsl:text>
1414 <xsl:if test="ooclass[preceding-sibling::*]">
1415 <xsl:text>@ISA = (</xsl:text>
1416 <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/>
1417 <xsl:text>);</xsl:text>
1421 <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="perl"/>
1425 <xsl:template match="classsynopsisinfo" mode="perl">
1426 <xsl:apply-templates mode="perl"/>
1429 <xsl:template match="ooclass|oointerface|ooexception" mode="perl">
1430 <xsl:if test="preceding-sibling::*">
1431 <xsl:text>, </xsl:text>
1434 <xsl:apply-templates select="." mode="common.html.attributes"/>
1435 <xsl:call-template name="id.attribute"/>
1436 <xsl:apply-templates mode="perl"/>
1440 <xsl:template match="modifier|package" mode="perl">
1442 <xsl:apply-templates select="." mode="common.html.attributes"/>
1443 <xsl:call-template name="id.attribute"/>
1444 <xsl:apply-templates mode="perl"/>
1445 <xsl:if test="following-sibling::*">
1446 <xsl:text> </xsl:text>
1451 <xsl:template match="classname" mode="perl">
1452 <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'">
1453 <xsl:text>, </xsl:text>
1456 <xsl:apply-templates select="." mode="common.html.attributes"/>
1457 <xsl:call-template name="id.attribute"/>
1458 <xsl:apply-templates mode="perl"/>
1462 <xsl:template match="interfacename" mode="perl">
1463 <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'">
1464 <xsl:text>, </xsl:text>
1467 <xsl:apply-templates select="." mode="common.html.attributes"/>
1468 <xsl:call-template name="id.attribute"/>
1469 <xsl:apply-templates mode="perl"/>
1473 <xsl:template match="exceptionname" mode="perl">
1474 <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'">
1475 <xsl:text>, </xsl:text>
1478 <xsl:apply-templates select="." mode="common.html.attributes"/>
1479 <xsl:call-template name="id.attribute"/>
1480 <xsl:apply-templates mode="perl"/>
1484 <xsl:template match="fieldsynopsis" mode="perl">
1486 <xsl:apply-templates select="." mode="common.html.attributes"/>
1487 <xsl:call-template name="id.attribute"/>
1488 <xsl:if test="parent::classsynopsis">
1489 <xsl:text>  </xsl:text>
1491 <xsl:apply-templates mode="perl"/>
1492 <xsl:text>;</xsl:text>
1494 <xsl:call-template name="synop-break"/>
1497 <xsl:template match="type" mode="perl">
1499 <xsl:apply-templates select="." mode="common.html.attributes"/>
1500 <xsl:call-template name="id.attribute"/>
1501 <xsl:apply-templates mode="perl"/>
1502 <xsl:text> </xsl:text>
1506 <xsl:template match="varname" mode="perl">
1508 <xsl:apply-templates select="." mode="common.html.attributes"/>
1509 <xsl:call-template name="id.attribute"/>
1510 <xsl:apply-templates mode="perl"/>
1511 <xsl:text> </xsl:text>
1515 <xsl:template match="initializer" mode="perl">
1517 <xsl:apply-templates select="." mode="common.html.attributes"/>
1518 <xsl:call-template name="id.attribute"/>
1519 <xsl:text>= </xsl:text>
1520 <xsl:apply-templates mode="perl"/>
1524 <xsl:template match="void" mode="perl">
1526 <xsl:apply-templates select="." mode="common.html.attributes"/>
1527 <xsl:call-template name="id.attribute"/>
1528 <xsl:text>void </xsl:text>
1532 <xsl:template match="methodname" mode="perl">
1534 <xsl:apply-templates select="." mode="common.html.attributes"/>
1535 <xsl:call-template name="id.attribute"/>
1536 <xsl:apply-templates mode="perl"/>
1540 <xsl:template match="methodparam" mode="perl">
1541 <xsl:if test="preceding-sibling::methodparam">
1542 <xsl:text>, </xsl:text>
1545 <xsl:apply-templates select="." mode="common.html.attributes"/>
1546 <xsl:call-template name="id.attribute"/>
1547 <xsl:apply-templates mode="perl"/>
1551 <xsl:template match="parameter" mode="perl">
1553 <xsl:apply-templates select="." mode="common.html.attributes"/>
1554 <xsl:call-template name="id.attribute"/>
1555 <xsl:apply-templates mode="perl"/>
1559 <xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
1560 <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/>
1561 <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/>
1562 <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/>
1565 <xsl:apply-templates select="." mode="common.html.attributes"/>
1566 <xsl:call-template name="id.attribute"/>
1567 <xsl:text>sub </xsl:text>
1569 <xsl:apply-templates select="methodname" mode="perl"/>
1570 <xsl:text> { ... };</xsl:text>
1572 <xsl:call-template name="synop-break"/>
1575 <!-- Used when not occurring as a child of classsynopsis -->
1576 <xsl:template match="ooclass|oointerface|ooexception">
1577 <xsl:apply-templates/>
1580 <!-- ==================================================================== -->
1582 <!-- * DocBook 5 allows linking elements (link, olink, and xref) -->
1583 <!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, -->
1584 <!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and -->
1585 <!-- * their children. So we need to have mode="java|cpp|idl|perl" -->
1586 <!-- * per-mode matches for those linking elements in order for them -->
1587 <!-- * to be processed as expected. -->
1589 <xsl:template match="link|olink|xref" mode="java">
1590 <xsl:apply-templates select="."/>
1593 <xsl:template match="link|olink|xref" mode="cpp">
1594 <xsl:apply-templates select="."/>
1597 <xsl:template match="link|olink|xref" mode="idl">
1598 <xsl:apply-templates select="."/>
1601 <xsl:template match="link|olink|xref" mode="perl">
1602 <xsl:apply-templates select="."/>
1605 <xsl:template match="link|olink|xref" mode="ansi-nontabular">
1606 <xsl:apply-templates select="."/>
1609 <xsl:template match="link|olink|xref" mode="ansi-tabular">
1610 <xsl:apply-templates select="."/>
1613 <xsl:template match="link|olink|xref" mode="kr-nontabular">
1614 <xsl:apply-templates select="."/>
1617 <xsl:template match="link|olink|xref" mode="kr-tabular">
1618 <xsl:apply-templates select="."/>