Project

General

Profile

root / branches / compiler / cSharp / ooasCompiler / src / libs / c5 / docNet / trans.xslt @ 3

1
<?xml version="1.0" ?>
2
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3
  <xsl:output encoding = "ISO-8859-1"/>
4
  <xsl:template match="/">
5
    <xsl:apply-templates select="/Assembly/Interface" />
6
    <xsl:apply-templates select="/Assembly/Class" />
7
    <xsl:apply-templates select="/Assembly/Struct" />
8
    <xsl:apply-templates select="/Assembly/Delegate" />
9
  </xsl:template>
10
  <xsl:template match="/Assembly/Interface">
11
    <xsl:call-template name="file"/>
12
  </xsl:template>
13
  <xsl:template match="/Assembly/Class">
14
    <xsl:call-template name="file"/>
15
  </xsl:template>
16
  <xsl:template match="/Assembly/Struct">
17
    <xsl:call-template name="file"/>
18
  </xsl:template>
19
  <xsl:template match="/Assembly/Delegate">
20
    <xsl:call-template name="file"/>
21
  </xsl:template>
22
  <xsl:template name="file">
23
    <xsl:if test="@Access[.!='private']">
24
      <xsl:text>&#13;&#10;</xsl:text>
25
      <xsl:element name="filestart">
26
        <xsl:attribute name="name">
27
          <xsl:value-of select="translate(substring(@refid,3),'`','_')"/>
28
          <xsl:text>.htm</xsl:text>
29
        </xsl:attribute>
30
      </xsl:element>
31
      <xsl:text>&#13;&#10;</xsl:text>
32
      <html >
33
        <head>
34
          <title>
35
            <xsl:text>C5 doc: </xsl:text>
36
            <xsl:value-of select="@Name" />
37
          </title>
38
          <link rel="stylesheet" type="text/css" href="../docnet.css" />
39
        </head>
40
        <xsl:element name="body">
41
          <xsl:attribute name="onLoad">
42
            <xsl:text>parent.document.title ='C5 doc: </xsl:text>
43
            <xsl:value-of select="@Name" />
44
            <xsl:text>'</xsl:text>
45
          </xsl:attribute>
46
          <h2>
47
            <xsl:value-of select="name()"/>
48
            <xsl:text>&#32;</xsl:text>
49
            <xsl:call-template name="htmlname" />
50
          </h2>
51
          <xsl:apply-templates select="summary" />
52
          <xsl:call-template name="typeparams" />
53
          <xsl:call-template name="implements" />
54
          <xsl:call-template name="implementedby" />
55
          <xsl:call-template name="super" />
56
          <xsl:apply-templates select="Bases" />
57
          <xsl:call-template name="baseof" />
58
          <xsl:call-template name="foverview" />
59
          <xsl:call-template name="eoverview" />
60
          <xsl:call-template name="poverview" />
61
          <xsl:call-template name="coverview" />
62
          <xsl:call-template name="moverview" />
63
          <xsl:call-template name="ooverview" />
64
          <xsl:call-template name="ftable" />
65
          <xsl:call-template name="etable" />
66
          <xsl:call-template name="ptable" />
67
          <xsl:call-template name="ctable" />
68
          <xsl:call-template name="mtable" />
69
          <xsl:call-template name="otable" />
70
        </xsl:element>
71
      </html>
72
    </xsl:if>
73
  </xsl:template>
74
  <xsl:template name="implements">
75
    <xsl:for-each select="Implements">
76
      <xsl:sort select="@refid" />
77
      <xsl:if test="position()=1">
78
        <h3>Implements</h3>
79
      </xsl:if>
80
      <xsl:call-template name="htmllink" />
81
      <xsl:if test="position()!=last()">, </xsl:if>
82
    </xsl:for-each>
83
  </xsl:template>
84
  <xsl:template name="super">
85
    <xsl:variable name="leRefid" select="@refid" />
86
    <xsl:for-each select="/Assembly/Interface[Implements[@refid = $leRefid ] and @Access != 'private']">
87
      <xsl:sort select="@Name" />
