<?xml version="1.0" encoding="ISO-8859-1"?> <!-- ================================================================================ --> <!-- Amend, distribute, spindle and mutilate as desired, but don't remove this header --> <!-- A simple XML Documentation to basic HTML transformation stylesheet --> <!-- (c)2005 by Emma Burrows --> <!-- ================================================================================ --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- DOCUMENT TEMPLATE --> <!-- Format the whole document as a valid HTML document --> <xsl:template match="/"> <HTML> <BODY> <xsl:apply-templates select="//assembly"/> </BODY> </HTML> </xsl:template> <!-- ASSEMBLY TEMPLATE --> <!-- For each Assembly, display its name and then its member types --> <xsl:template match="assembly"> <H1><xsl:value-of select="name"/></H1> <xsl:apply-templates select="//member[contains(@name,'T:')]"/> </xsl:template> <!-- TYPE TEMPLATE --> <!-- Loop through member types and display their properties and methods --> <xsl:template match="//member[contains(@name,'T:')]"> <!-- Two variables to make code easier to read --> <!-- A variable for the name of this type --> <xsl:variable name="MemberName" select="substring-after(@name, '.')"/> <!-- Get the type's fully qualified name without the T: prefix --> <xsl:variable name="FullMemberName" select="substring-after(@name, ':')"/> <!-- Display the type's name and information --> <H2><xsl:value-of select="$MemberName"/></H2> <xsl:apply-templates/> <!-- If this type has public fields, display them --> <xsl:if test="//member[contains(@name,concat('F:',$FullMemberName))]"> <H3>Fields</H3> <xsl:for-each select="//member[contains(@name,concat('F:',$FullMemberName))]"> <H4><xsl:value-of select="substring-after(@name, concat('F:',$FullMemberName,'.'))"/></H4> <xsl:apply-templates/> </xsl:for-each> </xsl:if> <!-- If this type has properties, display them --> <xsl:if test="//member[contains(@name,concat('P:',$FullMemberName))]"> <H3>Properties</H3> <xsl:for-each select="//member[contains(@name,concat('P:',$FullMemberName))]"> <H4><xsl:value-of select="substring-after(@name, concat('P:',$FullMemberName,'.'))"/></H4> <xsl:apply-templates/> </xsl:for-each> </xsl:if> <!-- If this type has methods, display them --> <xsl:if test="//member[contains(@name,concat('M:',$FullMemberName))]"> <H3>Methods</H3> <xsl:for-each select="//member[contains(@name,concat('M:',$FullMemberName))]"> <!-- If this is a constructor, display the type name (instead of "#ctor"), or display the method name --> <H4> <xsl:choose> <xsl:when test="contains(@name, '#ctor')"> Constructor: <xsl:value-of select="$MemberName"/> <xsl:value-of select="substring-after(@name, '#ctor')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="substring-after(@name, concat('M:',$FullMemberName,'.'))"/> </xsl:otherwise> </xsl:choose> </H4> <xsl:apply-templates select="summary"/> <!-- Display parameters if there are any --> <xsl:if test="count(param)!=0"> <H5>Parameters</H5> <xsl:apply-templates select="param"/> </xsl:if> <!-- Display return value if there are any --> <xsl:if test="count(returns)!=0"> <H5>Return Value</H5> <xsl:apply-templates select="returns"/> </xsl:if> <!-- Display exceptions if there are any --> <xsl:if test="count(exception)!=0"> <H5>Exceptions</H5> <xsl:apply-templates select="exception"/> </xsl:if> <!-- Display examples if there are any --> <xsl:if test="count(example)!=0"> <H5>Example</H5> <xsl:apply-templates select="example"/> </xsl:if> </xsl:for-each> </xsl:if> </xsl:template> <!-- OTHER TEMPLATES --> <!-- Templates for other tags --> <xsl:template match="c"> <CODE><xsl:apply-templates /></CODE> </xsl:template> <xsl:template match="code"> <PRE><xsl:apply-templates /></PRE> </xsl:template> <xsl:template match="example"> <P><STRONG>Example: </STRONG><xsl:apply-templates /></P> </xsl:template> <xsl:template match="exception"> <P><STRONG><xsl:value-of select="substring-after(@cref,'T:')"/>: </STRONG><xsl:apply-templates /></P> </xsl:template> <xsl:template match="include"> <A HREF="{@file}">External file</A> </xsl:template> <xsl:template match="para"> <P><xsl:apply-templates /></P> </xsl:template> <xsl:template match="param"> <P><STRONG><xsl:value-of select="@name"/>: </STRONG><xsl:apply-templates /></P> </xsl:template> <xsl:template match="paramref"> <EM><xsl:value-of select="@name" /></EM> </xsl:template> <xsl:template match="permission"> <P><STRONG>Permission: </STRONG><EM><xsl:value-of select="@cref" /> </EM><xsl:apply-templates /></P> </xsl:template> <xsl:template match="remarks"> <P><xsl:apply-templates /></P> </xsl:template> <xsl:template match="returns"> <P><STRONG>Return Value: </STRONG><xsl:apply-templates /></P> </xsl:template> <xsl:template match="see"> <EM>See: <xsl:value-of select="@cref" /></EM> </xsl:template> <xsl:template match="seealso"> <EM>See also: <xsl:value-of select="@cref" /></EM> </xsl:template> <xsl:template match="summary"> <P><xsl:apply-templates /></P> </xsl:template> <xsl:template match="list"> <xsl:choose> <xsl:when test="@type='bullet'"> <UL> <xsl:for-each select="listheader"> <LI><strong><xsl:value-of select="term"/>: </strong><xsl:value-of select="definition"/></LI> </xsl:for-each> <xsl:for-each select="list"> <LI><strong><xsl:value-of select="term"/>: </strong><xsl:value-of select="definition"/></LI> </xsl:for-each> </UL> </xsl:when> <xsl:when test="@type='number'"> <OL> <xsl:for-each select="listheader"> <LI><strong><xsl:value-of select="term"/>: </strong><xsl:value-of select="definition"/></LI> </xsl:for-each> <xsl:for-each select="list"> <LI><strong><xsl:value-of select="term"/>: </strong><xsl:value-of select="definition"/></LI> </xsl:for-each> </OL> </xsl:when> <xsl:when test="@type='table'"> <TABLE> <xsl:for-each select="listheader"> <TH> <TD><xsl:value-of select="term"/></TD> <TD><xsl:value-of select="definition"/></TD> </TH> </xsl:for-each> <xsl:for-each select="list"> <TR> <TD><strong><xsl:value-of select="term"/>: </strong></TD> <TD><xsl:value-of select="definition"/></TD> </TR> </xsl:for-each> </TABLE> </xsl:when> </xsl:choose> </xsl:template> </xsl:stylesheet>