diff schemas/doxygen/csharp/default.xsl @ 7:fa7a99c2d079

dox library templates and schemas
author sergey
date Wed, 14 May 2014 01:22:21 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/schemas/doxygen/csharp/default.xsl	Wed May 14 01:22:21 2014 +0400
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+	<xsl:import href="base.xsl" />
+	<xsl:param name="compounds" />
+	<xsl:param name="members" />
+	<xsl:variable name="labels" select="document('labels.xml')"/>
+	
+	<xsl:key name="param-key" use="concat(generate-id(parent::node()),declname/text())" match="memberdef/param[declname]"/>
+
+	<xsl:output method="html" encoding="utf-8" indent="yes"
+		omit-xml-declaration="yes" />
+
+	<!-- The main template -->
+	<xsl:template name="compounddefType">
+		<h1>
+			<xsl:apply-templates select="title|compoundname"
+				mode="compounddefType" />
+		</h1>
+		<div class="briefdescription">
+			<xsl:apply-templates select="briefdescription"
+				mode="compounddefType" />
+		</div>
+		<div class="basecompoundref">
+			<pre>
+				<xsl:apply-templates select="basecompoundref"
+					mode="compounddefType" />
+			</pre>
+		</div>
+		<div class="detaileddescription">
+			<xsl:apply-templates select="detaileddescription"
+				mode="compounddefType" />
+		</div>
+
+		<div class="innerCompounds">
+			<xsl:apply-templates select="innerclass | innernamespace"
+				mode="compounddefType" />
+		</div>
+
+		<div class="members">
+			<xsl:apply-templates select="sectiondef" mode="compounddefType" />
+		</div>
+
+		<xsl:if test="derivedcompoundref">
+			<div class="derivedcompoundref">
+				<h2>Derived</h2>
+				<xsl:apply-templates select="derivedcompoundref"
+					mode="compounddefType" />
+			</div>
+		</xsl:if>
+	</xsl:template>
+
+	<xsl:template match="compoundname" mode="compounddefType">
+		<xsl:call-template name="full-type-name">
+			<xsl:with-param name="typename" select="text()" />
+		</xsl:call-template>
+	</xsl:template>
+
+	<!-- handle references -->
+	<xsl:template name="compoundRefType">
+		<xsl:choose>
+			<xsl:when test="@refid">
+				<xsl:call-template name="link">
+					<xsl:with-param name="class" select="'doxCompoundRef'"/>
+					<xsl:with-param name="refid" select="@refid" />
+	   				<xsl:with-param name="kind" select="'compound'" />
+	   				<xsl:with-param name="external" />
+	   				<xsl:with-param name="text" select="text()" />
+				</xsl:call-template>
+			</xsl:when>
+			<xsl:otherwise>
+				<span class="doxCompoundRef">
+					<xsl:value-of select="text()" />
+				</span>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<xsl:template name="refTextType">
+		<xsl:element name="a">
+			<xsl:attribute name="href">
+    			<xsl:call-template name="ref">
+    				<xsl:with-param name="refid" select="@refid" />
+    				<xsl:with-param name="kind" select="@kindref" />
+    				<xsl:with-param name="external" select="@external" />
+    			</xsl:call-template>
+    		</xsl:attribute>
+			<xsl:value-of select="text()" />
+		</xsl:element>
+	</xsl:template>
+
+	<xsl:template match="innerclass" mode="compounddefType">
+		<xsl:call-template name="link">
+			<xsl:with-param name="refid" select="@refid" />
+			<xsl:with-param name="kind" select="'compound'" />
+			<xsl:with-param name="external" />
+			<xsl:with-param name="text" >
+				<xsl:call-template name="short-type-name">
+					<xsl:with-param name="typename" select="text()" />
+				</xsl:call-template> 
+			</xsl:with-param>
+		</xsl:call-template>
+	</xsl:template>
+
+	<xsl:template match="innernamespace" mode="compounddefType">
+		<xsl:element name="a">
+			<xsl:attribute name="href">
+            	<xsl:call-template name="ref">
+    				<xsl:with-param name="refid" select="@refid" />
+    				<xsl:with-param name="kind" select="'compound'" />
+    				<xsl:with-param name="external" />
+    			</xsl:call-template>
+            </xsl:attribute>
+			<xsl:call-template name="short-type-name">
+				<xsl:with-param name="typename" select="text()" />
+			</xsl:call-template>
+		</xsl:element>
+	</xsl:template>
+
+	<xsl:template name="docRefTextType">
+		<xsl:element name="a">
+			<xsl:attribute name="href">
+    			<xsl:call-template name="ref">
+    				<xsl:with-param name="refid" select="@refid" />
+    				<xsl:with-param name="kind" select="@kindref" />
+    				<xsl:with-param name="external" select="@external" />
+    			</xsl:call-template>
+    		</xsl:attribute>
+			<xsl:apply-templates mode="docRefTextType" />
+		</xsl:element>
+	</xsl:template>
+
+	<!-- paragraph -->
+	<xsl:template name="docParaType">
+		<p class="para">
+			<xsl:apply-templates mode="docParaType" />
+		</p>
+	</xsl:template>
+
+	<!-- inline markup -->
+	<xsl:template name="docMarkupType">
+		<xsl:choose>
+			<xsl:when test="name() = 'computeroutput'">
+				<span class="docTextPre">
+					<xsl:apply-templates mode="docMarkupType" />
+				</span>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:apply-templates mode="docMarkupType" />
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<!-- paramlist -->
+	<xsl:template name="docParamListType">
+		<div class="parameterlist">
+			<h4>
+				<xsl:call-template name="translate-paramlist">
+					<xsl:with-param name="name" select="@kind"/>
+				</xsl:call-template>
+			</h4>
+			<xsl:choose>
+				<xsl:when test="@kind = 'param'">
+					<xsl:call-template name="docParamListType-param"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<table class="pretty-table">
+						<tr>
+							<th>
+								Parameter
+							</th>
+							<th>
+								Description
+							</th>
+						</tr>
+						<xsl:apply-templates mode="docParamListType" />
+					</table>
+				</xsl:otherwise>
+			</xsl:choose>
+		</div>
+	</xsl:template>
+
+	<xsl:template match="parameteritem" mode="docParamListType">
+		<tr>
+			<td>
+				<xsl:apply-templates select="parameternamelist" />
+			</td>
+			<td>
+				<xsl:apply-templates select="parameterdescription" />
+			</td>
+		</tr>
+	</xsl:template>
+	
+	<xsl:template name="docParamListType-param">
+		<table class="pretty-table">
+			<tr>
+				<th>
+					Type
+				</th>
+				<th>
+					Parameter
+				</th>
+				<th>
+					Description
+				</th>
+			</tr>
+			<xsl:apply-templates mode="docParamListType-param" />
+		</table>
+	</xsl:template>
+	
+	<xsl:template match="parameteritem" mode="docParamListType-param">
+		<tr>
+			<td>
+				<xsl:apply-templates select="key('param-key', concat(generate-id(ancestor::memberdef),parameternamelist/parametername/text()))/type" mode="paramType" />
+			</td>
+			<td>
+				<xsl:apply-templates select="parameternamelist" mode="docParamListItem"/>
+			</td>
+			<td>
+				<xsl:apply-templates select="parameterdescription" mode="docParamListItem"/>
+			</td>
+		</tr>
+	</xsl:template>
+
+	<!-- section -->
+	<xsl:template name="sectiondefType">
+		<div class="sectiondef">
+			<h3>
+				<xsl:call-template name="section-label">
+					<xsl:with-param name="name" select="@kind"/>
+				</xsl:call-template>
+			</h3>
+			<div>
+				<xsl:apply-templates mode="sectiondefType" />
+			</div>
+		</div>
+	</xsl:template>
+	
+	<xsl:template name="docSimpleSectType">
+		<div class="simplesection">
+			<h3>
+				<xsl:call-template name="translate-simplesection">
+					<xsl:with-param name="name" select="@kind"/>
+				</xsl:call-template>
+			</h3>
+			<div>
+				<xsl:apply-templates mode="docSimpleSectType" />
+			</div>
+		</div>
+	</xsl:template>
+	
+	<xsl:template match="simplesectsep" mode="docSimpleSectType"><hr class="simplesectsep" /></xsl:template>
+	
+	<!-- SOURCE CODE FORMATTING -->
+	
+	<xsl:template name="listingType">
+		<xsl:apply-templates mode="listingType"/>
+	</xsl:template>
+	<xsl:template name="codelineType">
+		<div>
+			<xsl:apply-templates mode="codelineType"/>
+		</div>
+	</xsl:template>
+	<xsl:template match="sp" mode="highlightType">
+		<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
+	</xsl:template>
+	<xsl:template match="highlight" mode="codelineType">
+		<span class="{@class}"><xsl:call-template name="highlightType"/></span>
+	</xsl:template>
+
+	<!-- TOOLS -->
+	<xsl:template name="link">
+		<xsl:param name="refid" />
+		<xsl:param name="kind" />
+		<xsl:param name="external" select="''" />
+		<xsl:param name="text" select="'[ link here ]'" />
+		<xsl:param name="class" select="''"/>
+		<xsl:element name="a">
+			<xsl:attribute name="href">
+				<xsl:call-template name="ref">
+					<xsl:with-param name="refid" select="$refid" />
+					<xsl:with-param name="kind" select="$kind" />
+					<xsl:with-param name="external" select="$external" />
+				</xsl:call-template>
+			</xsl:attribute>
+			<xsl:if test="$class">
+				<xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+			</xsl:if>
+			<xsl:choose>
+				<xsl:when test="*">
+					<xsl:copy-of select="$text"/>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:value-of select="$text"/>
+				</xsl:otherwise>
+			</xsl:choose>
+		</xsl:element>
+		
+	</xsl:template>
+	<xsl:template name="ref">
+		<xsl:param name="refid" />
+		<xsl:param name="kind" />
+		<xsl:param name="external" select="''" />
+		<xsl:choose>
+			<xsl:when test="$kind = 'member'">
+				<xsl:value-of select="concat($members,'/',$refid)" />
+			</xsl:when>
+			<xsl:when test="$kind = 'compound'">
+				<xsl:value-of select="concat($compounds,'/',$refid)" />
+			</xsl:when>
+			<xsl:otherwise></xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<xsl:template name="string-replace-all">
+		<xsl:param name="text" />
+		<xsl:param name="replace" />
+		<xsl:param name="with" />
+		<xsl:choose>
+			<xsl:when test="contains($text, $replace)">
+				<xsl:value-of select="substring-before($text,$replace)" />
+				<xsl:value-of select="$with" />
+				<xsl:call-template name="string-replace-all">
+					<xsl:with-param name="text"
+						select="substring-after($text,$replace)" />
+					<xsl:with-param name="replace" select="$replace" />
+					<xsl:with-param name="with" select="$with" />
+				</xsl:call-template>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:value-of select="$text" />
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+	<xsl:template name="full-type-name">
+		<xsl:param name="typename" />
+		<xsl:call-template name="string-replace-all">
+			<xsl:with-param name="text" select="$typename" />
+			<xsl:with-param name="replace" select="'::'" />
+			<xsl:with-param name="with" select="'.'" />
+		</xsl:call-template>
+	</xsl:template>
+
+	<xsl:template name="short-type-name">
+		<xsl:param name="typename" />
+		<xsl:choose>
+			<xsl:when test="contains($typename,'::')">
+				<xsl:call-template name="short-type-name">
+					<xsl:with-param name="typename"
+						select="substring-after($typename,'::')" />
+				</xsl:call-template>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:value-of select="$typename" />
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+	
+	<xsl:template name="section-label">
+		<xsl:param name="name"/>
+		<xsl:variable name="label" select="$labels/labels/sections/label[@name = $name]"/>
+		<xsl:choose>
+			<xsl:when test="$label"><xsl:value-of select="$label"/></xsl:when>
+			<xsl:otherwise><xsl:value-of select="$name" /></xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+	
+	<xsl:template name="translate-section">
+		<xsl:param name="name"/>
+		<xsl:variable name="label" select="$labels/labels/sections/label[@name = $name]"/>
+		<xsl:choose>
+			<xsl:when test="$label"><xsl:value-of select="$label"/></xsl:when>
+			<xsl:otherwise><xsl:value-of select="$name" /></xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+	
+	<xsl:template name="translate-simplesection">
+		<xsl:param name="name"/>
+		<xsl:variable name="label" select="$labels/labels/simplesections/label[@name = $name]"/>
+		<xsl:choose>
+			<xsl:when test="$label"><xsl:value-of select="$label"/></xsl:when>
+			<xsl:otherwise><xsl:value-of select="$name" /></xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+	
+	<xsl:template name="translate-paramlist">
+		<xsl:param name="name"/>
+		<xsl:variable name="label" select="$labels/labels/paramlists/label[@name = $name]"/>
+		<xsl:choose>
+			<xsl:when test="$label"><xsl:value-of select="$label"/></xsl:when>
+			<xsl:otherwise><xsl:value-of select="$name" /></xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file