88
      <xsl:if test="position()=1">
89
        <h3>Super</h3>
90
      </xsl:if>
91
      <xsl:call-template name="htmllink" />
92
      <xsl:if test="position()!=last()">, </xsl:if>
93
    </xsl:for-each>
94
  </xsl:template>
95
  <xsl:template name="implementedby">
96
    <xsl:variable name="leRefid" select="@refid" />
97
    <xsl:for-each select="/Assembly/Class[Implements[@refid = $leRefid ] and @Access != 'private']">
98
      <xsl:sort select="@Name" />
99
      <xsl:if test="position()=1">
100
        <h3>Implemented by</h3>
101
      </xsl:if>
102
      <xsl:call-template name="htmllink" />
103
      <xsl:if test="position()!=last()">, </xsl:if>
104
    </xsl:for-each>
105
  </xsl:template>
106
  <xsl:template match="Bases">
107
    <xsl:if test="position()=1">
108
      <h3>Bases</h3>
109
    </xsl:if>
110
    <xsl:call-template name="htmllink" />
111
    <xsl:if test="position()!=last()">, </xsl:if>
112
  </xsl:template>
113
  <xsl:template name="baseof">
114
    <xsl:variable name="leRefid" select="@refid" />
115
    <xsl:for-each select="/Assembly/Class[Bases[@refid = $leRefid ] and @Access != 'private']">
116
      <xsl:sort select="@Name" />
117
      <xsl:if test="position()=1">
118
        <h3>Base of</h3>
119
      </xsl:if>
120
      <xsl:call-template name="htmllink" />
121
      <xsl:if test="position()!=last()">, </xsl:if>
122
    </xsl:for-each>
123
  </xsl:template>
124
  <xsl:template match="param">
125
    <tr>
126
      <td valign="top">
127
        <!--code-->
128
        <xsl:value-of select="@name" />
129
        <!--/code-->
130
        <xsl:text>:</xsl:text>
131
      </td>
132
      <td valign="top">
133
        <xsl:apply-templates/>
134
      </td>
135
    </tr>
136
  </xsl:template>
137
  <xsl:template match="returns">
138
    <xsl:if test="current()[../@ReturnType!='void']">
139
      <tr>
140
        <td valign="top">
141
          <b>Returns:</b>
142
        </td>
143
        <td valign="top">
144
          <xsl:apply-templates/>
145
        </td>
146
      </tr>
147
    </xsl:if>
148
  </xsl:template>
149
  <xsl:template match="Signature">
150
    <code>
151
      <xsl:value-of select="." />
152
    </code>
153
  </xsl:template>
154
  <xsl:template match="summary">
155
    <xsl:apply-templates />
156
  </xsl:template>
157
  <xsl:template match="value">
158
    <p>
159
      <b>Value:</b>
160
      <xsl:apply-templates />
161
    </p>
162
  </xsl:template>
163
  <!-- templates for VS 2005 doc tags-->
164
  <xsl:template match="exception">
165
    <xsl:choose>
166
      <xsl:when test="current()[name(..)='summary']">
167
        <b>/Throws</b>
168
        <xsl:value-of select="substring(@cref,3)" />
169
        <xsl:apply-templates />
170
      </xsl:when>
171
      <xsl:otherwise>
172
        <tr>
173
          <td valign="top">
174
            <xsl:variable name="leRefid" select="@cref" />
175
            <xsl:variable name="leExcNode" select="/Assembly/Class[@refid = $leRefid  and @Access != 'private']"/>
176
            <xsl:choose>
177
              <xsl:when test="$leExcNode">
178
                <xsl:for-each select="$leExcNode">
179
                  <xsl:call-template name="htmllink" />
180
                </xsl:for-each>
181
              </xsl:when>
182
              <xsl:otherwise>
183
                <xsl:value-of select="substring(@cref,3)" />
184
              </xsl:otherwise>
185
            </xsl:choose>
186
          </td>
187
          <td valign="top">
188
            <xsl:apply-templates />
189
          </td>
190
        </tr>
191
      </xsl:otherwise>
192
    </xsl:choose>
