| <?xml version="1.0"?> | 
 | <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | 
 |     <xsl:output method="html"/> | 
 |     <xsl:template match="/"> | 
 |         <html> | 
 |             <body> | 
 |                 <ul> | 
 |                     <xsl:apply-templates select="topic"> | 
 |                         <xsl:sort select="order" data-type="number" order="descending"/> | 
 |                     </xsl:apply-templates> | 
 |                 </ul> | 
 |             </body> | 
 |         </html> | 
 |     </xsl:template> | 
 |      | 
 |     <xsl:template match="topic"> | 
 |         <li> | 
 |             <object type="text/sitemap"> | 
 |                 <xsl:element name="param"> | 
 |                     <xsl:attribute name="name">Name</xsl:attribute> | 
 |                     <xsl:attribute name="value"><xsl:value-of select="title" /></xsl:attribute> | 
 |                 </xsl:element> | 
 |                 <xsl:element name="param"> | 
 |                     <xsl:attribute name="name">Local</xsl:attribute> | 
 |                     <xsl:attribute name="value"><xsl:value-of select="id" />.html</xsl:attribute> | 
 |                 </xsl:element> | 
 |             </object> | 
 |         </li> | 
 |         <xsl:if test="topic"> | 
 |             <ul> | 
 |                 <xsl:apply-templates select="topic" /> | 
 |             </ul> | 
 |         </xsl:if> | 
 |     </xsl:template> | 
 |  | 
 |     <!-- If a topic doesn't have a title, we pretend it isn't there and hoist its children up in its place --> | 
 |     <xsl:template match="topic[not(title)]"> | 
 |         <xsl:apply-templates select="topic"> | 
 |             <xsl:sort select="order" data-type="number" order="descending"/>         | 
 |         </xsl:apply-templates> | 
 |     </xsl:template> | 
 | </xsl:stylesheet> |