2003-11-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / tools / corcompare / mono-api.xsl
1 <?xml version="1.0" ?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
4         <xsl:output method="html" indent="no"/>
5         <!--    <xsl:output method="xml"/>-->
6         <xsl:strip-space elements="*"/>
7
8         <xsl:template match="/">
9 <!--
10                 <HTML>
11                         <HEAD>
12                                 <TITLE>
13                                         Mono Class Library Status
14                                 </TITLE>
15                                 <SCRIPT src="cormissing.js"></SCRIPT>
16                                 <LINK rel="stylesheet" type="text/css" href="cormissing.css"></LINK>
17                         </HEAD>
18                         <BODY onLoad="onLoad();">
19                                 <P>
20                                         <H1>Mono Class Library Status</H1>
21                                 </P>
22 -->
23                                 <P>
24                                         <TABLE>
25                                                 <TR>
26                                                         <TD> <INPUT type="checkbox" ID="todo" onClick="selectTodo();" checked="1"/> </TD>
27                                                         <TD> <IMG src="cm/st.gif"/> </TD>
28                                                         <TD> TODO </TD>
29                                                         <TD width="20"/>
30                                                         <TD> <INPUT type="checkbox" ID="missing" onClick="selectMissing();" checked="1"/> </TD>
31                                                         <TD> <IMG src="cm/sm.gif"/> </TD>
32                                                         <TD> Missing </TD>
33                                                 </TR>
34                                                 <TR>
35                                                         <TD> <INPUT type="checkbox" ID="extra" onClick="selectExtra();" checked="1"/> </TD>
36                                                         <TD> <IMG src="cm/sx.gif"/> </TD>
37                                                         <TD> Extra </TD>
38                                                         <TD width="20"/>
39                                                         <TD> <INPUT type="checkbox" ID="errors" onClick="selectErrors();" checked="1"/> </TD>
40                                                         <TD> <IMG src="cm/se.gif"/> </TD>
41                                                         <TD> Errors </TD>
42                                                 </TR>
43                                                 <TR>
44                                                         <TD> </TD>
45                                                         <TD> <IMG src="cm/sc.gif"/> </TD>
46                                                         <TD> Completed </TD>
47                                                 </TR>
48                                         </TABLE>
49                                 </P>
50                                 <DIV ID="ROOT">
51                                         <xsl:apply-templates/>
52                                 </DIV>
53                                 <P>
54                                         Legend :<BR/>
55                                         <TABLE>
56                                                 <TR>
57                                                         <TD> <IMG src="cm/y.gif"/> </TD>
58                                                         <TD> Assembly </TD>
59                                                         <TD width="20"/>
60                                                         <TD> <IMG src="cm/n.gif"/> </TD>
61                                                         <TD> Namespace </TD>
62                                                         <TD width="20"/>
63                                                         <TD> <IMG src="cm/c.gif"/> </TD>
64                                                         <TD> Class </TD>
65                                                         <TD width="20"/>
66                                                         <TD> <IMG src="cm/s.gif"/> </TD>
67                                                         <TD> Struct </TD>
68                                                 <TR>
69                                                 </TR>
70                                                         <TD> <IMG src="cm/i.gif"/> </TD>
71                                                         <TD> Interface </TD>
72                                                         <TD width="20"/>
73                                                         <TD> <IMG src="cm/d.gif"/> </TD>
74                                                         <TD> Delegate </TD>
75                                                         <TD width="20"/>
76                                                         <TD> <IMG src="cm/en.gif"/> </TD>
77                                                         <TD> Enum </TD>
78                                                         <TD width="20"/>
79                                                         <TD> <IMG src="cm/m.gif"/> </TD>
80                                                         <TD> Method </TD>
81                                                 </TR>
82                                                 <TR>
83                                                         <TD> <IMG src="cm/f.gif"/> </TD>
84                                                         <TD> Field </TD>
85                                                         <TD width="20"/>
86                                                         <TD> <IMG src="cm/p.gif"/> </TD>
87                                                         <TD> Property </TD>
88                                                         <TD width="20"/>
89                                                         <TD> <IMG src="cm/e.gif"/> </TD>
90                                                         <TD> Event </TD>
91                                                         <TD width="20"/>
92                                                         <TD> <IMG src="cm/r.gif"/> </TD>
93                                                         <TD> Attribute </TD>
94                                                 </TR>
95                                         </TABLE>
96
97                                 </P>
98 <!--
99                         </BODY>
100                 </HTML>
101 -->
102         </xsl:template>
103
104
105
106         <!-- assembly -->
107         <xsl:template match="/assemblies">
108                 <xsl:apply-templates select="assembly">
109                         <xsl:sort select="@name"/>
110                 </xsl:apply-templates>
111         </xsl:template>
112
113         <xsl:template match="assemblies/assembly">
114                 <DIV>
115                         <xsl:call-template name="ELEMENT">
116                                 <xsl:with-param name="class">y</xsl:with-param>
117                         </xsl:call-template>
118                         <xsl:if test="not(@presence)">
119                                 <xsl:apply-templates/>
120                         </xsl:if>
121                 </DIV>
122         </xsl:template>
123
124
125         <!-- namespace -->
126         <xsl:template match="assembly/namespaces">
127                 <xsl:apply-templates select="namespace">
128                         <xsl:sort select="@name"/>
129                 </xsl:apply-templates>
130         </xsl:template>
131
132         <xsl:template match="namespaces/namespace">
133                 <DIV>
134                         <xsl:call-template name="ELEMENT">
135                                 <xsl:with-param name="class">n</xsl:with-param>
136                         </xsl:call-template>
137                         <xsl:if test="not(@presence)">
138                                 <xsl:apply-templates/>
139                         </xsl:if>
140                 </DIV>
141         </xsl:template>
142
143
144         <xsl:template match="namespace/classes">
145                 <xsl:apply-templates select="class[@type='interface']">
146                         <xsl:sort select="@name"/>
147                 </xsl:apply-templates>
148                 <xsl:apply-templates select="class[@type='class']">
149                         <xsl:sort select="@name"/>
150                 </xsl:apply-templates>
151                 <xsl:apply-templates select="class[@type='struct']">
152                         <xsl:sort select="@name"/>
153                 </xsl:apply-templates>
154                 <xsl:apply-templates select="class[@type='delegate']">
155                         <xsl:sort select="@name"/>
156                 </xsl:apply-templates>
157                 <xsl:apply-templates select="class[@type='enum']">
158                         <xsl:sort select="@name"/>
159                 </xsl:apply-templates>
160         </xsl:template>
161
162
163         <!-- class -->
164         <xsl:template match="classes/class[@type='class']">
165                 <DIV>
166                         <xsl:call-template name="ELEMENT">
167                                 <xsl:with-param name="class">c</xsl:with-param>
168                         </xsl:call-template>
169                         <xsl:if test="(@missing_total or @todo_total or @extra_total or @warning_total or @error) and not(@presence)">
170                                 <xsl:apply-templates select="attributes"/>
171                                 <xsl:apply-templates select="interfaces"/>
172                                 <xsl:apply-templates select="constructors"/>
173                                 <xsl:apply-templates select="./*[local-name() != 'attributes' and local-name() != 'constructors' and local-name() != 'interfaces']"/>
174                         </xsl:if>
175                 </DIV>
176         </xsl:template>
177
178
179         <!-- struct -->
180         <xsl:template match="classes/class[@type='struct'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
181                 <DIV>
182                         <xsl:call-template name="ELEMENT">
183                                 <xsl:with-param name="class">s</xsl:with-param>
184                         </xsl:call-template>
185                         <xsl:if test="not(@presence)">
186                                 <xsl:apply-templates/>
187                         </xsl:if>
188                 </DIV>
189         </xsl:template>
190
191
192
193         <!-- interface types -->
194         <xsl:template match="class[@type='interface']">
195                 <xsl:apply-templates select="class[@type='interface']">
196                         <xsl:sort select="@name"/>
197                 </xsl:apply-templates>
198         </xsl:template>
199
200         <xsl:template match="class[@type='interface'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
201                 <DIV>
202                         <xsl:call-template name="ELEMENT">
203                                 <xsl:with-param name="class">i</xsl:with-param>
204                         </xsl:call-template>
205                         <xsl:if test="not(@presence)">
206                                 <xsl:apply-templates/>
207                         </xsl:if>
208                 </DIV>
209         </xsl:template>
210
211         <!-- interfaces implemented by Types -->
212         <xsl:template match="interface">
213                 <xsl:apply-templates select="interface">
214                         <xsl:sort select="@name"/>
215                 </xsl:apply-templates>
216         </xsl:template>
217
218         <xsl:template match="interface[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
219                 <DIV>
220                         <xsl:call-template name="ELEMENT">
221                                 <xsl:with-param name="class">i</xsl:with-param>
222                         </xsl:call-template>
223                         <xsl:if test="not(@presence)">
224                                 <xsl:apply-templates/>
225                         </xsl:if>
226                 </DIV>
227         </xsl:template>
228
229
230
231         <!-- delegate -->
232         <xsl:template match="classes/class[@type='delegate'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
233                 <DIV>
234                         <xsl:call-template name="ELEMENT">
235                                 <xsl:with-param name="class">d</xsl:with-param>
236                         </xsl:call-template>
237                         <xsl:if test="not(@presence)">
238                                 <xsl:apply-templates/>
239                         </xsl:if>
240                 </DIV>
241         </xsl:template>
242
243
244         <!-- enumeration -->
245         <xsl:template match="classes/class[@type='enum'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
246                 <DIV>
247                         <xsl:call-template name="ELEMENT">
248                                 <xsl:with-param name="class">en</xsl:with-param>
249                         </xsl:call-template>
250                         <xsl:if test="not(@presence)">
251                                 <xsl:apply-templates/>
252                         </xsl:if>
253                 </DIV>
254         </xsl:template>
255
256
257         <!-- method -->
258         <xsl:template match="methods">
259                 <xsl:apply-templates select="method">
260                         <xsl:sort select="@name"/>
261                 </xsl:apply-templates>
262         </xsl:template>
263
264         <xsl:template match="methods/method[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
265                 <DIV>
266                         <xsl:call-template name="ELEMENT">
267                                 <xsl:with-param name="class">m</xsl:with-param>
268                         </xsl:call-template>
269                         <xsl:if test="not(@presence)">
270                                 <xsl:apply-templates/>
271                         </xsl:if>
272                 </DIV>
273         </xsl:template>
274
275
276         <!-- property -->
277         <xsl:template match="properties">
278                 <xsl:apply-templates select="property">
279                         <xsl:sort select="@name"/>
280                 </xsl:apply-templates>
281         </xsl:template>
282
283         <xsl:template match="properties/property[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
284                 <DIV>
285                         <xsl:call-template name="ELEMENT">
286                                 <xsl:with-param name="class">p</xsl:with-param>
287                         </xsl:call-template>
288                         <xsl:if test="not(@presence)">
289                                 <xsl:apply-templates/>
290                         </xsl:if>
291                 </DIV>
292         </xsl:template>
293
294
295         <!-- event -->
296         <xsl:template match="events">
297                 <xsl:apply-templates select="event">
298                         <xsl:sort select="@name"/>
299                 </xsl:apply-templates>
300         </xsl:template>
301
302         <xsl:template match="events/event[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
303                 <DIV>
304                         <xsl:call-template name="ELEMENT">
305                                 <xsl:with-param name="class">e</xsl:with-param>
306                         </xsl:call-template>
307                         <xsl:if test="not(@presence)">
308                                 <xsl:apply-templates/>
309                         </xsl:if>
310                 </DIV>
311         </xsl:template>
312
313
314         <!-- constructor -->
315         <xsl:template match="constructors">
316                 <xsl:apply-templates select="constructor">
317                         <xsl:sort select="@name"/>
318                 </xsl:apply-templates>
319         </xsl:template>
320
321         <xsl:template match="constructors/constructor[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
322                 <DIV>
323                         <xsl:call-template name="ELEMENT">
324                                 <xsl:with-param name="class">x</xsl:with-param>
325                                 <xsl:with-param name="image">m</xsl:with-param>
326                         </xsl:call-template>
327                         <xsl:if test="not(@presence)">
328                                 <xsl:apply-templates/>
329                         </xsl:if>
330                 </DIV>
331         </xsl:template>
332
333
334         <!-- field -->
335         <xsl:template match="fields">
336                 <xsl:apply-templates select="field">
337                         <xsl:sort select="@name"/>
338                 </xsl:apply-templates>
339         </xsl:template>
340
341         <xsl:template match="fields/field[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
342                 <DIV>
343                         <xsl:call-template name="ELEMENT">
344                                 <xsl:with-param name="class">f</xsl:with-param>
345                         </xsl:call-template>
346                         <xsl:if test="not(@presence)">
347                                 <xsl:apply-templates/>
348                         </xsl:if>
349                 </DIV>
350         </xsl:template>
351
352         <!-- accessor -->
353         <xsl:template match="property/methods">
354                 <xsl:apply-templates select="method">
355                         <xsl:sort select="@name"/>
356                 </xsl:apply-templates>
357         </xsl:template>
358
359         <xsl:template match="property[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]/methods/method[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
360                 <DIV>
361                         <xsl:call-template name="ELEMENT">
362                                 <xsl:with-param name="class">o</xsl:with-param>
363                                 <xsl:with-param name="image">m</xsl:with-param>
364                         </xsl:call-template>
365                         <xsl:if test="not(@presence)">
366                                 <xsl:apply-templates/>
367                         </xsl:if>
368                 </DIV>
369         </xsl:template>
370
371
372         <!-- attribute -->
373         <xsl:template match="attributes">
374                 <xsl:apply-templates select="attribute">
375                         <xsl:sort select="@name"/>
376                 </xsl:apply-templates>
377         </xsl:template>
378
379         <xsl:template match="attributes/attribute[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
380                 <DIV>
381                         <xsl:call-template name="ELEMENT">
382                                 <xsl:with-param name="class">r</xsl:with-param>
383                         </xsl:call-template>
384                         <xsl:if test="not(@presence)">
385                                 <xsl:apply-templates/>
386                         </xsl:if>
387                 </DIV>
388         </xsl:template>
389
390
391
392         <!-- support templates -->
393
394         <xsl:template name="ELEMENT">
395                 <xsl:param name="class"/>
396                 <xsl:param name="image"/>
397                         <xsl:attribute name="class">
398                                 <xsl:value-of select="$class"/>
399                                 <xsl:if test="./node() and local-name() != 'assembly'">_</xsl:if>
400                         </xsl:attribute>
401                         <xsl:call-template name="toggle"/>
402                         <xsl:choose>
403                                 <xsl:when test="@error and @error != 'todo'">
404                                         <xsl:element name="img">
405                                                 <xsl:attribute name="src">cm/se.gif</xsl:attribute>
406                                                 <xsl:attribute name="class">t</xsl:attribute>
407                                                 <xsl:attribute name="title"><xsl:apply-templates select="warnings/warning" mode="hover"/></xsl:attribute>
408                                         </xsl:element>
409                                 </xsl:when>
410                                 <xsl:when test="@error = 'todo'">
411                                         <img src="cm/st.gif" class="t"/>
412                                 </xsl:when>
413                                 <xsl:when test="@presence = 'missing'">
414                                         <img src="cm/sm.gif" class="t"/>
415                                 </xsl:when>
416                                 <xsl:when test="@presence = 'extra'">
417                                         <img src="cm/sx.gif" class="t"/>
418                                 </xsl:when>
419                                 <xsl:otherwise>
420                                         <img src="cm/sc.gif" class="t"/>
421                                 </xsl:otherwise>
422                         </xsl:choose>
423                         <xsl:choose>
424                                 <xsl:when test="$image">
425                                         <img src="cm/{$image}.gif" class="t"/>
426                                 </xsl:when>
427                                 <xsl:otherwise>
428                                         <img src="cm/{$class}.gif" class="t"/>
429                                 </xsl:otherwise>
430                         </xsl:choose>
431                         <xsl:call-template name="name"/>
432                         <xsl:if test="not(@presence)">
433                                 <xsl:call-template name="status"/>
434                         </xsl:if>
435         </xsl:template>
436
437         <xsl:template name="status">
438                 <xsl:if test="@complete_total and @complete_total != 0">
439                         <SPAN class="st">
440                                 <img src="cm/sc.gif"/>
441                                 <xsl:text>: </xsl:text>
442                                 <xsl:value-of select="@complete_total"/>
443                                 <xsl:text>%</xsl:text>
444                         </SPAN>
445                 </xsl:if>
446                 <xsl:if test="@todo_total">
447                         <SPAN class="st">
448                                 <img src="cm/st.gif"/>: <xsl:value-of select="@todo_total"/>
449                         </SPAN>
450                 </xsl:if>
451                 <xsl:if test="@missing_total">
452                         <SPAN class="st">
453                                 <img src="cm/sm.gif"/>: <xsl:value-of select="@missing_total"/>
454                         </SPAN>
455                 </xsl:if>
456                 <xsl:if test="@extra_total">
457                         <SPAN class="st">
458                                 <img src="cm/sx.gif"/>: <xsl:value-of select="@extra_total"/>
459                         </SPAN>
460                 </xsl:if>
461                 <xsl:if test="@warning_total">
462                         <SPAN class="st">
463                                 <img src="cm/se.gif"/>: <xsl:value-of select="@warning_total"/>
464                         </SPAN>
465                 </xsl:if>
466         </xsl:template>
467
468         <xsl:template name="toggle">
469                 <xsl:choose>
470                         <xsl:when test="not(@presence) and .//*[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence] and local-name() != 'assembly'">
471                                 <IMG src="cm/tp.gif" class="t"/>
472                         </xsl:when>
473                         <xsl:when test="not(@presence) and .//*[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
474                                 <IMG src="cm/tm.gif" class="t"/>
475                         </xsl:when>
476                         <xsl:otherwise>
477                                 <IMG src="cm/tb.gif"/>
478                         </xsl:otherwise>
479                 </xsl:choose>
480         </xsl:template>
481
482         <xsl:template name="name">
483                 <xsl:if test="@name">
484                         <SPAN class="l"><xsl:value-of select="@name"/></SPAN>
485                 </xsl:if>
486         </xsl:template>
487
488         <xsl:template match="warnings/warning" mode="hover">
489                 <xsl:text>WARNING: </xsl:text>
490                 <xsl:value-of select="@text"/>
491         </xsl:template>
492
493 </xsl:stylesheet>