193
  </xsl:template>
194
  <!--xsl:template match="code">
195
        <code>
196
            <xsl:apply-templates select="@* | node()" />
197
        </code>
198
    </xsl:template-->
199
  <xsl:template match="item">
200
    <li>
201
      <xsl:apply-templates select="@* | node()" />
202
    </li>
203
  </xsl:template>
204
  <!-- also do description and term tags, and other list types?-->
205
  <xsl:template match="list">
206
    <xsl:choose>
207
      <xsl:when test="@type='ordered'">
208
        <ol>
209
          <xsl:apply-templates select="@* | node()" />
210
        </ol>
211
      </xsl:when>
212
      <xsl:otherwise>
213
        <ul>
214
          <xsl:apply-templates select="@* | node()" />
215
        </ul>
216
      </xsl:otherwise>
217
    </xsl:choose>
218
  </xsl:template>
219
  <xsl:template match="para">
220
    <p>
221
      <xsl:apply-templates select="@* | node()" />
222
    </p>
223
  </xsl:template>
224
  <xsl:template match="seealso">
225
    <xsl:text>See also</xsl:text>
226
    <xsl:variable name="leRefid" select="@cref" />
227
    <xsl:variable name="leNode" select="//*[@refid=$leRefid]" />
228
    <xsl:variable name="leFile" select="substring(ancestor::*[@refid and not(@Declared)]/@refid,3)" />
229
    <xsl:choose>
230
      <xsl:when test ="substring(@cref,1,2) = 'T:'">
231
        <xsl:element name="a">
232
          <xsl:attribute name="href">
233
            <xsl:value-of select="substring(@cref,3)" />
234
            <xsl:text>.htm</xsl:text>
235
          </xsl:attribute>
236
          <xsl:value-of select="$leNode/Signature" />
237
        </xsl:element>
238
      </xsl:when>
239
      <xsl:when test="$leNode/@CDeclared=$leFile">
240
        <xsl:element name="a">
241
          <xsl:attribute name="href">
242
            #<xsl:value-of select="@cref" />
243
          </xsl:attribute>
244
          <xsl:value-of select="$leNode/Signature" />
245
        </xsl:element>
246
      </xsl:when>
247
      <xsl:otherwise>
248
        <xsl:element name="a">
249
          <xsl:attribute name="href">
250
            <xsl:value-of select="translate($leNode/@CDeclared,'`','_')" />.htm#<xsl:value-of select="@cref" />
251
          </xsl:attribute>
252
          <xsl:value-of select="$leNode/@Declared" />.<xsl:value-of select="$leNode/Signature" />
253
        </xsl:element>
254
      </xsl:otherwise>
255
    </xsl:choose>
256
  </xsl:template>
257
  <xsl:template match="see">
258
    <!--xsl:text>See </xsl:text-->
259
    <xsl:variable name="leRefid" select="@cref" />
260
    <xsl:variable name="leNode" select="//*[@refid=$leRefid]" />
261
    <xsl:variable name="leFile" select="substring(ancestor::*[@refid and not(@Declared)]/@refid,3)" />
262
    <xsl:choose>
263
      <xsl:when test ="substring(@cref,1,2) = 'T:'">
264
        <xsl:element name="a">
265
          <xsl:attribute name="href">
266
            <xsl:value-of select="substring(@cref,3)" />
267
            <xsl:text>.htm</xsl:text>
268
          </xsl:attribute>
269
          <xsl:value-of select="$leNode/Signature" />
270
        </xsl:element>
271
      </xsl:when>
272
      <xsl:when test="$leNode/@CDeclared=$leFile">
273
        <xsl:element name="a">
274
          <xsl:attribute name="href">
275
            <xsl:text>#</xsl:text>
276
            <xsl:value-of select="@cref" />
277
          </xsl:attribute>
278
          <xsl:value-of select="$leNode/Signature" />
279
        </xsl:element>
280
      </xsl:when>
281
      <xsl:otherwise>
282
        <xsl:element name="a">
283
          <xsl:attribute name="href">
