|  | <?xml version='1.0' encoding='UTF-8'?> | 
|  | <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> | 
|  |  | 
|  | <!--<xsl:strip-space elements='p th td li strong em'/>--> | 
|  |  | 
|  | <xsl:template match='/design'> | 
|  | <s1 title='{@name}'> | 
|  | <xsl:apply-templates select='category'/> | 
|  | </s1> | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template match='category'> | 
|  | <s2 title='{@name}'> | 
|  | <s3 title='Package {@package}'> | 
|  | <xsl:apply-templates select='interface|class'/> | 
|  | </s3> | 
|  | </s2> | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template match='interface|class'> | 
|  | <anchor name='{@id}'/> | 
|  | <table> | 
|  | <tr> | 
|  | <th> | 
|  | <xsl:choose> | 
|  | <xsl:when test='name()="interface"'> | 
|  | interface <em><xsl:value-of select='@name'/></em> | 
|  | </xsl:when> | 
|  | <xsl:otherwise> | 
|  | class <strong><xsl:value-of select='@name'/></strong> | 
|  | </xsl:otherwise> | 
|  | </xsl:choose> | 
|  | </th> | 
|  | </tr> | 
|  | <xsl:if test='extends'> | 
|  | <tr> | 
|  | <td> | 
|  | extends | 
|  | <xsl:for-each select='extends'> | 
|  | <xsl:call-template name='type'/> | 
|  | <xsl:if test='not(position()=last())'> | 
|  | <xsl:text>, </xsl:text> | 
|  | </xsl:if> | 
|  | </xsl:for-each> | 
|  | </td> | 
|  | </tr> | 
|  | </xsl:if> | 
|  | <xsl:if test='implements'> | 
|  | <tr> | 
|  | <td> | 
|  | implements | 
|  | <xsl:for-each select='implements'> | 
|  | <xsl:call-template name='type'/> | 
|  | <xsl:if test='not(position()=last())'> | 
|  | <xsl:text>, </xsl:text> | 
|  | </xsl:if> | 
|  | </xsl:for-each> | 
|  | </td> | 
|  | </tr> | 
|  | </xsl:if> | 
|  | <xsl:if test='constant'> | 
|  | <tr> | 
|  | <td> | 
|  | constants: | 
|  | <ul> | 
|  | <xsl:for-each select='constant'> | 
|  | <li> | 
|  | <xsl:value-of select='@visibility'/> | 
|  | <xsl:text> </xsl:text> | 
|  | <xsl:apply-templates/> | 
|  | <xsl:text> </xsl:text> | 
|  | <xsl:value-of select='@name'/> | 
|  | </li> | 
|  | </xsl:for-each> | 
|  | </ul> | 
|  | </td> | 
|  | </tr> | 
|  | </xsl:if> | 
|  | <xsl:if test='method'> | 
|  | <tr> | 
|  | <td> | 
|  | methods: | 
|  | <ul> | 
|  | <xsl:for-each select='method'> | 
|  | <li> | 
|  | <xsl:value-of select='@visibility'/> | 
|  | <xsl:text> </xsl:text> | 
|  | <xsl:choose> | 
|  | <xsl:when test='returns'> | 
|  | <xsl:apply-templates/> | 
|  | <xsl:text> </xsl:text> | 
|  | </xsl:when> | 
|  | <xsl:otherwise>void </xsl:otherwise> | 
|  | </xsl:choose> | 
|  | <xsl:value-of select='@name'/> | 
|  | <xsl:text>(</xsl:text> | 
|  | <xsl:for-each select='param'> | 
|  | <xsl:apply-templates/> | 
|  | <xsl:if test='not(position()=last())'>, </xsl:if> | 
|  | </xsl:for-each> | 
|  | <xsl:text>)</xsl:text> | 
|  | </li> | 
|  | </xsl:for-each> | 
|  | </ul> | 
|  | </td> | 
|  | </tr> | 
|  | </xsl:if> | 
|  | </table> | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template match='constant|field|param'> | 
|  | <xsl:call-template name='type'/> | 
|  | <xsl:text> </xsl:text> | 
|  | <xsl:value-of select='@name'/> | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template name='type'> | 
|  | <xsl:apply-templates select='primitive|array|reference|collection'/> | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template match='primitive'> | 
|  | <xsl:value-of select='@type'/> | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template match='array'> | 
|  | <xsl:call-template name='type'/>[] | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template match='reference'> | 
|  | <xsl:variable name='idref'><xsl:value-of select='@idref'/></xsl:variable> | 
|  | <xsl:choose> | 
|  | <xsl:when test='//class[@id=$idref]'> | 
|  | <strong><xsl:value-of select='//*[@id=$idref]/@name'/></strong> | 
|  | </xsl:when> | 
|  | <xsl:otherwise> | 
|  | <em><xsl:value-of select='//*[@id=$idref]/@name'/></em> | 
|  | </xsl:otherwise> | 
|  | </xsl:choose> | 
|  | </xsl:template> | 
|  |  | 
|  | <xsl:template match='collection'> | 
|  | COLLECTION | 
|  | </xsl:template> | 
|  |  | 
|  | </xsl:stylesheet> |