PlanetXML

JavaDoc Kommentare per XSLT ausgeben

Dieses XSLT Template formatiert einen Text als JavaDoc Kommentar indem dieser in '/**' und '*/' eingeschlossen wird und jeder Zeile ein ' * ' vorangestellt wird. Die Einrücktiefe kann als Parameter übergeben werden.

<xsl:template name="format-comment">
    <xsl:param name="str" />
    <xsl:param name="indent" />
    <xsl:value-of select="$indent" />
    <xsl:text>/**</xsl:text>
    <xsl:call-template name="format-comment-recursive">
        <xsl:with-param name="str" select="$str" />
        <xsl:with-param name="indent" select="$indent" />
    </xsl:call-template>
    <xsl:text>&#10;</xsl:text>
    <xsl:value-of select="$indent" />
    <xsl:text> */</xsl:text>
</xsl:template>

<xsl:template name="format-comment-recursive">
    <xsl:param name="str" />
    <xsl:param name="indent" select="''" />
    <xsl:if test="string-length($str) &gt; 0">
        <xsl:text>&#10;</xsl:text>
        <xsl:value-of select="$indent" />
        <xsl:text> * </xsl:text>
        <xsl:choose>
            <xsl:when test="contains($str, '&#10;')">
                <xsl:value-of select="substring-before($str, '&#10;')" />
                <xsl:call-template name="format-comment-recursive">
                    <xsl:with-param name="str" select="substring-after($str, '&#10;')" />
                    <xsl:with-param name="indent" select="$indent" />
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$str" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:if>
</xsl:template>