284
            <xsl:value-of select="translate($leNode/@CDeclared,'`','_')" />.htm#<xsl:value-of select="@cref" />
285
          </xsl:attribute>
286
          <xsl:value-of select="$leNode/@Declared" />.<xsl:value-of select="$leNode/Signature" />
287
        </xsl:element>
288
      </xsl:otherwise>
289
    </xsl:choose>
290
  </xsl:template>
291
  <xsl:template match="typeparam">
292
    <tr>
293
      <td valign="top">
294
        <xsl:value-of select="@name" />
295
      </td>
296
      <td valign="top">
297
        <xsl:apply-templates />
298
      </td>
299
    </tr>
300
  </xsl:template>
301
  <xsl:template match="constraint">
302
    <tr>
303
      <td valign="top"></td>
304
      <td valign="top">
305
        <xsl:value-of select="@Value" />
306
      </td>
307
    </tr>
308
  </xsl:template>
309
  <xsl:template match="@* | node()">
310
    <xsl:copy>
311
      <xsl:apply-templates select="@* | node()" />
312
    </xsl:copy>
313
  </xsl:template>
314
  <!-- end templates for VS 2005 doc tags -->
315
  <xsl:template name="typeparams">
316
    <xsl:if test="typeparam">
317
      <table>
318
        <tr>
319
          <td>
320
            <b>Type parameters:</b>
321
          </td>
322
          <td></td>
323
        </tr>
324
        <xsl:apply-templates select="typeparam"/>
325
        <xsl:if test="constraint">
326
          <tr>
327
            <td>
328
              <b>Constraints:</b>
329
            </td>
330
            <td></td>
331
          </tr>
332
          <xsl:apply-templates select="constraint"/>
333
        </xsl:if>
334
      </table>
335
    </xsl:if>
336
  </xsl:template>
337
  <xsl:template name="htmllink">
338
    <xsl:choose>
339
      <xsl:when test="@C5">
340
        <xsl:element name="a">
341
          <xsl:attribute name="href">
342
            <xsl:choose>
343
              <xsl:when test ="substring(@refid,1,2) = 'T:'">
344
                <xsl:value-of select="translate(substring(@refid,3),'`','_')" />
345
                <xsl:text>.htm</xsl:text>
346
              </xsl:when>
347
              <xsl:otherwise>
348
                <xsl:value-of select="translate(@CDeclared,'`','_')"/>.htm#<xsl:value-of select="@refid" />
349
              </xsl:otherwise>
350
            </xsl:choose>
351
          </xsl:attribute>
352
          <xsl:apply-templates select="Signature" />
353
        </xsl:element>
354
      </xsl:when>
355
      <xsl:otherwise>
356
        <xsl:apply-templates select="Signature" />
357
      </xsl:otherwise>
358
    </xsl:choose>
359
  </xsl:template>
360
  <xsl:template name="locallink">
361
    <xsl:choose>
362
      <xsl:when test="@refid">
363
        <xsl:element name="a">
364
          <xsl:attribute name="href">
365
            <xsl:text>#</xsl:text>
366
            <xsl:value-of select="concat(../@refid , '|',@refid)" />
367
          </xsl:attribute>
368
          <xsl:apply-templates select="Signature" />
369
        </xsl:element>
370
      </xsl:when>
371
      <xsl:otherwise>
372
        <xsl:apply-templates select="Signature" />
373
      </xsl:otherwise>
374
    </xsl:choose>
375
  </xsl:template>
376
  <xsl:template name="htmlname">
377
    <xsl:choose>
378
      <xsl:when test="@refid">
379
        <xsl:choose>
380
          <xsl:when test ="not(@Declared)">
381
            <!-- i.e. a type -->
382
            <xsl:element name="a">
383
              <xsl:attribute name="name">
384
                <xsl:value-of select="@refid" />
385
              </xsl:attribute>
386
              <xsl:apply-templates select="Signature" />
387
            </xsl:element>
388
          </xsl:when>
389
          <xsl:otherwise>
390
            <!-- i.e. a member -->
391
            <xsl:element name="a">
392
              <xsl:attribute name="name">
