2003-11-11 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 -->
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
212         <!-- delegate -->
213         <xsl:template match="classes/class[@type='delegate'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
214                 <DIV>
215                         <xsl:call-template name="ELEMENT">
216                                 <xsl:with-param name="class">d</xsl:with-param>
217                         </xsl:call-template>
218                         <xsl:if test="not(@presence)">
219                                 <xsl:apply-templates/>
220                         </xsl:if>
221                 </DIV>
222         </xsl:template>
223
224
225         <!-- enumeration -->
226         <xsl:template match="classes/class[@type='enum'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
227                 <DIV>
228                         <xsl:call-template name="ELEMENT">
229                                 <xsl:with-param name="class">en</xsl:with-param>
230                         </xsl:call-template>
231                         <xsl:if test="not(@presence)">
232                                 <xsl:apply-templates/>
233                         </xsl:if>
234                 </DIV>
235         </xsl:template>
236
237
238         <!-- method -->
239         <xsl:template match="methods">
240                 <xsl:apply-templates select="method">
241                         <xsl:sort select="@name"/>
242                 </xsl:apply-templates>
243         </xsl:template>
244
245         <xsl:template match="methods/method[@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">m</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         <!-- property -->
258         <xsl:template match="properties">
259                 <xsl:apply-templates select="property">
260                         <xsl:sort select="@name"/>
261                 </xsl:apply-templates>
262         </xsl:template>
263
264         <xsl:template match="properties/property[@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">p</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         <!-- event -->
277         <xsl:template match="events">
278                 <xsl:apply-templates select="event">
279                         <xsl:sort select="@name"/>
280                 </xsl:apply-templates>
281         </xsl:template>
282
283         <xsl:template match="events/event[@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">e</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         <!-- constructor -->
296         <xsl:template match="constructors">
297                 <xsl:apply-templates select="constructor">
298                         <xsl:sort select="@name"/>
299                 </xsl:apply-templates>
300         </xsl:template>
301
302         <xsl:template match="constructors/constructor[@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">x</xsl:with-param>
306                                 <xsl:with-param name="image">m</xsl:with-param>
307                         </xsl:call-template>
308                         <xsl:if test="not(@presence)">
309                                 <xsl:apply-templates/>
310                         </xsl:if>
311                 </DIV>
312         </xsl:template>
313
314
315         <!-- field -->
316         <xsl:template match="fields">
317                 <xsl:apply-templates select="field">
318                         <xsl:sort select="@name"/>
319                 </xsl:apply-templates>
320         </xsl:template>
321
322         <xsl:template match="fields/field[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
323                 <DIV>
324                         <xsl:call-template name="ELEMENT">
325                                 <xsl:with-param name="class">f</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         <!-- accessor -->
334         <xsl:template match="property/methods">
335                 <xsl:apply-templates select="method">
336                         <xsl:sort select="@name"/>
337                 </xsl:apply-templates>
338         </xsl:template>
339
340         <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]">
341                 <DIV>
342                         <xsl:call-template name="ELEMENT">
343                                 <xsl:with-param name="class">o</xsl:with-param>
344                                 <xsl:with-param name="image">m</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
353         <!-- attribute -->
354         <xsl:template match="attributes">
355                 <xsl:apply-templates select="attribute">
356                         <xsl:sort select="@name"/>
357                 </xsl:apply-templates>
358         </xsl:template>
359
360         <xsl:template match="attributes/attribute[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
361                 <DIV>
362                         <xsl:call-template name="ELEMENT">
363                                 <xsl:with-param name="class">r</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
373         <!-- support templates -->
374
375         <xsl:template name="ELEMENT">
376                 <xsl:param name="class"/>
377                 <xsl:param name="image"/>
378                         <xsl:attribute name="class">
379                                 <xsl:value-of select="$class"/>
380                                 <xsl:if test="./node() and local-name() != 'assembly'">_</xsl:if>
381                         </xsl:attribute>
382                         <xsl:call-template name="toggle"/>
383                         <xsl:choose>
384                                 <xsl:when test="@error and @error != 'todo'">
385                                         <xsl:element name="img">
386                                                 <xsl:attribute name="src">cm/se.gif</xsl:attribute>
387                                                 <xsl:attribute name="class">t</xsl:attribute>
388                                                 <xsl:attribute name="title"><xsl:apply-templates select="warnings/warning" mode="hover"/></xsl:attribute>
389                                         </xsl:element>
390                                 </xsl:when>
391                                 <xsl:when test="@error = 'todo'">
392                                         <img src="cm/st.gif" class="t"/>
393                                 </xsl:when>
394                                 <xsl:when test="@presence = 'missing'">
395                                         <img src="cm/sm.gif" class="t"/>
396                                 </xsl:when>
397                                 <xsl:when test="@presence = 'extra'">
398                                         <img src="cm/sx.gif" class="t"/>
399                                 </xsl:when>
400                                 <xsl:otherwise>
401                                         <img src="cm/sc.gif" class="t"/>
402                                 </xsl:otherwise>
403                         </xsl:choose>
404                         <xsl:choose>
405                                 <xsl:when test="$image">
406                                         <img src="cm/{$image}.gif" class="t"/>
407                                 </xsl:when>
408                                 <xsl:otherwise>
409                                         <img src="cm/{$class}.gif" class="t"/>
410                                 </xsl:otherwise>
411                         </xsl:choose>
412                         <xsl:call-template name="name"/>
413                         <xsl:if test="not(@presence)">
414                                 <xsl:call-template name="status"/>
415                         </xsl:if>
416         </xsl:template>
417
418         <xsl:template name="status">
419                 <xsl:if test="@complete_total and @complete_total != 0">
420                         <SPAN class="st">
421                                 <img src="cm/sc.gif"/>
422                                 <xsl:text>: </xsl:text>
423                                 <xsl:value-of select="@complete_total"/>
424                                 <xsl:text>%</xsl:text>
425                         </SPAN>
426                 </xsl:if>
427                 <xsl:if test="@todo_total">
428                         <SPAN class="st">
429                                 <img src="cm/st.gif"/>: <xsl:value-of select="@todo_total"/>
430                         </SPAN>
431                 </xsl:if>
432                 <xsl:if test="@missing_total">
433                         <SPAN class="st">
434                                 <img src="cm/sm.gif"/>: <xsl:value-of select="@missing_total"/>
435                         </SPAN>
436                 </xsl:if>
437                 <xsl:if test="@extra_total">
438                         <SPAN class="st">
439                                 <img src="cm/sx.gif"/>: <xsl:value-of select="@extra_total"/>
440                         </SPAN>
441                 </xsl:if>
442                 <xsl:if test="@warning_total">
443                         <SPAN class="st">
444                                 <img src="cm/se.gif"/>: <xsl:value-of select="@warning_total"/>
445                         </SPAN>
446                 </xsl:if>
447         </xsl:template>
448
449         <xsl:template name="toggle">
450                 <xsl:choose>
451                         <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'">
452                                 <IMG src="cm/tp.gif" class="t"/>
453                         </xsl:when>
454                         <xsl:when test="not(@presence) and .//*[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
455                                 <IMG src="cm/tm.gif" class="t"/>
456                         </xsl:when>
457                         <xsl:otherwise>
458                                 <IMG src="cm/tb.gif"/>
459                         </xsl:otherwise>
460                 </xsl:choose>
461         </xsl:template>
462
463         <xsl:template name="name">
464                 <xsl:if test="@name">
465                         <SPAN class="l"><xsl:value-of select="@name"/></SPAN>
466                 </xsl:if>
467         </xsl:template>
468
469         <xsl:template match="warnings/warning" mode="hover">
470                 <xsl:text>WARNING: </xsl:text>
471                 <xsl:value-of select="@text"/>
472         </xsl:template>
473
474 </xsl:stylesheet>