Listing 7: CppMethod.xsl — XSL code generating template for a C++ method

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<!-- ========================================= -->
<!-- == Template: method                    == -->
<!-- ========================================= -->
<xsl:template match="method">
<xsl:text>
</xsl:text>
<xsl:value-of select="@visibility"/><xsl:text>:
</xsl:text><xsl:text>    </xsl:text>
<xsl:value-of select="@modifier"/>
<xsl:if test="boolean(normalize-space(@modifier))">
     <xsl:text> </xsl:text></xsl:if>
<xsl:value-of select="@type"/><xsl:text> </xsl:text>
<xsl:value-of select="@name"/><xsl:text>(</xsl:text>
<!-- parameters -->
<xsl:for-each select="params/param">
    <xsl:apply-templates select="."/>
    <xsl:if test="not(position()=last())">  
        <xsl:text>, </xsl:text></xsl:if></xsl:for-each>
<xsl:text>)</xsl:text>
<xsl:if test="(@const='true')">
     <xsl:text> const</xsl:text></xsl:if>
<xsl:text>;
</xsl:text>

</xsl:template> 

<!-- ========================================= -->
<!-- == Template: param                     == -->
<!-- ========================================= -->
<xsl:template match="param">
<xsl:value-of select="@type"/>
<xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:template> 

</xsl:stylesheet> 
— End of Listing —