393
                <xsl:value-of select="concat(../@refid , '|',@refid)" />
394
              </xsl:attribute>
395
              <xsl:apply-templates select="Signature" />
396
            </xsl:element>
397
            <xsl:if test ="not(@Inherited)">
398
              <!-- the canonical description -->
399
              <xsl:element name="a">
400
                <xsl:attribute name="name">
401
                  <xsl:value-of select="@refid" />
402
                </xsl:attribute>
403
              </xsl:element>
404
            </xsl:if>
405
          </xsl:otherwise>
406
        </xsl:choose>
407
      </xsl:when>
408
      <xsl:otherwise>
409
        <xsl:apply-templates select="Signature" />
410
      </xsl:otherwise>
411
    </xsl:choose>
412
  </xsl:template>
413
  <xsl:template name="ftable">
414
    <xsl:call-template name="table">
415
      <xsl:with-param name="type">Field</xsl:with-param>
416
    </xsl:call-template>
417
  </xsl:template>
418
  <xsl:template name="etable">
419
    <xsl:call-template name="table">
420
      <xsl:with-param name="type">Event</xsl:with-param>
421
    </xsl:call-template>
422
  </xsl:template>
423
  <xsl:template name="ptable">
424
    <xsl:call-template name="table">
425
      <xsl:with-param name="type">Property</xsl:with-param>
426
    </xsl:call-template>
427
  </xsl:template>
428
  <xsl:template name="ctable">
429
    <xsl:call-template name="table">
430
      <xsl:with-param name="type">Constructor</xsl:with-param>
431
    </xsl:call-template>
432
  </xsl:template>
433
  <xsl:template name="mtable">
434
    <xsl:call-template name="table">
435
      <xsl:with-param name="type" select="'Method'"/>
436
    </xsl:call-template>
437
  </xsl:template>
438
  <xsl:template name="otable">
439
    <xsl:call-template name="table">
440
      <xsl:with-param name="type" select="'Operator'"/>
441
    </xsl:call-template>
442
  </xsl:template>
443
  <xsl:template name="table">
444
    <xsl:param name="type" />
445
    <xsl:param name="protection" />
446
    <xsl:variable name="thenodes" select="*[name() = $type and @Access != 'private' and not(@Inherited)]" />
447
    <xsl:if test="$thenodes">
448
      <h3>
449
        <xsl:value-of select="$type" />
450
        <xsl:text> details</xsl:text>
451
      </h3>
452
      <table border="1">
453
        <xsl:for-each select="$thenodes">
454
          <xsl:sort select="@Name" />
455
          <tr>
456
            <td valign="top">
457
              <xsl:if test="current()[@Virtual != 'True' and @Static != 'True']">
458
                <code class="greenbg">N</code>
459
              </xsl:if>
460
              <xsl:if test="current()[@Final = 'True' and @Static != 'True']">
461
                <code class="greenbg">F</code>
462
              </xsl:if>
463
              <xsl:if test="current()[@Abstract = 'True']">
464
                <code class="greenbg">A</code>
465
              </xsl:if>
466
              <xsl:if test="current()[@Static = 'True']">
467
                <code class="greenbg">S</code>
468
              </xsl:if>
469
              <xsl:if test="current()[@Access = 'protected']">
470
                <code class="greenbg">P</code>
471
              </xsl:if>
472
              <code>
473
                <xsl:text>&#32;</xsl:text>
474
                <xsl:choose>
475
                  <xsl:when test="@ReturnType">
476
                    <xsl:value-of select="@ReturnType"/>
477
                  </xsl:when>
478
                  <xsl:otherwise>
479
                    <xsl:value-of select="@Type"/>
480
                  </xsl:otherwise>
481
                </xsl:choose>
482
                <xsl:text>&#32;</xsl:text>
483
              </code>
484
              <xsl:call-template name="htmlname" />
485
            </td>
486
            <td>
487
              <!--xsl:if test="@Inherited">
488
                                <xsl:text>Inherited from </xsl:text>
489
                                <xsl:value-of select="@Declared"/>
490
                                <xsl:text>: </xsl:text>
