4 Based on Mono's /monodoc/browser/mono-ecma.xsl file.
9 xmlns:
xsl=
"http://www.w3.org/1999/XSL/Transform"
10 xmlns:
msxsl=
"urn:schemas-microsoft-com:xslt"
11 exclude-result-prefixes=
"msxsl"
13 <xsl:include href=
"mdoc-html-utils.xsl" />
14 <xsl:include href=
"mdoc-sections-css.xsl" />
16 <!-- TEMPLATE PARAMETERS -->
18 <xsl:param name=
"ext" select=
"'xml'"/>
19 <xsl:param name=
"basepath" select=
"'./'"/>
21 <xsl:param name=
"Index" />
23 <!-- The namespace that the current type belongs to. -->
24 <xsl:variable name=
"mono-docs">http://www.go-mono.com/docs/monodoc.ashx?link=
</xsl:variable>
26 <!-- THE MAIN RENDERING TEMPLATE -->
28 <xsl:template match=
"Type">
29 <xsl:variable name=
"cref">
30 <xsl:text>T:
</xsl:text>
31 <xsl:call-template name=
"GetEscapedTypeName">
32 <xsl:with-param name=
"typename" select=
"@FullName" />
39 <xsl:value-of select=
"translate (@FullName, '+', '.')" />
43 <xsl:variable name=
"namespace" select=
"substring-before (@FullName, @Name)" />
45 <xsl:attribute name=
"href">
46 <xsl:if test=
"string-length($namespace)">
47 <xsl:value-of select=
"$basepath" />
49 <xsl:text>index.
</xsl:text>
50 <xsl:value-of select=
"$ext" />
52 <xsl:value-of select=
"AssemblyInfo/AssemblyName" />
54 <xsl:text> :
</xsl:text>
55 <a href=
"index.{$ext}"><xsl:value-of select=
"$TypeNamespace"/> Namespace
</a>
59 <xsl:attribute name=
"id">
60 <xsl:value-of select=
"$cref" />
62 <xsl:value-of select=
"translate (@Name, '+', '.')"/>
63 <xsl:text xml:
space=
"preserve"> </xsl:text>
64 <xsl:if test=
"count(Docs/typeparam) > 0">Generic
</xsl:if>
65 <xsl:text xml:
space=
"preserve"> </xsl:text>
66 <xsl:call-template name=
"GetTypeDescription" />
71 <p style="font-weight: bold; border-bottom: thin solid black"><a href="index.{$ext}"><xsl:value-of select="$TypeNamespace"/></a></p>
73 <xsl:for-each select="document('index.xml',.)/Overview/Types/Namespace[@Name=$TypeNamespace]/Type">
74 <xsl:sort select="@Name"/>
76 <a href="../{parent::Namespace/@Name}/{@Name}.{$ext}">
77 <xsl:value-of select="@Name"/>
84 <!-- TYPE OVERVIEW -->
86 <Summary id=
"Summary">
87 <xsl:attribute name=
"id">
88 <xsl:value-of select=
"concat ($cref, ':Summary')" />
91 <xsl:apply-templates select=
"Docs/summary" mode=
"notoppara"/>
95 <xsl:call-template name=
"CreateTypeSignature" />
99 <xsl:attribute name=
"id">
100 <xsl:value-of select=
"concat ($cref, ':Docs')" />
102 <xsl:call-template name=
"DisplayDocsInformation">
103 <xsl:with-param name=
"linkid" select=
"concat ($cref, ':Docs')" />
106 <!-- MEMBER LISTING -->
107 <xsl:if test=
"not(Base/BaseTypeName='System.Delegate' or Base/BaseTypeName='System.MulticastDelegate' or Base/BaseTypeName='System.Enum')">
108 <xsl:call-template name=
"CreateH2Section">
109 <xsl:with-param name=
"name" select=
"'Members'"/>
110 <xsl:with-param name=
"id" select=
"'Members'"/>
111 <xsl:with-param name=
"child-id" select=
"'_Members'"/>
112 <xsl:with-param name=
"content">
113 <xsl:if test=
"Base/BaseTypeName">
115 See Also: Inherited members from
116 <xsl:apply-templates select=
"Base/BaseTypeName" mode=
"typelink"><xsl:with-param name=
"wrt" select=
"$TypeNamespace"/></xsl:apply-templates>.
120 <!-- list each type of member (public, then protected) -->
122 <xsl:call-template name=
"ListAllMembers">
123 <xsl:with-param name=
"html-anchor" select=
"true()" />
132 <!-- MEMBER DETAILS -->
133 <xsl:attribute name=
"id">
134 <xsl:value-of select=
"concat ($cref, ':Members')" />
136 <xsl:if test=
"not(Base/BaseTypeName='System.Delegate' or Base/BaseTypeName='System.MulticastDelegate' or Base/BaseTypeName='System.Enum')">
137 <xsl:variable name=
"Type" select=
"."/>
139 <xsl:call-template name=
"CreateH2Section">
140 <xsl:with-param name=
"name" select=
"'Member Details'"/>
141 <xsl:with-param name=
"id" select=
"'MemberDetails'"/>
142 <xsl:with-param name=
"child-id" select=
"'_MemberDetails'"/>
143 <xsl:with-param name=
"content">
144 <xsl:for-each select=
"Members/Member[MemberType != 'ExtensionMethod']">
146 <xsl:variable name=
"linkid">
147 <xsl:call-template name=
"GetLinkId">
148 <xsl:with-param name=
"type" select=
"../.." />
149 <xsl:with-param name=
"member" select=
"." />
153 <xsl:call-template name=
"CreateH3Section">
154 <xsl:with-param name=
"id" select=
"$linkid" />
155 <xsl:with-param name=
"child-id" select=
"concat($linkid, ':member')" />
156 <xsl:with-param name=
"class" select=
"MemberName" />
157 <xsl:with-param name=
"name">
159 <xsl:when test=
"MemberType='Constructor'">
160 <xsl:call-template name=
"GetConstructorName">
161 <xsl:with-param name=
"type" select=
"../.." />
162 <xsl:with-param name=
"ctor" select=
"." />
165 <xsl:when test=
"@MemberName='op_Implicit' or @MemberName='op_Explicit'">
166 <xsl:text>Conversion
</xsl:text>
169 <xsl:value-of select=
"@MemberName"/>
172 <xsl:text xml:
space=
"preserve"> </xsl:text>
173 <xsl:if test=
"count(Docs/typeparam) > 0">
174 <xsl:text>Generic
</xsl:text>
176 <xsl:value-of select=
"MemberType" />
178 <xsl:with-param name=
"ref" select=
"." />
179 <xsl:with-param name=
"content">
180 <xsl:call-template name=
"CreateMemberOverview" />
181 <xsl:call-template name=
"CreateMemberSignature">
182 <xsl:with-param name=
"linkid" select=
"$linkid" />
184 <xsl:call-template name=
"DisplayDocsInformation">
185 <xsl:with-param name=
"linkid" select=
"$linkid" />
203 <xsl:template name=
"GetLinkTarget">
204 <xsl:param name=
"type" />
205 <xsl:param name=
"cref" />
206 <xsl:param name=
"xmltarget" select=
"false()"/>
207 <!-- Search for type in the index.xml file. -->
208 <xsl:variable name=
"typeentry-rtf">
209 <xsl:call-template name=
"FindTypeInIndex">
210 <xsl:with-param name=
"type" select=
"$type" />
213 <xsl:variable name=
"typeentry" select=
"msxsl:node-set($typeentry-rtf)" />
216 <xsl:when test=
"$xmltarget and count($typeentry/Type)">
217 <xsl:value-of select=
"concat($typeentry/Type/@Namespace, '/', $typeentry/Type/@Name, '.xml')" />
219 <xsl:when test=
"$xmltarget" />
220 <xsl:when test=
"starts-with ($cref, 'N:')">
221 <xsl:variable name=
"namespace">
222 <xsl:call-template name=
"FindNamespaceInIndex">
223 <xsl:with-param name=
"namespace" select=
"substring-after ($cref, 'N:')" />
226 <xsl:if test=
"string($namespace) != ''">
227 <xsl:if test=
"$TypeNamespace != ''">
228 <xsl:value-of select=
"$basepath" />
230 <xsl:value-of select=
"concat ($namespace, '/index.', $ext)" />
233 <xsl:when test=
"count($typeentry/Type)">
234 <xsl:if test=
"string-length ($typeentry/Type/@Namespace)">
235 <xsl:value-of select=
"$basepath" />
236 <xsl:value-of select=
"$typeentry/Type/@Namespace" />
237 <xsl:text>/
</xsl:text>
239 <xsl:value-of select=
"$typeentry/Type/@Name"/>
240 <xsl:text>.
</xsl:text>
241 <xsl:value-of select=
"$ext" />
242 <xsl:if test=
"string-length ($cref) > 0 and substring ($cref, 1, 2) != 'T:'">
243 <xsl:text>#
</xsl:text>
244 <xsl:call-template name=
"GetActualCref">
245 <xsl:with-param name=
"cref" select=
"$cref" />
250 <xsl:when test=
"starts-with($type, 'System.') or
251 starts-with($type, 'Cairo.') or starts-with ($type, 'Commons.Xml.') or
252 starts-with($type, 'Mono.GetOptions.') or starts-with($type,'Mono.Math.') or
253 starts-with($type, 'Mono.Posix.') or starts-with($type, 'Mono.Remoting.') or
254 starts-with($type, 'Mono.Security.') or starts-with($type, 'Mono.Unix.') or
255 starts-with($type, 'Mono.Xml.')">
256 <xsl:value-of select=
"$mono-docs" />
257 <xsl:value-of select=
"$cref" />
259 <!--<xsl:otherwise>javascript:alert("Documentation not found for <xsl:value-of select="$type"/>.")</xsl:otherwise>-->
263 <xsl:template name=
"FindTypeInIndex">
264 <xsl:param name=
"type" />
266 <xsl:for-each select=
"$Index//Type">
267 <xsl:variable name=
"nsp">
269 <xsl:when test=
"string-length (parent::Namespace/@Name) = 0" />
271 <xsl:value-of select=
"parent::Namespace/@Name" />
272 <xsl:text>.
</xsl:text>
276 <xsl:if test=
"concat($nsp, translate(@Name, '+', '.')) = $type">
277 <Type Name=
"{@Name}" Namespace=
"{parent::Namespace/@Name}" />
282 <xsl:template name=
"FindNamespaceInIndex">
283 <xsl:param name=
"namespace" />
285 <xsl:for-each select=
"$Index//Namespace">
286 <xsl:if test=
"@Name = $namespace">
287 <xsl:value-of select=
"@Name" />
292 <xsl:template name=
"GetActualCref">
293 <xsl:param name=
"cref" />
295 <xsl:variable name=
"fullname">
297 <xsl:when test=
"starts-with($cref, 'C:') or starts-with($cref, 'T:')">
299 <xsl:when test=
"contains($cref, '(')">
300 <xsl:value-of select=
"substring (substring-before ($cref, '('), 3)" />
303 <xsl:value-of select=
"substring($cref, 3)" />
308 <xsl:call-template name=
"GetTypeName">
309 <xsl:with-param name=
"type" select=
"substring($cref, 3)"/>
315 <xsl:variable name=
"escaped-type">
316 <xsl:call-template name=
"GetEscapedTypeName">
317 <xsl:with-param name=
"typename">
318 <xsl:call-template name=
"ToBrackets">
319 <xsl:with-param name=
"s" select=
"$fullname" />
325 <xsl:value-of select=
"substring ($cref, 1, 2)" />
326 <xsl:value-of select=
"$escaped-type" />
327 <xsl:value-of select=
"substring-after ($cref, $fullname)" />
330 <xsl:template name=
"CreateCodeBlock">
331 <xsl:param name=
"language" />
332 <xsl:param name=
"content" />
333 <table class=
"CodeExampleTable">
334 <tr><td><b><font size=
"-1"><xsl:value-of select=
"$language"/> Example
</font></b></td></tr>
337 <xsl:attribute name=
"class">
338 <xsl:call-template name=
"GetCodeClass">
339 <xsl:with-param name=
"lang" select=
"$language" />
342 <xsl:value-of select=
"$content" />
348 <xsl:template name=
"CreateEditLink">
352 <xsl:template name=
"CreateExpandedToggle">
353 <xsl:text>⊟
</xsl:text>
356 <xsl:template name=
"GetCodeClass">
357 <xsl:param name=
"lang" />
360 <xsl:when test=
"$lang = 'C#' or $lang = 'csharp'">
361 <xsl:text>code-csharp
</xsl:text>