home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 February / CMCD0205.ISO / Software / Freeware / Programare / Sharp / SharpDevelop_1.0.3.1761_Setup.exe / namespacehierarchy.xslt < prev    next >
Extensible Markup Language  |  2004-07-05  |  4KB  |  126 lines

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="xml" version="1.0" encoding="UTF-16" indent="yes"/>
  4. <xsl:include href="common.xslt"/>
  5.  
  6. <xsl:param name='namespace'/>
  7.  
  8. <xsl:template match="/">
  9.     <xsl:apply-templates select="DOC.NET/assembly/module/namespace[@name=$namespace]"/>
  10. </xsl:template>
  11.  
  12. <xsl:template match="namespace">
  13.  
  14. <html dir="LTR">
  15. <head>
  16. <title><xsl:value-of select="@name"/> Hierarchy</title>
  17. </head>
  18.  
  19. <link rel="stylesheet" type="text/css" href="MsdnHelp.css"/>
  20.  
  21. <body>
  22.  
  23. <h1><xsl:value-of select="@name"/> Hierarchy</h1>
  24.  
  25. <br/>
  26.  
  27. <a href="ms-help://MSDNVS/cpref/html_hh2/frlrfSystemObjectClassTopic.htm">System.Object</a>
  28. <br/>
  29. <xsl:apply-templates select=".//*[(local-name()='class' and not(base)) or (local-name()='base' and not(base))]">
  30.     <xsl:sort select="@name"/>
  31. </xsl:apply-templates>
  32. <br/>
  33.  
  34. <xsl:if test="interface">
  35.     <h3>Interfaces</h3>
  36.     <p>
  37.           <xsl:apply-templates select="interface">
  38.               <xsl:sort select="@name"/>
  39.           </xsl:apply-templates>
  40.     </p>
  41. </xsl:if>
  42.  
  43. </body>
  44. </html>
  45. </xsl:template>
  46.  
  47. <xsl:template match="class">
  48.     <xsl:variable name="class-id" select="class/@id"/>
  49.     <xsl:if test="not(..//base[@id=$class-id])">
  50.         <xsl:call-template name="draw-hierarchy">
  51.             <xsl:with-param name="current" select="."/>
  52.             <xsl:with-param name="level" select="1"/>
  53.         </xsl:call-template>
  54.     </xsl:if>
  55. </xsl:template>
  56.  
  57. <xsl:template match="base">
  58.     <xsl:call-template name="draw-hierarchy">
  59.         <xsl:with-param name="current" select="."/>
  60.         <xsl:with-param name="level" select="1"/>
  61.     </xsl:call-template>
  62. </xsl:template>
  63.  
  64. <xsl:template match="interface">
  65.     <a>
  66.         <xsl:attribute name="href">
  67.             <xsl:call-template name="get-filename-for-type">
  68.                 <xsl:with-param name="id" select="@id"/>
  69.             </xsl:call-template>
  70.         </xsl:attribute>
  71.         <xsl:value-of select="@name"/>
  72.     </a>
  73.     <br/>
  74. </xsl:template>
  75.  
  76. <xsl:template name="indent">
  77.     <xsl:param name="count"/>
  78.     <xsl:if test="$count > 0">
  79.         <xsl:text>  </xsl:text>
  80.         <xsl:call-template name="indent">
  81.             <xsl:with-param name="count" select="$count - 1"/>
  82.         </xsl:call-template>
  83.     </xsl:if>
  84. </xsl:template>
  85.  
  86. <xsl:template name="draw-hierarchy">
  87.     <xsl:param name="current"/>
  88.     <xsl:param name="level"/>
  89.     <xsl:if test="$current[local-name()!='namespace']">
  90.         <xsl:call-template name="indent">
  91.             <xsl:with-param name="count" select="$level"/>
  92.         </xsl:call-template>
  93.         <xsl:text>-</xsl:text>
  94.         <a>
  95.             <xsl:attribute name="href">
  96.                 <xsl:choose>
  97.                     <xsl:when test="starts-with($current/@id, 'T:System.')">
  98.                         <xsl:call-template name="get-filename-for-system-class">
  99.                             <xsl:with-param name="class-name" select="substring-after($current/@id, 'T:')"/>
  100.                         </xsl:call-template>
  101.                     </xsl:when>
  102.                     <xsl:otherwise>
  103.                         <xsl:call-template name="get-filename-for-type">
  104.                             <xsl:with-param name="id" select="$current/@id"/>
  105.                         </xsl:call-template>
  106.                     </xsl:otherwise>
  107.                 </xsl:choose>        
  108.             </xsl:attribute>
  109.             <xsl:call-template name="get-datatype">
  110.                 <xsl:with-param name="datatype" select="substring-after($current/@id, 'T:')"/>
  111.                 <xsl:with-param name="namespace-name" select="$namespace"/>
  112.             </xsl:call-template>
  113.         </a>
  114.         <br/>
  115. <!-- bug in MSXML that won't allow this recursion to go any deeper.  saxon works ok with it. -->        
  116. <xsl:if test="$level != 7">
  117.         <xsl:call-template name="draw-hierarchy">
  118.             <xsl:with-param name="current" select="$current/.."/>
  119.             <xsl:with-param name="level" select="$level + 1"/>
  120.         </xsl:call-template>
  121. </xsl:if>        
  122.     </xsl:if>
  123. </xsl:template>
  124.  
  125. </xsl:stylesheet>
  126.