491
                                <xsl:call-template name="htmllink" />
492
                            </xsl:if-->
493
              <xsl:if test="not(@Inherited)">
494
                <xsl:if test="@Get">
495
                  <b>Access: </b>
496
                  <xsl:if test="@Get='True' and @Set='True'">Read-Write</xsl:if>
497
                  <xsl:if test="@Get='True' and @Set='False'">Read-Only</xsl:if>
498
                  <xsl:if test="@Get='False' and @Set='True'">Write-Only</xsl:if>
499
                  <br/>
500
                </xsl:if>
501
                <xsl:apply-templates select="value" />
502
                <xsl:apply-templates select="summary" />
503
                <xsl:if test="exception">
504
                  <table>
505
                    <tr>
506
                      <td>
507
                        <b>Throws</b>
508
                      </td>
509
                      <td></td>
510
                    </tr>
511
                    <xsl:apply-templates select="exception" />
512
                  </table>
513
                </xsl:if>
514
                <xsl:call-template name="typeparams"/>
515
                <!--xsl:if test="current()[@ReturnType != 'void'] or param"-->
516
                  <xsl:if test="returns or param">
517
                  <table>
518
                    <xsl:apply-templates select="returns" />
519
                    <xsl:if test="param">
520
                      <tr>
521
                        <td>
522
                          <b>Parameters:</b>
523
                        </td>
524
                      </tr>
525
                      <xsl:apply-templates select="param" />
526
                    </xsl:if>
527
                  </table>
528
                </xsl:if>
529
              </xsl:if>
530
            </td>
531
          </tr>
532
        </xsl:for-each>
533
      </table>
534
    </xsl:if>
535
  </xsl:template>
536
  <xsl:template name="foverview">
537
    <xsl:call-template name="overview">
538
      <xsl:with-param name="type">Field</xsl:with-param>
539
    </xsl:call-template>
540
  </xsl:template>
541
  <xsl:template name="eoverview">
542
    <xsl:call-template name="overview">
543
      <xsl:with-param name="type">Event</xsl:with-param>
544
    </xsl:call-template>
545
  </xsl:template>
546
  <xsl:template name="poverview">
547
    <xsl:call-template name="overview">
548
      <xsl:with-param name="type">Property</xsl:with-param>
549
    </xsl:call-template>
550
  </xsl:template>
551
  <xsl:template name="coverview">
552
    <xsl:call-template name="overview">
553
      <xsl:with-param name="type">Constructor</xsl:with-param>
554
    </xsl:call-template>
555
  </xsl:template>
556
  <xsl:template name="moverview">
557
    <xsl:call-template name="overview">
558
      <xsl:with-param name="type">Method</xsl:with-param>
559
    </xsl:call-template>
560
  </xsl:template>
561
  <xsl:template name="ooverview">
562
    <xsl:call-template name="overview">
563
      <xsl:with-param name="type">Operator</xsl:with-param>
564
    </xsl:call-template>
565
  </xsl:template>
566
  <xsl:template name="overview">
567
    <xsl:param name="type" select="'[Unknown Locale]'" />
568
    <xsl:for-each select="*[name() = $type and @Access != 'private']">
569
      <xsl:sort select="@Name" />
570
      <xsl:if test="position() = 1">
571
        <h3>
572
          <xsl:value-of select="$type" />
573
          <xsl:text> overview</xsl:text>
574
        </h3>
575
      </xsl:if>
576
      <xsl:choose>
577
        <xsl:when test="@Inherited">
578
          <xsl:call-template name="htmllink" />
579
          <xsl:text>, </xsl:text>
580
          <xsl:text>Inherited from </xsl:text>
581
          <xsl:value-of select="@Declared"/>
582
        </xsl:when>
583
        <xsl:otherwise>
584
          <xsl:call-template name="locallink" />
585
        </xsl:otherwise>
586
      </xsl:choose>
587
      <xsl:if test="position()!=last()">
588
        ,<br/>
589
      </xsl:if>
590
    </xsl:for-each>
591
  </xsl:template>
592
</xsl:stylesheet>