diff options
| author | William Harrington <kb0iic@berzerkula.org> | 2014-11-27 16:29:31 -0600 | 
|---|---|---|
| committer | William Harrington <kb0iic@berzerkula.org> | 2014-11-27 16:29:31 -0600 | 
| commit | 7df987a652b93d55dd8eca363706d3bacc469b55 (patch) | |
| tree | 17f84ce0fee76a3a0476b714eae09486ab2470e6 /stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base | |
Diffstat (limited to 'stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base')
| -rw-r--r-- | stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base | 967 | 
1 files changed, 967 insertions, 0 deletions
diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base new file mode 100644 index 0000000..493c181 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base @@ -0,0 +1,967 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY RE "
"> +<!ENTITY nbsp " "> +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- synopsis is in verbatim --> + +<!-- ==================================================================== --> + +<xsl:template match="cmdsynopsis"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="cmdsynopsis/command"> +  <xsl:call-template name="inline.monoseq"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="cmdsynopsis/command[1]" priority="2"> +  <xsl:call-template name="inline.monoseq"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="group|arg" name="group-or-arg"> +  <xsl:variable name="choice" select="@choice"/> +  <xsl:variable name="rep" select="@rep"/> +  <xsl:variable name="sepchar"> +    <xsl:choose> +      <xsl:when test="ancestor-or-self::*/@sepchar"> +        <xsl:value-of select="ancestor-or-self::*/@sepchar"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:text> </xsl:text> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:if test="preceding-sibling::*"> +    <xsl:value-of select="$sepchar"/> +  </xsl:if> +  <xsl:choose> +    <xsl:when test="$choice='plain'"> +      <xsl:value-of select="$arg.choice.plain.open.str"/> +    </xsl:when> +    <xsl:when test="$choice='req'"> +      <xsl:value-of select="$arg.choice.req.open.str"/> +    </xsl:when> +    <xsl:when test="$choice='opt'"> +      <xsl:value-of select="$arg.choice.opt.open.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.choice.def.open.str"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates/> +  <xsl:choose> +    <xsl:when test="$rep='repeat'"> +      <xsl:value-of select="$arg.rep.repeat.str"/> +    </xsl:when> +    <xsl:when test="$rep='norepeat'"> +      <xsl:value-of select="$arg.rep.norepeat.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.rep.def.str"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="$choice='plain'"> +      <xsl:value-of select="$arg.choice.plain.close.str"/> +    </xsl:when> +    <xsl:when test="$choice='req'"> +      <xsl:value-of select="$arg.choice.req.close.str"/> +    </xsl:when> +    <xsl:when test="$choice='opt'"> +      <xsl:value-of select="$arg.choice.opt.close.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.choice.def.close.str"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="group/arg"> +  <xsl:variable name="choice" select="@choice"/> +  <xsl:variable name="rep" select="@rep"/> +  <xsl:if test="preceding-sibling::*"> +    <xsl:value-of select="$arg.or.sep"/> +  </xsl:if> +  <xsl:call-template name="group-or-arg"/> +</xsl:template> + +<xsl:template match="sbr"> +  <fo:block/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="synopfragmentref"> +  <xsl:variable name="target" select="key('id',@linkend)"/> +  <xsl:variable name="snum"> +    <xsl:apply-templates select="$target" mode="synopfragment.number"/> +  </xsl:variable> +  <fo:inline font-style="italic"> +    <fo:basic-link internal-destination="{@linkend}" +                   xsl:use-attribute-sets="xref.properties"> +      <xsl:text>(</xsl:text> +      <xsl:value-of select="$snum"/> +      <xsl:text>)</xsl:text> +    </fo:basic-link> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="synopfragment" mode="synopfragment.number"> +  <xsl:number format="1"/> +</xsl:template> + +<xsl:template match="synopfragment"> +  <xsl:variable name="snum"> +    <xsl:apply-templates select="." mode="synopfragment.number"/> +  </xsl:variable> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:block id="{$id}"> +    <xsl:text>(</xsl:text> +    <xsl:value-of select="$snum"/> +    <xsl:text>)</xsl:text> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="funcsynopsis"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="funcsynopsisinfo"> +  <fo:block space-after.minimum="0.8em" +            space-after.optimum="1em" +            space-after.maximum="1.2em"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="funcprototype"> +  <fo:block font-family="{$monospace.font.family}" +          space-before.minimum="0.8em" +          space-before.optimum="1em" +          space-before.maximum="1.2em"> +    <xsl:apply-templates/> +    <xsl:if test="$funcsynopsis.style='kr'"> +      <fo:block +          space-before.minimum="0.8em" +          space-before.optimum="1em" +          space-before.maximum="1.2em"> +      <xsl:apply-templates select="./paramdef" mode="kr-funcsynopsis-mode"/> +      </fo:block> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="funcdef"> +  <fo:inline font-family="{$monospace.font.family}"> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="funcdef/function"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.decoration != 0"> +      <fo:inline font-weight="bold"> +        <xsl:apply-templates/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="void"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.style='ansi'"> +      <xsl:text>(void);</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>();</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varargs"> +  <xsl:text>(...);</xsl:text> +</xsl:template> + +<xsl:template match="paramdef"> +  <xsl:variable name="paramnum"> +    <xsl:number count="paramdef" format="1"/> +  </xsl:variable> +  <xsl:if test="$paramnum=1">(</xsl:if> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.style='ansi'"> +      <xsl:apply-templates/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="./parameter"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="following-sibling::paramdef"> +      <xsl:text>, </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>);</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef/parameter"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.decoration != 0"> +      <xsl:call-template name="inline.italicseq"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="following-sibling::parameter"> +    <xsl:text>, </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-funcsynopsis-mode"> +  <fo:block> +    <xsl:apply-templates/> +    <xsl:text>;</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="funcparams"> +  <xsl:text>(</xsl:text> +  <xsl:apply-templates/> +  <xsl:text>)</xsl:text> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:variable name="default-classsynopsis-language">java</xsl:variable> + +<xsl:template match="classsynopsis +                     |fieldsynopsis +                     |methodsynopsis +                     |constructorsynopsis +                     |destructorsynopsis"> +  <xsl:param name="language"> +    <xsl:choose> +      <xsl:when test="@language"> +	<xsl:value-of select="@language"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$default-classsynopsis-language"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:param> + +  <!-- +  <xsl:message>process <xsl:value-of select="local-name(.)"/> in <xsl:value-of select="$language"/></xsl:message> +  --> + +  <xsl:choose> +    <xsl:when test="$language='java' or $language='Java'"> +      <xsl:apply-templates select="." mode="java"/> +    </xsl:when> +    <xsl:when test="$language='perl' or $language='Perl'"> +      <xsl:apply-templates select="." mode="perl"/> +    </xsl:when> +    <xsl:when test="$language='idl' or $language='IDL'"> +      <xsl:apply-templates select="." mode="idl"/> +    </xsl:when> +    <xsl:when test="$language='cpp' or $language='c++' or $language='C++'"> +      <xsl:apply-templates select="." mode="cpp"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message> +	<xsl:text>Unrecognized language on </xsl:text> +        <xsl:value-of select="local-name(.)"/> +        <xsl:text>: </xsl:text> +	<xsl:value-of select="$language"/> +      </xsl:message> +      <xsl:apply-templates select="."> +	<xsl:with-param name="language" +	  select="$default-classsynopsis-language"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="synop-break"> +  <xsl:if test="parent::classsynopsis +                or (following-sibling::fieldsynopsis +                    |following-sibling::methodsynopsis +                    |following-sibling::constructorsynopsis +                    |following-sibling::destructorsynopsis)"> +    <fo:inline>&RE;</fo:inline> +  </xsl:if> +</xsl:template> + +<!-- ===== Java ======================================================== --> + +<xsl:template match="classsynopsis" mode="java"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:apply-templates select="ooclass[1]" mode="java"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text> extends</xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/> +      <xsl:if test="oointerface|ooexception"> +        <xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text>implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="java"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="ooexception"> +      <xsl:text>throws</xsl:text> +      <xsl:apply-templates select="ooexception" mode="java"/> +    </xsl:if> +    <xsl:text> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="java"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="java"> +  <xsl:choose> +    <xsl:when test="preceding-sibling::*"> +      <xsl:text>, </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text> </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:if test="following-sibling::*"> +    <xsl:text> </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="interfacename" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="java"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="java"/> +    <xsl:text>;</xsl:text> +    <xsl:call-template name="synop-break"/> +  </fo:block> +</xsl:template> + +<xsl:template match="type" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="java"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="void" mode="java"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="methodparam" mode="java"> +  <xsl:param name="indent">0</xsl:param> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>,&RE;</xsl:text> +    <xsl:if test="$indent > 0"> +      <xsl:call-template name="copy-string"> +	<xsl:with-param name="string"> </xsl:with-param> +	<xsl:with-param name="count" select="$indent + 1"/> +      </xsl:call-template> +    </xsl:if> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="parameter" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template mode="java" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="decl"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="java"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="java"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="java"/> +  </xsl:variable> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:copy-of select="$decl"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="java"> +      <xsl:with-param name="indent" select="string-length($decl)"/> +    </xsl:apply-templates> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    throws </xsl:text> +      <xsl:apply-templates select="exceptionname" mode="java"/> +    </xsl:if> +    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="$end-modifiers" mode="java"/> +    </xsl:if> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== C++ ========================================================= --> + +<xsl:template match="classsynopsis" mode="cpp"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:apply-templates select="ooclass[1]" mode="cpp"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>: </xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/> +      <xsl:if test="oointerface|ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text> implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="cpp"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="ooexception"> +      <xsl:text> throws</xsl:text> +      <xsl:apply-templates select="ooexception" mode="cpp"/> +    </xsl:if> +    <xsl:text> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="cpp"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="cpp"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="interfacename" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="cpp"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="cpp"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="cpp"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="void" mode="cpp"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="methodparam" mode="cpp"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="parameter" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template mode="cpp" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="cpp"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="cpp"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="cpp"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="cpp"/> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    throws </xsl:text> +      <xsl:apply-templates select="exceptionname" mode="cpp"/> +    </xsl:if> +    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="$end-modifiers" mode="cpp"/> +    </xsl:if> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== IDL ========================================================= --> + +<xsl:template match="classsynopsis" mode="idl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>interface </xsl:text> +    <xsl:apply-templates select="ooclass[1]" mode="idl"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>: </xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/> +      <xsl:if test="oointerface|ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text> implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="idl"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="ooexception"> +      <xsl:text> throws</xsl:text> +      <xsl:apply-templates select="ooexception" mode="idl"/> +    </xsl:if> +    <xsl:text> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="idl"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="idl"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="idl"> +  <xsl:apply-templates mode="idl"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="interfacename" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="idl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="idl"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="idl"> +  <xsl:apply-templates mode="idl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="idl"> +  <xsl:apply-templates mode="idl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="idl"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="void" mode="idl"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="methodparam" mode="idl"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="parameter" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template mode="idl" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="idl"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="idl"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="idl"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="idl"/> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    raises(</xsl:text> +      <xsl:apply-templates select="exceptionname" mode="idl"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="$end-modifiers" mode="idl"/> +    </xsl:if> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== Perl ======================================================== --> + +<xsl:template match="classsynopsis" mode="perl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>package </xsl:text> +    <xsl:apply-templates select="ooclass[1]" mode="perl"/> +    <xsl:text>;&RE;</xsl:text> + +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>@ISA = (</xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/> +      <xsl:text>);&RE;</xsl:text> +    </xsl:if> + +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="perl"/> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="perl"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="perl"> +  <xsl:apply-templates mode="perl"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="interfacename" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="perl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="perl"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="perl"> +  <xsl:apply-templates mode="perl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="perl"> +  <xsl:apply-templates mode="perl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="perl"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="void" mode="perl"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="methodparam" mode="perl"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="parameter" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template mode="perl" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>sub </xsl:text> + +    <xsl:apply-templates select="methodname" mode="perl"/> +    <xsl:text> { ... };</xsl:text> +    <xsl:call-template name="synop-break"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * DocBook 5 allows linking elements (link, olink, and xref) --> +<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, --> +<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and --> +<!-- * their children. So we need to have mode="java|cpp|idl|perl" --> +<!-- * per-mode matches for those linking elements in order for them --> +<!-- * to be processed as expected. --> + +<xsl:template match="link|olink|xref" mode="java"> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="link|olink|xref" mode="cpp"> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="link|olink|xref" mode="idl"> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="link|olink|xref" mode="perl"> +  <xsl:apply-templates select="."/> +</xsl:template> + +</xsl:stylesheet>  | 
