home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / Sharpdev / 099bsetup.exe / common.xslt < prev    next >
Extensible Markup Language  |  2003-08-28  |  15KB  |  409 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.  
  4. <xsl:include href="syntax.xslt"/>
  5. <xsl:include href="filenames.xslt"/>
  6.  
  7. <xsl:template name="csharp-type">
  8.     <xsl:param name="runtime-type"/>
  9.     
  10.     <xsl:variable name="old-type">
  11.         <xsl:choose>
  12.             <xsl:when test="contains($runtime-type, '[]')">
  13.                 <xsl:value-of select="substring-before($runtime-type, '[]')"/>
  14.             </xsl:when>
  15.             <xsl:when test="contains($runtime-type, '&')">
  16.                 <xsl:value-of select="substring-before($runtime-type, '&')"/>
  17.             </xsl:when>
  18.             <xsl:otherwise>
  19.                 <xsl:value-of select="$runtime-type"/>
  20.             </xsl:otherwise>
  21.         </xsl:choose>
  22.     </xsl:variable>
  23.  
  24.     <xsl:variable name="new-type">
  25.         <xsl:choose>
  26.             <xsl:when test="$old-type='System.Byte'">byte</xsl:when>
  27.             <xsl:when test="$old-type='Byte'">byte</xsl:when>
  28.             <xsl:when test="$old-type='System.SByte'">sbyte</xsl:when>
  29.             <xsl:when test="$old-type='SByte'">sbyte</xsl:when>
  30.             <xsl:when test="$old-type='System.Int16'">short</xsl:when>
  31.             <xsl:when test="$old-type='Int16'">short</xsl:when>
  32.             <xsl:when test="$old-type='System.UInt16'">ushort</xsl:when>
  33.             <xsl:when test="$old-type='UInt16'">ushort</xsl:when>
  34.             <xsl:when test="$old-type='System.Int32'">int</xsl:when>
  35.             <xsl:when test="$old-type='Int32'">int</xsl:when>
  36.             <xsl:when test="$old-type='System.UInt32'">uint</xsl:when>
  37.             <xsl:when test="$old-type='UInt32'">uint</xsl:when>
  38.             <xsl:when test="$old-type='System.Int64'">long</xsl:when>
  39.             <xsl:when test="$old-type='Int64'">long</xsl:when>
  40.             <xsl:when test="$old-type='System.UInt64'">ulong</xsl:when>
  41.             <xsl:when test="$old-type='UInt64'">ulong</xsl:when>
  42.             <xsl:when test="$old-type='System.Single'">float</xsl:when>
  43.             <xsl:when test="$old-type='Single'">float</xsl:when>
  44.             <xsl:when test="$old-type='System.Double'">double</xsl:when>
  45.             <xsl:when test="$old-type='Double'">double</xsl:when>
  46.             <xsl:when test="$old-type='System.Decimal'">decimal</xsl:when>
  47.             <xsl:when test="$old-type='Decimal'">decimal</xsl:when>
  48.             <xsl:when test="$old-type='System.String'">string</xsl:when>
  49.             <xsl:when test="$old-type='String'">string</xsl:when>
  50.             <xsl:when test="$old-type='System.Char'">char</xsl:when>
  51.             <xsl:when test="$old-type='Char'">char</xsl:when>
  52.             <xsl:when test="$old-type='System.Boolean'">bool</xsl:when>
  53.             <xsl:when test="$old-type='Boolean'">bool</xsl:when>
  54.             <xsl:when test="$old-type='System.Void'">void</xsl:when>
  55.             <xsl:when test="$old-type='Void'">void</xsl:when>
  56.             <xsl:when test="$old-type='System.Object'">object</xsl:when>
  57.             <xsl:when test="$old-type='Object'">object</xsl:when>
  58.             <xsl:otherwise><xsl:value-of select="$old-type"/></xsl:otherwise>
  59.         </xsl:choose>
  60.     </xsl:variable>
  61.     
  62.     <xsl:choose>
  63.         <xsl:when test="contains($runtime-type, '[]')">
  64.             <xsl:value-of select="concat($new-type, '[]')"/>
  65.         </xsl:when>
  66.         <xsl:otherwise>
  67.             <xsl:value-of select="$new-type"/>
  68.         </xsl:otherwise>
  69.     </xsl:choose>
  70.     
  71. </xsl:template>
  72.  
  73. <xsl:template name="type-access">
  74.     <xsl:param name="access"/>
  75.     <xsl:choose>
  76.         <xsl:when test="$access='Public'">public</xsl:when>
  77.         <xsl:when test="$access='NotPublic'"></xsl:when>
  78.         <xsl:when test="$access='NestedPublic'">public</xsl:when>
  79.         <xsl:when test="$access='NestedFamily'">protected</xsl:when>
  80.         <xsl:when test="$access='NestedFamilyOrAssembly'">protected internal</xsl:when>
  81.         <xsl:when test="$access='NestedAssembly'">internal</xsl:when>
  82.         <xsl:when test="$access='NestedPrivate'">private</xsl:when>        
  83.         <xsl:otherwise>/* unknown */</xsl:otherwise>
  84.     </xsl:choose>
  85. </xsl:template>
  86.  
  87. <xsl:template name="method-access">
  88.     <xsl:param name="access"/>
  89.     <xsl:choose>
  90.         <xsl:when test="$access='Public'">public</xsl:when>
  91.         <xsl:when test="$access='Family'">protected</xsl:when>
  92.         <xsl:when test="$access='FamilyOrAssembly'">protected internal</xsl:when>
  93.         <xsl:when test="$access='Assembly'">internal</xsl:when>
  94.         <xsl:when test="$access='Private'">private</xsl:when>
  95.         <xsl:otherwise>/* unknown */</xsl:otherwise>
  96.     </xsl:choose>
  97. </xsl:template>
  98.  
  99. <xsl:template name="contract">
  100.     <xsl:param name="contract"/>
  101.     <xsl:choose>
  102.         <xsl:when test="$contract='Static'">static</xsl:when>
  103.         <xsl:when test="$contract='Abstract'">abstract</xsl:when>
  104.         <xsl:when test="$contract='Final'">final</xsl:when>
  105.         <xsl:when test="$contract='Virtual'">virtual</xsl:when>
  106.         <xsl:when test="$contract='Override'">override</xsl:when>
  107.         <xsl:when test="$contract='Normal'"></xsl:when>
  108.         <xsl:otherwise>/* unknown */</xsl:otherwise>
  109.     </xsl:choose>
  110. </xsl:template>
  111.  
  112. <xsl:template name="parameter-topic">
  113.     <xsl:for-each select="parameter">
  114.         <xsl:variable name="name" select="@name"/>
  115.         <p class="i1"><i><xsl:value-of select="@name"/></i></p>
  116.         <p class="i2"><xsl:apply-templates select="parent::node()/param[@name=$name]/node()" mode="slashdoc"/></p>
  117.     </xsl:for-each>
  118. </xsl:template>
  119.  
  120. <xsl:template name="type-mixed">
  121.     <xsl:choose>
  122.         <xsl:when test="local-name()='constructor' or local-name()='property' or local-name()='method' or local-name()='event'">
  123.             <xsl:choose>
  124.                 <xsl:when test="local-name(..)='interface'">Interface</xsl:when>
  125.                 <xsl:otherwise>Class</xsl:otherwise>
  126.             </xsl:choose>
  127.         </xsl:when>
  128.         <xsl:otherwise>
  129.             <xsl:choose>
  130.                 <xsl:when test="local-name()='interface'">Interface</xsl:when>
  131.                 <xsl:otherwise>Class</xsl:otherwise>
  132.             </xsl:choose>
  133.         </xsl:otherwise>
  134.     </xsl:choose>
  135. </xsl:template>
  136.  
  137. <xsl:template name="type-element">
  138.     <xsl:choose>
  139.         <xsl:when test="local-name()='constructor' or local-name()='field' or local-name()='property' or local-name()='method' or local-name()='event'"><xsl:value-of select="local-name(..)"/></xsl:when>
  140.         <xsl:otherwise><xsl:value-of select="local-name()"/></xsl:otherwise>
  141.     </xsl:choose>
  142. </xsl:template>
  143.  
  144. <xsl:template name="type-name">
  145.     <xsl:choose>
  146.         <xsl:when test="local-name()='constructor' or local-name()='field' or local-name()='property' or local-name()='method' or local-name()='event'"><xsl:value-of select="../@name"/></xsl:when>
  147.         <xsl:otherwise><xsl:value-of select="@name"/></xsl:otherwise>
  148.     </xsl:choose>
  149. </xsl:template>
  150.  
  151. <xsl:template name="type-id">
  152.     <xsl:choose>
  153.         <xsl:when test="local-name()='constructor' or local-name()='field' or local-name()='property' or local-name()='method' or local-name()='event'"><xsl:value-of select="../@id"/></xsl:when>
  154.         <xsl:otherwise><xsl:value-of select="@id"/></xsl:otherwise>
  155.     </xsl:choose>
  156. </xsl:template>
  157.  
  158. <xsl:template name="namespace-name">
  159.     <xsl:choose>
  160.         <xsl:when test="local-name()='constructor' or local-name()='field' or local-name()='property' or local-name()='method' or local-name()='event'"><xsl:value-of select="../../@name"/></xsl:when>
  161.         <xsl:otherwise><xsl:value-of select="../@name"/></xsl:otherwise>
  162.     </xsl:choose>
  163. </xsl:template>
  164.  
  165. <xsl:template name="seealso-section">
  166.     <xsl:param name="page"/>
  167.  
  168.     <xsl:variable name="typeMixed"><xsl:call-template name="type-mixed"/></xsl:variable>
  169.     <xsl:variable name="typeElement"><xsl:call-template name="type-element"/></xsl:variable>
  170.     <xsl:variable name="typeName"><xsl:call-template name="type-name"/></xsl:variable>
  171.     <xsl:variable name="typeID"><xsl:call-template name="type-id"/></xsl:variable>
  172.     <xsl:variable name="namespaceName"><xsl:call-template name="namespace-name"/></xsl:variable>
  173.  
  174.     <h3>See Also</h3>
  175.     <p class="i1">
  176.         <xsl:if test="$page!='type' and $page!='enumeration' and $page!='delegate'">
  177.             <xsl:variable name="type-filename">
  178.                 <xsl:call-template name="get-filename-for-type">
  179.                     <xsl:with-param name="id" select="$typeID"/>
  180.                 </xsl:call-template>
  181.             </xsl:variable>
  182.             <a href="{$type-filename}"><xsl:value-of select="concat($typeName, ' ', $typeMixed)"/></a>
  183.             <xsl:text> | </xsl:text>
  184.         </xsl:if>
  185.         <xsl:if test="$page!='member' and $page!='members' and $page!='enumeration' and $page!='delegate' and $page!='methods' and $page!='properties' and $page!='fields' and $page!='events'">
  186.             <a>
  187.                 <xsl:attribute name="href">
  188.                     <xsl:call-template name="get-filename-for-type-members">
  189.                         <xsl:with-param name="id" select="$typeID"/>
  190.                     </xsl:call-template>
  191.                 </xsl:attribute>
  192.                 <xsl:value-of select="$typeName"/> 
  193.                 <xsl:text> Members</xsl:text>
  194.             </a>
  195.             <xsl:text> | </xsl:text>
  196.         </xsl:if>
  197.         <a>
  198.             <xsl:attribute name="href">
  199.                 <xsl:call-template name="get-filename-for-namespace">
  200.                     <xsl:with-param name="name" select="$namespaceName"/>
  201.                 </xsl:call-template>
  202.             </xsl:attribute>
  203.             <xsl:value-of select="$namespaceName"/>
  204.             <xsl:text> Namespace</xsl:text>
  205.         </a>
  206.         <xsl:if test="$page='member' or $page='property'">
  207.             <xsl:variable name="memberName" select="@name"/>
  208.             <xsl:if test="count(parent::node()/*[@name=$memberName]) > 1">
  209.                 <xsl:text> | </xsl:text>
  210.                 <xsl:choose>
  211.                     <xsl:when test="local-name()!='constructor'">
  212.                         <a>
  213.                             <xsl:attribute name="href">
  214.                                 <xsl:call-template name="get-filename-for-current-method-overloads"/>
  215.                             </xsl:attribute>
  216.                             <xsl:value-of select="concat($typeName, '.', @name)"/>
  217.                             <xsl:text> Overload List</xsl:text>
  218.                         </a>
  219.                     </xsl:when>
  220.                     <xsl:otherwise>
  221.                         <a>
  222.                             <xsl:attribute name="href">
  223.                                 <xsl:call-template name="get-filename-for-current-constructor-overloads"/>
  224.                             </xsl:attribute>
  225.                             <xsl:value-of select="$typeName"/> 
  226.                             <xsl:text> Constructor Overload List</xsl:text>
  227.                         </a>
  228.                     </xsl:otherwise>
  229.                 </xsl:choose>
  230.             </xsl:if>
  231.         </xsl:if>
  232.         <xsl:if test="seealso">
  233.             <xsl:for-each select="seealso">
  234.                 <xsl:variable name="cref" select="@cref"/>
  235.                 <xsl:text> | </xsl:text>
  236.                 <xsl:choose>
  237.                     <xsl:when test="//*[@id=$cref]">
  238.                         <a href="{concat(local-name(//*[@id=$cref]), translate($cref, ':#', '!$'))}.html">
  239.                             <xsl:value-of select="//*[@id=$cref]/@name"/>
  240.                         </a>
  241.                     </xsl:when>
  242.                     <xsl:otherwise><xsl:value-of select="substring(@cref, 3)"/></xsl:otherwise>
  243.                 </xsl:choose>
  244.             </xsl:for-each>
  245.         </xsl:if>
  246.     </p>
  247. </xsl:template>
  248.  
  249. <xsl:template match="see" mode="slashdoc">
  250.     <xsl:variable name="cref" select="@cref"/>
  251.     <xsl:choose>
  252.         <xsl:when test="@langword"><b><xsl:value-of select="@langword"/></b></xsl:when>
  253.         <xsl:when test="//*[@id=$cref]"><a href="{concat(local-name(//*[@id=$cref]), translate($cref, ':#', '!$'))}.html"><xsl:value-of select="//*[@id=$cref]/@name"/></a></xsl:when>
  254.         <xsl:otherwise><xsl:value-of select="substring(@cref, 3)"/></xsl:otherwise>
  255.     </xsl:choose>    
  256. </xsl:template>
  257.  
  258. <xsl:template name="summary-section">
  259.     <p class="i1"><xsl:apply-templates select="summary/node()" mode="slashdoc"/></p>
  260. </xsl:template>
  261.  
  262. <xsl:template name="parameter-section">
  263.     <xsl:if test="parameter">
  264.         <h3>Parameters</h3>
  265.         <xsl:call-template name="parameter-topic"/>
  266.     </xsl:if>
  267. </xsl:template>
  268.  
  269.  
  270. <xsl:template name="returnvalue-section">
  271.     <xsl:if test="returns">
  272.         <h3>Return Value</h3>
  273.         <p class="i1"><xsl:apply-templates select="returns/node()" mode="slashdoc"/></p>
  274.     </xsl:if>
  275. </xsl:template>
  276.  
  277. <xsl:template name="remarks-section">
  278.     <xsl:if test="remarks">
  279.         <h3>Remarks</h3>
  280.         <p class="i1"><xsl:apply-templates select="remarks/node()" mode="slashdoc"/></p>
  281.     </xsl:if>
  282. </xsl:template>
  283.  
  284. <xsl:template name="value-section">
  285.     <xsl:if test="value">
  286.         <h3>Property Value</h3>
  287.         <p class="i1"><xsl:apply-templates select="value/node()" mode="slashdoc"/></p>
  288.     </xsl:if>
  289. </xsl:template>
  290.  
  291. <xsl:template name="exceptions-section">
  292.     <xsl:if test="exception">
  293.         <h3>Exceptions</h3>
  294.         <table cellspacing="0">
  295.             <tr valign="top"><th width="50%">Exception Type</th><th width="50%">Condition</th></tr>
  296.             <xsl:for-each select="exception">
  297.                 <xsl:sort select="@name"/>
  298.                 <xsl:variable name="cref" select="@cref"/>
  299.                 <tr valign="top">
  300.                     <td width="50%">
  301.                         <xsl:variable name="type-filename">
  302.                             <xsl:call-template name="get-filename-for-type">
  303.                                 <xsl:with-param name="id" select="$cref"/>
  304.                             </xsl:call-template>
  305.                         </xsl:variable>
  306.                         <a href="{$type-filename}"><xsl:value-of select="//class[@id=$cref]/@name"/></a>
  307.                     </td>
  308.                     <td width="50%"><xsl:apply-templates select="./node()" mode="slashdoc"/></td>
  309.                 </tr>
  310.             </xsl:for-each>
  311.         </table>
  312.     </xsl:if>
  313. </xsl:template>
  314.  
  315. <xsl:template name="example-section">
  316.     <xsl:if test="example">
  317.         <h3>Example</h3>
  318.         <p class="i1"><xsl:apply-templates select="example/node()" mode="slashdoc"/></p>
  319.     </xsl:if>
  320. </xsl:template>
  321.  
  322. <xsl:template name="members-section">
  323.     <xsl:if test="field">
  324.         <h3>Members</h3>
  325.         <table cellspacing="0">
  326.             <tr valign="top"><th width="50%">Member Name</th><th width="50%">Description</th></tr>
  327.             <xsl:for-each select="field">
  328.                 <tr valign="top">
  329.                     <td width="50%"><b><xsl:value-of select="@name"/></b></td>
  330.                     <td width="50%"><xsl:apply-templates select="summary/node()" mode="slashdoc"/></td>
  331.                 </tr>
  332.             </xsl:for-each>
  333.         </table>
  334.     </xsl:if>
  335. </xsl:template>
  336.  
  337. <xsl:template match="node()|@*" mode="slashdoc">
  338.     <xsl:copy>
  339.         <xsl:apply-templates select="node()|@*" mode="slashdoc"/>
  340.     </xsl:copy>
  341. </xsl:template>
  342.  
  343. <xsl:template match="code" mode="slashdoc">
  344.     <pre class="code">
  345.         <xsl:apply-templates/>
  346.     </pre>
  347. </xsl:template>
  348.  
  349. <xsl:template match="note" mode="slashdoc">
  350.     <xsl:choose>
  351.         <xsl:when test="@type='note'"><B>Note: </B><xsl:apply-templates select="./node()" mode="slashdoc"/></xsl:when>
  352.         <xsl:when test="@type='inheritinfo'"><B>Notes to Inheritors: </B><xsl:apply-templates select="./node()" mode="slashdoc"/></xsl:when>
  353.         <xsl:when test="@type='inotes'"><B>Notes to Implementers: </B><xsl:apply-templates select="./node()" mode="slashdoc"/></xsl:when>        
  354.         <xsl:otherwise><xsl:apply-templates select="./node()"/></xsl:otherwise>        
  355.     </xsl:choose>    
  356. </xsl:template>
  357.  
  358. <xsl:template match="list" mode="slashdoc">
  359.     <xsl:choose>
  360.         <xsl:when test="@type='bullet'">
  361.             <ul type="disc">
  362.                 <xsl:apply-templates select="item" mode="slashdoc"/>
  363.             </ul>
  364.         </xsl:when>
  365.         <xsl:when test="@type='number'">
  366.             <ol>
  367.                 <xsl:apply-templates select="item" mode="slashdoc"/>
  368.             </ol>
  369.         </xsl:when>
  370.         <xsl:otherwise><!-- table not implemented yet. -->
  371.         </xsl:otherwise>
  372.     </xsl:choose>
  373. </xsl:template>
  374.  
  375. <xsl:template match="item" mode="slashdoc">
  376.     <li>
  377.         <xsl:apply-templates select="./node()" mode="slashdoc"/>
  378.     </li>
  379. </xsl:template>
  380.  
  381. <xsl:template match="term" mode="slashdoc">
  382.     <b><xsl:apply-templates select="./node()" mode="slashdoc"/> - </b>
  383. </xsl:template>
  384.  
  385. <xsl:template match="description" mode="slashdoc">
  386.     <xsl:apply-templates select="./node()" mode="slashdoc"/>
  387. </xsl:template>
  388.  
  389. <xsl:template match="para" mode="slashdoc">
  390.     <p class="i1">
  391.         <xsl:apply-templates select="./node()" mode="slashdoc"/>
  392.     </p>
  393. </xsl:template>
  394.  
  395. <xsl:template name="value">
  396.     <xsl:param name="type"/>
  397.     <xsl:variable name="namespace"><xsl:value-of select="concat(../../@name, '.')"/></xsl:variable>
  398.     <xsl:choose>
  399.         <xsl:when test="contains($type, $namespace)"><xsl:value-of select="substring-after($type, $namespace)"/></xsl:when>
  400.         <xsl:otherwise>
  401.             <xsl:call-template name="csharp-type">
  402.                 <xsl:with-param name="runtime-type" select="$type"/>
  403.             </xsl:call-template>
  404.         </xsl:otherwise>
  405.     </xsl:choose>
  406. </xsl:template>
  407.  
  408. </xsl:stylesheet>
  409.