<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <!-- TODO convert @type array notation to bracket notation, eg. Array<DOMElement> to [DOMElement] --> <xsl:template match="/*"> <api xmlns="http://openajax.org/metadata"> <class name="jQuery"> <constructors> <xsl:for-each select="//function[@name='jQuery']"> <constructor> <shortDescription><xsl:value-of select="desc" /></shortDescription> <description><xsl:value-of select="longdesc" /></description> <xsl:call-template name="parameters" /> <returnType datatype="{@return}" /> <xsl:call-template name="examples" /> </constructor> </xsl:for-each> </constructors> <properties> <xsl:for-each select="//property"> <xsl:sort select="translate(@name,'$.','')"/> <xsl:sort select="count(params)"/> <property name="{@name}" readonly="true" datatype="{@return}" default=""> <xsl:call-template name="scope" /> <shortDescription><xsl:value-of select="desc" /></shortDescription> <description><xsl:value-of select="longdesc" /></description> <xsl:call-template name="examples" /> </property> </xsl:for-each> </properties> <methods> <xsl:for-each select="//function[@name!='jQuery']"> <xsl:sort select="translate(@name,'$.','')"/> <xsl:sort select="count(params)"/> <method name="{@name}"> <xsl:call-template name="scope" /> <shortDescription><xsl:value-of select="desc" /></shortDescription> <description><xsl:value-of select="longdesc" /></description> <xsl:call-template name="parameters" /> <returnType datatype="{@return}" /> <xsl:call-template name="examples" /> </method> </xsl:for-each> </methods> </class> </api> </xsl:template> <xsl:template name="scope"> <xsl:attribute name="scope"> <xsl:choose> <xsl:when test="starts-with(@name, 'jQuery.')">static</xsl:when> <xsl:when test="not(starts-with(@name, 'jQuery.'))">instance</xsl:when> </xsl:choose> </xsl:attribute> </xsl:template> <xsl:template name="parameters"> <parameters> <xsl:for-each select="params"> <parameter name="{@name}" datatype="{@type}"> <xsl:attribute name="usage"> <xsl:choose> <xsl:when test="not(@optional)">required</xsl:when> <xsl:when test="@optional">optional</xsl:when> </xsl:choose> </xsl:attribute> <description><xsl:value-of select="desc" /></description> <!-- TODO part of the spec, but with a very different interpretation --> <xsl:choose> <xsl:when test="../option"> <properties> <xsl:for-each select="../option"> <property name="{@name}" datatype="{@type}" default="{@default}"> <description><xsl:value-of select="desc" /></description> </property> </xsl:for-each> </properties> </xsl:when> </xsl:choose> </parameter> </xsl:for-each> </parameters> </xsl:template> <xsl:template name="examples"> <examples> <xsl:for-each select="example"> <example> <description><xsl:value-of select="desc" /></description> <xsl:copy-of select="code|html|css" /> </example> </xsl:for-each> </examples> </xsl:template> </xsl:stylesheet>