| <?xml version="1.0"?> |
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
| <xsl:output method="xml" /> |
| <xsl:strip-space elements="*"/> |
| |
| <xsl:param name="id"/> |
| <xsl:param name="name"/> |
| <xsl:param name="synopsis"/> |
| <xsl:param name="childIntro"/> |
| |
| <xsl:template match="*|node()"> |
| <!-- no echo --> |
| </xsl:template> |
| |
| <xsl:template match="/"> |
| <xsl:apply-templates select="booklet"/> |
| </xsl:template> |
| |
| <xsl:template match="booklet"> |
| <topic> |
| <xsl:copy-of select="id"/> |
| <title><xsl:value-of select="name"/></title> |
| <synopsis><xsl:copy-of select="lead/node()"/></synopsis> |
| <header><h1><xsl:copy-of select="name/node()"/></h1></header> |
| <body> |
| <!-- Lengthier description --> |
| <xsl:copy-of select="description/node()"/> |
| <xsl:apply-templates select="package"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| </body> |
| </topic> |
| </xsl:template> |
| |
| <xsl:template match="package"> |
| <xsl:call-template name="memberTable"> |
| <xsl:with-param name="members" select="class"/> |
| <xsl:with-param name="title">Classes</xsl:with-param> |
| </xsl:call-template> |
| <!-- |
| <xsl:call-template name="memberTable"> |
| <xsl:with-param name="members" select="interface"/> |
| <xsl:with-param name="title">Interfaces</xsl:with-param> |
| </xsl:call-template> |
| --> |
| <xsl:apply-templates select="class"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| </xsl:template> |
| |
| <xsl:template match="class|interface"> |
| <topic> |
| <xsl:copy-of select="id"/> |
| <title><xsl:value-of select="name"/></title> |
| <index> |
| <xsl:value-of select="name"/> |
| <xsl:if test="name()='class'"> class</xsl:if> |
| <xsl:if test="name()='interface'"> interface</xsl:if> |
| </index> |
| <synopsis><xsl:copy-of select="lead/node()"/></synopsis> |
| <header> |
| <xsl:call-template name="memberHeader"> |
| <xsl:with-param name="member" select="."/> |
| </xsl:call-template> |
| </header> |
| <body> |
| <!-- Lengthier description --> |
| <xsl:copy-of select="description/node()"/> |
| |
| <xsl:call-template name="memberTable"> |
| <xsl:with-param name="members" select="class"/> |
| <xsl:with-param name="title">Nested classes</xsl:with-param> |
| </xsl:call-template> |
| |
| <xsl:call-template name="memberTable"> |
| <xsl:with-param name="members" select="interface"/> |
| <xsl:with-param name="title">Nested interfaces</xsl:with-param> |
| </xsl:call-template> |
| |
| <xsl:call-template name="memberTable"> |
| <xsl:with-param name="members" select="field"/> |
| <xsl:with-param name="title">Fields</xsl:with-param> |
| </xsl:call-template> |
| |
| <xsl:call-template name="memberTable"> |
| <xsl:with-param name="members" select="constructor"/> |
| <xsl:with-param name="title">Constructors</xsl:with-param> |
| </xsl:call-template> |
| |
| <xsl:call-template name="memberTable"> |
| <xsl:with-param name="members" select="method"/> |
| <xsl:with-param name="title">Methods</xsl:with-param> |
| </xsl:call-template> |
| |
| <!-- See also --> |
| <xsl:if test="tags/link"> |
| <h2>See Also</h2> |
| <div class="apiSection"> |
| <xsl:for-each select="tags/link"> |
| <xsl:copy-of select="."/> |
| <xsl:if test="position()!=last()">, </xsl:if> |
| </xsl:for-each> |
| </div> |
| </xsl:if> |
| </body> |
| |
| <xsl:apply-templates select="interface"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| |
| <xsl:apply-templates select="class"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| |
| <xsl:apply-templates select="field"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| |
| <xsl:apply-templates select="constructor"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| |
| <xsl:apply-templates select="method"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| </topic> |
| </xsl:template> |
| |
| <xsl:template match="method|constructor"> |
| <topic> |
| <id><xsl:value-of select="id"/></id> |
| <title> |
| <xsl:call-template name="emitFlatSig"> |
| <xsl:with-param name="methodOrCtor" select="current()"/> |
| </xsl:call-template> |
| </title> |
| <index> |
| <xsl:value-of select="name"/> |
| <xsl:if test="name()='method'"> method</xsl:if> |
| <xsl:if test="name()='constructor'"> constructor</xsl:if> |
| </index> |
| <synopsis><xsl:copy-of select="lead/node()"/></synopsis> |
| <header> |
| <xsl:call-template name="memberHeader"> |
| <xsl:with-param name="member" select="."/> |
| </xsl:call-template> |
| </header> |
| <body> |
| <!-- Lengthier description --> |
| <xsl:copy-of select="description/node()"/> |
| |
| <!-- Parameter description --> |
| <xsl:if test="params/param"> |
| <h2>Parameters</h2> |
| <div class="apiSection"> |
| <dl> |
| <xsl:for-each select="params/param"> |
| <dt> |
| <xsl:if test="starts-with(name, '_')"> |
| <xsl:value-of select="substring(name,2)"/><xsl:text>?</xsl:text> |
| </xsl:if> |
| <xsl:if test="not(starts-with(name, '_'))"> |
| <xsl:value-of select="name"/> |
| </xsl:if> |
| </dt> |
| <dd> |
| <xsl:if test="starts-with(name, '_')"> |
| <em>[Optional] </em> |
| </xsl:if> |
| <xsl:variable name="paramDesc" select="../../tags/param[name=current()/name]/description/node()"/> |
| <xsl:copy-of select="$paramDesc"/> |
| <xsl:if test="not($paramDesc)"><xsl:comment>[Missing documentation]</xsl:comment></xsl:if> |
| </dd> |
| </xsl:for-each> |
| </dl> |
| </div> |
| </xsl:if> |
| |
| <!-- Return value description --> |
| <xsl:if test="tags/return"> |
| <h2>Return Value</h2> |
| <div class="apiSection"> |
| <xsl:copy-of select="tags/return/node()"/> |
| </div> |
| </xsl:if> |
| |
| <!-- See also --> |
| <xsl:if test="tags/link"> |
| <h2>See Also</h2> |
| <div class="apiSection"> |
| <xsl:for-each select="tags/link"> |
| <xsl:copy-of select="."/> |
| <xsl:if test="position()!=last()">, </xsl:if> |
| </xsl:for-each> |
| </div> |
| </xsl:if> |
| </body> |
| </topic> |
| </xsl:template> |
| |
| <xsl:template match="field"> |
| <topic> |
| <id><xsl:value-of select="id"/></id> |
| <title><xsl:value-of select="name"/></title> |
| <index><xsl:value-of select="name"/> field</index> |
| <synopsis><xsl:copy-of select="lead/node()"/></synopsis> |
| <header> |
| <xsl:call-template name="memberHeader"> |
| <xsl:with-param name="member" select="."/> |
| </xsl:call-template> |
| </header> |
| <body> |
| <!-- Lengthier description --> |
| <xsl:copy-of select="description/node()"/> |
| </body> |
| </topic> |
| </xsl:template> |
| |
| <xsl:template match="*|node()"> |
| <!-- quiet --> |
| </xsl:template> |
| |
| <xsl:template name="memberTable"> |
| <xsl:param name="members"/> |
| <xsl:param name="title"/> |
| |
| <xsl:if test="$members"> |
| <h2><xsl:value-of select="$title"/></h2> |
| <table class="members" cellspacing="1" cellpadding="0"> |
| <xsl:apply-templates select="$members" mode="memberTableImpl"> |
| <xsl:sort case-order="lower-first" data-type="text" order="ascending" select="."/> |
| </xsl:apply-templates> |
| </table> |
| </xsl:if> |
| </xsl:template> |
| |
| <xsl:template match="*" mode="memberTableImpl"> |
| <tr> |
| <td width="1%"> |
| <nobr> |
| <link ref="{id}"> |
| <xsl:call-template name="emitFlatSig"> |
| <xsl:with-param name="methodOrCtor" select="current()"/> |
| </xsl:call-template> |
| </link> |
| </nobr> |
| </td> |
| <td><xsl:copy-of select="lead/node()"/><xsl:text> </xsl:text></td> |
| </tr> |
| </xsl:template> |
| |
| <xsl:template name="memberHeader"> |
| <xsl:param name="member"/> |
| <xsl:variable name="parent" select="$member/.."/> |
| |
| <div class="memberHeader"> |
| |
| <!-- The header announces the simple name of the member --> |
| <h1> |
| <xsl:if test="name()='package'">Package </xsl:if> |
| <xsl:if test="name()='class'">Class </xsl:if> |
| <xsl:if test="name()='interface'">Interface </xsl:if> |
| <xsl:if test="name()='method'">Method </xsl:if> |
| <xsl:if test="name()='constructor'">Constructor </xsl:if> |
| <xsl:if test="name()='field'">Field </xsl:if> |
| <xsl:value-of select="name"/> |
| </h1> |
| |
| <xsl:if test="name()!='package'"> |
| <!-- Tell where this member lives --> |
| <!-- |
| <div class="memberOf"> |
| Member of <link ref="{$parent/id}"><xsl:value-of select="$parent/name"/></link> |
| </div> |
| --> |
| <!-- A signature for the member --> |
| <code class="signature"> |
| <xsl:call-template name="memberSig"> |
| <xsl:with-param name="member" select="."/> |
| </xsl:call-template> |
| </code> |
| </xsl:if> |
| </div> |
| |
| </xsl:template> |
| |
| <xsl:template name="memberSig"> |
| <xsl:param name="member"/> |
| |
| <!-- |
| <xsl:if test="isPublic">public </xsl:if> |
| <xsl:if test="isProtected">protected </xsl:if> |
| <xsl:if test="isPrivate">private </xsl:if> |
| <xsl:if test="isPackagePrivate">/*package*/ </xsl:if> |
| <xsl:if test="isStatic">static </xsl:if> |
| <xsl:if test="isFinal">final </xsl:if> |
| <xsl:if test="isAbstract">abstract </xsl:if> |
| <xsl:if test="isSynchronized">synchronized </xsl:if> |
| --> |
| <xsl:if test="name()='class'"> |
| class |
| <b><xsl:value-of select="name"/></b> |
| <!-- |
| <xsl:if test="superclass[@ref != 'java.lang.Object']"> |
| <br/>derives from |
| <link ref="{superclass/@ref}"><xsl:value-of select="superclass"/></link> |
| </xsl:if> |
| --> |
| <!-- |
| <xsl:if test="superinterface"> |
| <br/>can be used as |
| <xsl:for-each select="superinterface"> |
| <link ref="{@ref}"><xsl:value-of select="."/></link> |
| <xsl:if test="position() != last()">, </xsl:if> |
| </xsl:for-each> |
| </xsl:if> |
| --> |
| </xsl:if> |
| <!-- |
| <xsl:if test="name()='interface'"> |
| interface |
| <b><xsl:value-of select="name"/></b> |
| <xsl:if test="superinterface"> |
| <br/>extends |
| <xsl:for-each select="superinterface"> |
| <link ref="{@ref}"><xsl:value-of select="."/></link> |
| <xsl:if test="position() != last()">, </xsl:if> |
| </xsl:for-each> |
| </xsl:if> |
| </xsl:if> |
| --> |
| <xsl:if test="name()='field'"> |
| <xsl:if test="@ref"> |
| <link ref="{@ref}"><xsl:value-of select="type"/></link> |
| </xsl:if> |
| <xsl:if test="not(@ref)"> |
| <xsl:value-of select="type"/> |
| </xsl:if> |
| <xsl:text> </xsl:text> |
| <b><xsl:value-of select="name"/></b> |
| </xsl:if> |
| |
| <xsl:if test="name()='method' or name()='constructor'"> |
| <!-- |
| <xsl:if test="type/@ref"> |
| <link ref="{type/@ref}"><xsl:value-of select="type"/></link> |
| </xsl:if> |
| <xsl:if test="not(type/@ref)"> |
| <xsl:value-of select="type"/> |
| </xsl:if> |
| --> |
| <b><xsl:value-of select="name"/></b><xsl:text>(</xsl:text> |
| <xsl:if test="params/param"> |
| <xsl:for-each select="params/param"> |
| <!-- |
| <div style="margin-left: 2em"> |
| <nobr> |
| <xsl:if test="type/@ref"> |
| <link ref="{type/@ref}"><xsl:value-of select="type"/></link> |
| </xsl:if> |
| <xsl:if test="not(type/@ref)"> |
| <xsl:value-of select="type"/> |
| </xsl:if> |
| <xsl:text> </xsl:text> |
| --> |
| <xsl:if test="starts-with(name, '_')"> |
| <xsl:value-of select="substring(name,2)"/><xsl:text>?</xsl:text> |
| </xsl:if> |
| <xsl:if test="not(starts-with(name, '_'))"> |
| <xsl:value-of select="name"/> |
| </xsl:if> |
| <xsl:if test="position() != last()">, </xsl:if> |
| <!-- |
| </nobr> |
| </div> |
| --> |
| </xsl:for-each> |
| </xsl:if> |
| <xsl:text>)</xsl:text> |
| <xsl:if test="throws/throw"> |
| <br/> |
| throws |
| <xsl:for-each select="throws/throw"> |
| <xsl:text> </xsl:text> |
| <xsl:if test="@ref"> |
| <link ref="{@ref}"><xsl:value-of select="."/></link> |
| </xsl:if> |
| <xsl:if test="not(@ref)"> |
| <xsl:value-of select="."/> |
| </xsl:if> |
| <xsl:if test="position() != last()">,</xsl:if> |
| </xsl:for-each> |
| </xsl:if> |
| </xsl:if> |
| </xsl:template> |
| |
| <xsl:template name="emitFlatSig"> |
| <xsl:param name="methodOrCtor"/> |
| <xsl:value-of select="$methodOrCtor/name"/> |
| <xsl:text>(</xsl:text> |
| <xsl:for-each select="$methodOrCtor/params/param"> |
| <xsl:call-template name="emitParamName"> |
| <xsl:with-param name="param" select="."/> |
| </xsl:call-template> |
| <xsl:if test="position() != last()">, </xsl:if> |
| </xsl:for-each> |
| <xsl:text>)</xsl:text> |
| </xsl:template> |
| |
| <xsl:template name="emitParamName"> |
| <xsl:param name="param"/> |
| <xsl:if test="starts-with($param/name, '_')"> |
| <xsl:value-of select="substring($param/name,2)"/><xsl:text>?</xsl:text> |
| </xsl:if> |
| <xsl:if test="not(starts-with($param/name, '_'))"> |
| <xsl:value-of select="$param/name"/> |
| </xsl:if> |
| </xsl:template> |
| |
| </xsl:stylesheet> |