[runtime] Disable some tests in full-aot mode which cannot be AOTed because of type...
[mono-project.git] / mcs / tools / mdoc / Resources / stylesheet.xsl
blob35d5a653150f7472a396e342f8c1bbdf331e46e7
1 <?xml version="1.0"?>
3 <!--
4 Based on Mono's /monodoc/browser/mono-ecma.xsl file.
5 -->
7 <xsl:stylesheet
8 version="1.0"
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" />
33 </xsl:call-template>
34 </xsl:variable>
36 <Page>
38 <Title>
39 <xsl:value-of select="translate (@FullName, '+', '.')" />
40 </Title>
42 <CollectionTitle>
43 <xsl:variable name="namespace" select="substring-before (@FullName, @Name)" />
44 <a>
45 <xsl:attribute name="href">
46 <xsl:if test="string-length($namespace)">
47 <xsl:value-of select="$basepath" />
48 </xsl:if>
49 <xsl:text>index.</xsl:text>
50 <xsl:value-of select="$ext" />
51 </xsl:attribute>
52 <xsl:value-of select="AssemblyInfo/AssemblyName" />
53 </a>
54 <xsl:text> : </xsl:text>
55 <a href="index.{$ext}"><xsl:value-of select="$TypeNamespace"/> Namespace</a>
56 </CollectionTitle>
58 <PageTitle>
59 <xsl:attribute name="id">
60 <xsl:value-of select="$cref" />
61 </xsl:attribute>
62 <xsl:value-of select="translate (@Name, '+', '.')"/>
63 <xsl:text xml:space="preserve"> </xsl:text>
64 <xsl:if test="count(Docs/typeparam) &gt; 0">Generic</xsl:if>
65 <xsl:text xml:space="preserve"> </xsl:text>
66 <xsl:call-template name="GetTypeDescription" />
67 </PageTitle>
69 <!--
70 <SideBar>
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"/>
75 <div>
76 <a href="../{parent::Namespace/@Name}/{@Name}.{$ext}">
77 <xsl:value-of select="@Name"/>
78 </a>
79 </div>
80 </xsl:for-each>
81 </SideBar>
82 -->
84 <!-- TYPE OVERVIEW -->
86 <Summary id="Summary">
87 <xsl:attribute name="id">
88 <xsl:value-of select="concat ($cref, ':Summary')" />
89 </xsl:attribute>
90 <!-- summary -->
91 <xsl:apply-templates select="Docs/summary" mode="notoppara"/>
92 </Summary>
94 <Signature>
95 <xsl:call-template name="CreateTypeSignature" />
96 </Signature>
98 <Remarks>
99 <xsl:attribute name="id">
100 <xsl:value-of select="concat ($cref, ':Docs')" />
101 </xsl:attribute>
102 <xsl:call-template name="DisplayDocsInformation">
103 <xsl:with-param name="linkid" select="concat ($cref, ':Docs')" />
104 </xsl:call-template>
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>.
117 </p>
118 </xsl:if>
120 <!-- list each type of member (public, then protected) -->
122 <xsl:call-template name="ListAllMembers">
123 <xsl:with-param name="html-anchor" select="true()" />
124 </xsl:call-template>
125 </xsl:with-param>
126 </xsl:call-template>
127 </xsl:if>
129 </Remarks>
131 <Members>
132 <!-- MEMBER DETAILS -->
133 <xsl:attribute name="id">
134 <xsl:value-of select="concat ($cref, ':Members')" />
135 </xsl:attribute>
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="." />
150 </xsl:call-template>
151 </xsl:variable>
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">
158 <xsl:choose>
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="." />
163 </xsl:call-template>
164 </xsl:when>
165 <xsl:when test="@MemberName='op_Implicit' or @MemberName='op_Explicit'">
166 <xsl:text>Conversion</xsl:text>
167 </xsl:when>
168 <xsl:otherwise>
169 <xsl:value-of select="@MemberName"/>
170 </xsl:otherwise>
171 </xsl:choose>
172 <xsl:text xml:space="preserve"> </xsl:text>
173 <xsl:if test="count(Docs/typeparam) &gt; 0">
174 <xsl:text>Generic </xsl:text>
175 </xsl:if>
176 <xsl:value-of select="MemberType" />
177 </xsl:with-param>
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" />
183 </xsl:call-template>
184 <xsl:call-template name="DisplayDocsInformation">
185 <xsl:with-param name="linkid" select="$linkid" />
186 </xsl:call-template>
187 <hr size="1"/>
188 </xsl:with-param>
189 </xsl:call-template>
190 </xsl:for-each>
191 </xsl:with-param>
192 </xsl:call-template>
193 </xsl:if>
195 </Members>
197 <Copyright>
198 </Copyright>
200 </Page>
201 </xsl:template>
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" />
211 </xsl:call-template>
212 </xsl:variable>
213 <xsl:variable name="typeentry" select="msxsl:node-set($typeentry-rtf)" />
215 <xsl:choose>
216 <xsl:when test="$xmltarget and count($typeentry/Type)">
217 <xsl:value-of select="concat($typeentry/Type/@Namespace, '/', $typeentry/Type/@Name, '.xml')" />
218 </xsl:when>
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:')" />
224 </xsl:call-template>
225 </xsl:variable>
226 <xsl:if test="string($namespace) != ''">
227 <xsl:if test="$TypeNamespace != ''">
228 <xsl:value-of select="$basepath" />
229 </xsl:if>
230 <xsl:value-of select="concat ($namespace, '/index.', $ext)" />
231 </xsl:if>
232 </xsl:when>
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>
238 </xsl:if>
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" />
246 </xsl:call-template>
247 </xsl:if>
248 </xsl:when>
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" />
258 </xsl:when>
259 <!--<xsl:otherwise>javascript:alert("Documentation not found for <xsl:value-of select="$type"/>.")</xsl:otherwise>-->
260 </xsl:choose>
261 </xsl:template>
263 <xsl:template name="FindTypeInIndex">
264 <xsl:param name="type" />
266 <xsl:for-each select="$Index//Type">
267 <xsl:variable name="nsp">
268 <xsl:choose>
269 <xsl:when test="string-length (parent::Namespace/@Name) = 0" />
270 <xsl:otherwise>
271 <xsl:value-of select="parent::Namespace/@Name" />
272 <xsl:text>.</xsl:text>
273 </xsl:otherwise>
274 </xsl:choose>
275 </xsl:variable>
276 <xsl:if test="concat($nsp, translate(@Name, '+', '.')) = $type">
277 <Type Name="{@Name}" Namespace="{parent::Namespace/@Name}" />
278 </xsl:if>
279 </xsl:for-each>
280 </xsl:template>
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" />
288 </xsl:if>
289 </xsl:for-each>
290 </xsl:template>
292 <xsl:template name="GetActualCref">
293 <xsl:param name="cref" />
295 <xsl:variable name="fullname">
296 <xsl:choose>
297 <xsl:when test="starts-with($cref, 'C:') or starts-with($cref, 'T:')">
298 <xsl:choose>
299 <xsl:when test="contains($cref, '(')">
300 <xsl:value-of select="substring (substring-before ($cref, '('), 3)" />
301 </xsl:when>
302 <xsl:otherwise>
303 <xsl:value-of select="substring($cref, 3)" />
304 </xsl:otherwise>
305 </xsl:choose>
306 </xsl:when>
307 <xsl:otherwise>
308 <xsl:call-template name="GetTypeName">
309 <xsl:with-param name="type" select="substring($cref, 3)"/>
310 </xsl:call-template>
311 </xsl:otherwise>
312 </xsl:choose>
313 </xsl:variable>
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" />
320 </xsl:call-template>
321 </xsl:with-param>
322 </xsl:call-template>
323 </xsl:variable>
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)" />
328 </xsl:template>
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>
335 <tr><td>
336 <pre>
337 <xsl:attribute name="class">
338 <xsl:call-template name="GetCodeClass">
339 <xsl:with-param name="lang" select="$language" />
340 </xsl:call-template>
341 </xsl:attribute>
342 <xsl:value-of select="$content" />
343 </pre>
344 </td></tr>
345 </table>
346 </xsl:template>
348 <xsl:template name="CreateEditLink">
349 <!-- ignore -->
350 </xsl:template>
352 <xsl:template name="CreateExpandedToggle">
353 <xsl:text></xsl:text>
354 </xsl:template>
356 <xsl:template name="GetCodeClass">
357 <xsl:param name="lang" />
359 <xsl:choose>
360 <xsl:when test="$lang = 'C#' or $lang = 'csharp'">
361 <xsl:text>code-csharp</xsl:text>
362 </xsl:when>
363 </xsl:choose>
364 </xsl:template>
366 </xsl:stylesheet>