~ubuntu-branches/ubuntu/natty/empathy/natty-updates

« back to all changes in this revision

Viewing changes to tools/doc-generator.xsl

Tags: upstream-0.22.0
ImportĀ upstreamĀ versionĀ 0.22.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!-- Generate HTML documentation from the Telepathy specification.
 
2
The master copy of this stylesheet is in the Telepathy spec repository -
 
3
please make any changes there.
 
4
 
 
5
Copyright (C) 2006, 2007 Collabora Limited
 
6
 
 
7
This library is free software; you can redistribute it and/or
 
8
modify it under the terms of the GNU Lesser General Public
 
9
License as published by the Free Software Foundation; either
 
10
version 2.1 of the License, or (at your option) any later version.
 
11
 
 
12
This library is distributed in the hope that it will be useful,
 
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
15
Library General Public License for more details.
 
16
 
 
17
You should have received a copy of the GNU Lesser General Public
 
18
License along with this library; if not, write to the Free Software
 
19
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
20
-->
 
21
 
 
22
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 
23
  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
 
24
  exclude-result-prefixes="tp">
 
25
  <!--Don't move the declaration of the HTML namespace up here - XMLNSs
 
26
  don't work ideally in the presence of two things that want to use the
 
27
  absence of a prefix, sadly. -->
 
28
 
 
29
  <xsl:template match="*" mode="identity">
 
30
    <xsl:copy>
 
31
      <xsl:apply-templates mode="identity"/>
 
32
    </xsl:copy>
 
33
  </xsl:template>
 
34
 
 
35
  <xsl:template match="tp:docstring">
 
36
    <xsl:apply-templates select="node()" mode="identity"/>
 
37
  </xsl:template>
 
38
 
 
39
  <xsl:template match="tp:errors">
 
40
    <h1 xmlns="http://www.w3.org/1999/xhtml">Errors</h1>
 
41
    <xsl:apply-templates/>
 
42
  </xsl:template>
 
43
 
 
44
  <xsl:template match="tp:generic-types">
 
45
    <h1 xmlns="http://www.w3.org/1999/xhtml">Generic types</h1>
 
46
    <xsl:call-template name="do-types"/>
 
47
  </xsl:template>
 
48
 
 
49
  <xsl:template name="do-types">
 
50
    <xsl:if test="tp:simple-type">
 
51
      <h2 xmlns="http://www.w3.org/1999/xhtml">Simple types</h2>
 
52
      <xsl:apply-templates select="tp:simple-type"/>
 
53
    </xsl:if>
 
54
 
 
55
    <xsl:if test="tp:enum">
 
56
      <h2 xmlns="http://www.w3.org/1999/xhtml">Enumerated types:</h2>
 
57
      <xsl:apply-templates select="tp:enum"/>
 
58
    </xsl:if>
 
59
 
 
60
    <xsl:if test="tp:flags">
 
61
      <h2 xmlns="http://www.w3.org/1999/xhtml">Sets of flags:</h2>
 
62
      <xsl:apply-templates select="tp:flags"/>
 
63
    </xsl:if>
 
64
 
 
65
    <xsl:if test="tp:struct">
 
66
      <h2 xmlns="http://www.w3.org/1999/xhtml">Structure types</h2>
 
67
      <xsl:apply-templates select="tp:struct"/>
 
68
    </xsl:if>
 
69
 
 
70
    <xsl:if test="tp:mapping">
 
71
      <h2 xmlns="http://www.w3.org/1999/xhtml">Mapping types</h2>
 
72
      <xsl:apply-templates select="tp:mapping"/>
 
73
    </xsl:if>
 
74
 
 
75
    <xsl:if test="tp:external-type">
 
76
      <h2 xmlns="http://www.w3.org/1999/xhtml">Types defined elsewhere</h2>
 
77
      <dl><xsl:apply-templates select="tp:external-type"/></dl>
 
78
    </xsl:if>
 
79
  </xsl:template>
 
80
 
 
81
  <xsl:template match="tp:error">
 
82
    <h2 xmlns="http://www.w3.org/1999/xhtml"><a name="{concat(../@namespace, '.', translate(@name, ' ', ''))}"></a><xsl:value-of select="concat(../@namespace, '.', translate(@name, ' ', ''))"/></h2>
 
83
    <xsl:apply-templates select="tp:docstring"/>
 
84
  </xsl:template>
 
85
 
 
86
  <xsl:template match="/tp:spec/tp:copyright">
 
87
    <div xmlns="http://www.w3.org/1999/xhtml">
 
88
      <xsl:apply-templates/>
 
89
    </div>
 
90
  </xsl:template>
 
91
  <xsl:template match="/tp:spec/tp:license">
 
92
    <div xmlns="http://www.w3.org/1999/xhtml" class="license">
 
93
      <xsl:apply-templates mode="identity"/>
 
94
    </div>
 
95
  </xsl:template>
 
96
 
 
97
  <xsl:template match="tp:copyright"/>
 
98
  <xsl:template match="tp:license"/>
 
99
 
 
100
  <xsl:template match="interface">
 
101
    <h1 xmlns="http://www.w3.org/1999/xhtml"><a name="{@name}"></a><xsl:value-of select="@name"/></h1>
 
102
 
 
103
    <xsl:if test="@tp:causes-havoc">
 
104
      <p xmlns="http://www.w3.org/1999/xhtml" class="causes-havoc">
 
105
        This interface is <xsl:value-of select="@tp:causes-havoc"/>
 
106
        and is likely to cause havoc to your API/ABI if bindings are generated.
 
107
        Don't include it in libraries that care about compatibility.
 
108
      </p>
 
109
    </xsl:if>
 
110
 
 
111
    <xsl:if test="tp:requires">
 
112
      <p>Implementations of this interface must also implement:</p>
 
113
      <ul xmlns="http://www.w3.org/1999/xhtml">
 
114
        <xsl:for-each select="tp:requires">
 
115
          <li><code><a href="#{@interface}"><xsl:value-of select="@interface"/></a></code></li>
 
116
        </xsl:for-each>
 
117
      </ul>
 
118
    </xsl:if>
 
119
 
 
120
    <xsl:apply-templates select="tp:docstring" />
 
121
 
 
122
    <xsl:choose>
 
123
      <xsl:when test="method">
 
124
        <h2 xmlns="http://www.w3.org/1999/xhtml">Methods:</h2>
 
125
        <xsl:apply-templates select="method"/>
 
126
      </xsl:when>
 
127
      <xsl:otherwise>
 
128
        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no methods.</p>
 
129
      </xsl:otherwise>
 
130
    </xsl:choose>
 
131
 
 
132
    <xsl:choose>
 
133
      <xsl:when test="signal">
 
134
        <h2 xmlns="http://www.w3.org/1999/xhtml">Signals:</h2>
 
135
        <xsl:apply-templates select="signal"/>
 
136
      </xsl:when>
 
137
      <xsl:otherwise>
 
138
        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no signals.</p>
 
139
      </xsl:otherwise>
 
140
    </xsl:choose>
 
141
 
 
142
    <xsl:choose>
 
143
      <xsl:when test="tp:property">
 
144
        <h2 xmlns="http://www.w3.org/1999/xhtml">Properties:</h2>
 
145
        <dl xmlns="http://www.w3.org/1999/xhtml">
 
146
          <xsl:apply-templates select="tp:property"/>
 
147
        </dl>
 
148
      </xsl:when>
 
149
      <xsl:otherwise>
 
150
        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no properties.</p>
 
151
      </xsl:otherwise>
 
152
    </xsl:choose>
 
153
 
 
154
    <xsl:call-template name="do-types"/>
 
155
 
 
156
  </xsl:template>
 
157
 
 
158
  <xsl:template match="tp:flags">
 
159
    <h3>
 
160
      <a name="type-{@name}">
 
161
        <xsl:value-of select="@name"/>
 
162
      </a>
 
163
    </h3>
 
164
    <xsl:apply-templates select="tp:docstring" />
 
165
    <dl xmlns="http://www.w3.org/1999/xhtml">
 
166
        <xsl:variable name="value-prefix">
 
167
          <xsl:choose>
 
168
            <xsl:when test="@value-prefix">
 
169
              <xsl:value-of select="@value-prefix"/>
 
170
            </xsl:when>
 
171
            <xsl:otherwise>
 
172
              <xsl:value-of select="@name"/>
 
173
            </xsl:otherwise>
 
174
          </xsl:choose>
 
175
        </xsl:variable>
 
176
      <xsl:for-each select="tp:flag">
 
177
        <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
 
178
        <xsl:choose>
 
179
          <xsl:when test="tp:docstring">
 
180
            <dd xmlns="http://www.w3.org/1999/xhtml"><xsl:apply-templates select="tp:docstring" /></dd>
 
181
          </xsl:when>
 
182
          <xsl:otherwise>
 
183
            <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
 
184
          </xsl:otherwise>
 
185
        </xsl:choose>
 
186
      </xsl:for-each>
 
187
    </dl>
 
188
  </xsl:template>
 
189
 
 
190
  <xsl:template match="tp:enum">
 
191
    <h3 xmlns="http://www.w3.org/1999/xhtml">
 
192
      <a name="type-{@name}">
 
193
        <xsl:value-of select="@name"/>
 
194
      </a>
 
195
    </h3>
 
196
    <xsl:apply-templates select="tp:docstring" />
 
197
    <dl xmlns="http://www.w3.org/1999/xhtml">
 
198
        <xsl:variable name="value-prefix">
 
199
          <xsl:choose>
 
200
            <xsl:when test="@value-prefix">
 
201
              <xsl:value-of select="@value-prefix"/>
 
202
            </xsl:when>
 
203
            <xsl:otherwise>
 
204
              <xsl:value-of select="@name"/>
 
205
            </xsl:otherwise>
 
206
          </xsl:choose>
 
207
        </xsl:variable>
 
208
      <xsl:for-each select="tp:enumvalue">
 
209
        <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
 
210
        <xsl:choose>
 
211
          <xsl:when test="tp:docstring">
 
212
            <dd xmlns="http://www.w3.org/1999/xhtml"><xsl:apply-templates select="tp:docstring" /></dd>
 
213
          </xsl:when>
 
214
          <xsl:otherwise>
 
215
            <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
 
216
          </xsl:otherwise>
 
217
        </xsl:choose>
 
218
      </xsl:for-each>
 
219
    </dl>
 
220
  </xsl:template>
 
221
 
 
222
  <xsl:template match="tp:property">
 
223
    <dt xmlns="http://www.w3.org/1999/xhtml">
 
224
      <xsl:if test="@name">
 
225
        <code><xsl:value-of select="@name"/></code> -
 
226
      </xsl:if>
 
227
      <code><xsl:value-of select="@type"/></code>
 
228
    </dt>
 
229
    <dd xmlns="http://www.w3.org/1999/xhtml">
 
230
      <xsl:apply-templates select="tp:docstring"/>
 
231
    </dd>
 
232
  </xsl:template>
 
233
 
 
234
  <xsl:template match="tp:mapping">
 
235
    <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
 
236
      <h3>
 
237
        <a name="type-{@name}">
 
238
          <xsl:value-of select="@name"/>
 
239
        </a> - a{
 
240
        <xsl:for-each select="tp:member">
 
241
          <xsl:value-of select="@type"/>
 
242
          <xsl:text>: </xsl:text>
 
243
          <xsl:value-of select="@name"/>
 
244
          <xsl:if test="position() != last()"> &#x2192; </xsl:if>
 
245
        </xsl:for-each>
 
246
        }
 
247
      </h3>
 
248
      <div class="docstring">
 
249
        <xsl:apply-templates select="tp:docstring"/>
 
250
      </div>
 
251
      <div>
 
252
        <h4>Members</h4>
 
253
        <dl>
 
254
          <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
 
255
        </dl>
 
256
      </div>
 
257
    </div>
 
258
  </xsl:template>
 
259
 
 
260
  <xsl:template match="tp:docstring" mode="in-index"/>
 
261
 
 
262
  <xsl:template match="tp:simple-type | tp:enum | tp:flags | tp:external-type"
 
263
    mode="in-index">
 
264
    - <xsl:value-of select="@type"/>
 
265
  </xsl:template>
 
266
 
 
267
  <xsl:template match="tp:simple-type">
 
268
    <div xmlns="http://www.w3.org/1999/xhtml" class="simple-type">
 
269
      <h3>
 
270
        <a name="type-{@name}">
 
271
          <xsl:value-of select="@name"/>
 
272
        </a> - <xsl:value-of select="@type"/>
 
273
      </h3>
 
274
      <div class="docstring">
 
275
        <xsl:apply-templates select="tp:docstring"/>
 
276
      </div>
 
277
    </div>
 
278
  </xsl:template>
 
279
 
 
280
  <xsl:template match="tp:external-type">
 
281
    <div xmlns="http://www.w3.org/1999/xhtml" class="external-type">
 
282
      <dt>
 
283
        <a name="type-{@name}">
 
284
          <xsl:value-of select="@name"/>
 
285
        </a> - <xsl:value-of select="@type"/>
 
286
      </dt>
 
287
      <dd>Defined by: <xsl:value-of select="@from"/></dd>
 
288
    </div>
 
289
  </xsl:template>
 
290
 
 
291
  <xsl:template match="tp:struct" mode="in-index">
 
292
    - ( <xsl:for-each select="tp:member">
 
293
          <xsl:value-of select="@type"/>
 
294
          <xsl:if test="position() != last()">, </xsl:if>
 
295
        </xsl:for-each> )
 
296
  </xsl:template>
 
297
 
 
298
  <xsl:template match="tp:mapping" mode="in-index">
 
299
    - a{ <xsl:for-each select="tp:member">
 
300
          <xsl:value-of select="@type"/>
 
301
          <xsl:if test="position() != last()"> &#x2192; </xsl:if>
 
302
        </xsl:for-each> }
 
303
  </xsl:template>
 
304
 
 
305
  <xsl:template match="tp:struct">
 
306
    <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
 
307
      <h3>
 
308
        <a name="type-{@name}">
 
309
          <xsl:value-of select="@name"/>
 
310
        </a> - (
 
311
        <xsl:for-each select="tp:member">
 
312
          <xsl:value-of select="@type"/>
 
313
          <xsl:text>: </xsl:text>
 
314
          <xsl:value-of select="@name"/>
 
315
          <xsl:if test="position() != last()">, </xsl:if>
 
316
        </xsl:for-each>
 
317
        )
 
318
      </h3>
 
319
      <div class="docstring">
 
320
        <xsl:apply-templates select="tp:docstring"/>
 
321
      </div>
 
322
      <xsl:choose>
 
323
        <xsl:when test="string(@array-name) != ''">
 
324
          <p>In bindings that need a separate name, arrays of
 
325
            <xsl:value-of select="@name"/> should be called
 
326
            <xsl:value-of select="@array-name"/>.</p>
 
327
        </xsl:when>
 
328
        <xsl:otherwise>
 
329
          <p>Arrays of <xsl:value-of select="@name"/> don't generally
 
330
            make sense.</p>
 
331
        </xsl:otherwise>
 
332
      </xsl:choose>
 
333
      <div>
 
334
        <h4>Members</h4>
 
335
        <dl>
 
336
          <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
 
337
        </dl>
 
338
      </div>
 
339
    </div>
 
340
  </xsl:template>
 
341
 
 
342
  <xsl:template match="method">
 
343
    <div xmlns="http://www.w3.org/1999/xhtml" class="method">
 
344
      <h3 xmlns="http://www.w3.org/1999/xhtml">
 
345
        <a name="{concat(../@name, concat('.', @name))}">
 
346
          <xsl:value-of select="@name"/>
 
347
        </a> (
 
348
        <xsl:for-each xmlns="" select="arg[@direction='in']">
 
349
          <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
 
350
          <xsl:if test="position() != last()">, </xsl:if>
 
351
        </xsl:for-each>
 
352
        ) &#x2192;
 
353
        <xsl:choose>
 
354
          <xsl:when test="arg[@direction='out']">
 
355
            <xsl:for-each xmlns="" select="arg[@direction='out']">
 
356
              <xsl:value-of select="@type"/>
 
357
              <xsl:if test="position() != last()">, </xsl:if>
 
358
            </xsl:for-each>
 
359
          </xsl:when>
 
360
          <xsl:otherwise>nothing</xsl:otherwise>
 
361
        </xsl:choose>
 
362
      </h3>
 
363
      <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
 
364
        <xsl:apply-templates select="tp:docstring" />
 
365
      </div>
 
366
 
 
367
      <xsl:if test="arg[@direction='in']">
 
368
        <div xmlns="http://www.w3.org/1999/xhtml">
 
369
          <h4>Parameters</h4>
 
370
          <dl xmlns="http://www.w3.org/1999/xhtml">
 
371
            <xsl:apply-templates select="arg[@direction='in']"
 
372
              mode="parameters-in-docstring"/>
 
373
          </dl>
 
374
        </div>
 
375
      </xsl:if>
 
376
 
 
377
      <xsl:if test="arg[@direction='out']">
 
378
        <div xmlns="http://www.w3.org/1999/xhtml">
 
379
          <h4>Returns</h4>
 
380
          <dl xmlns="http://www.w3.org/1999/xhtml">
 
381
            <xsl:apply-templates select="arg[@direction='out']"
 
382
              mode="returns-in-docstring"/>
 
383
          </dl>
 
384
        </div>
 
385
      </xsl:if>
 
386
 
 
387
      <xsl:if test="tp:possible-errors">
 
388
        <div xmlns="http://www.w3.org/1999/xhtml">
 
389
          <h4>Possible errors</h4>
 
390
          <dl xmlns="http://www.w3.org/1999/xhtml">
 
391
            <xsl:apply-templates select="tp:possible-errors/tp:error"/>
 
392
          </dl>
 
393
        </div>
 
394
      </xsl:if>
 
395
 
 
396
    </div>
 
397
  </xsl:template>
 
398
 
 
399
  <xsl:template name="parenthesized-tp-type">
 
400
    <xsl:if test="@tp:type">
 
401
      <xsl:variable name="tp-type" select="@tp:type"/>
 
402
      <xsl:variable name="single-type">
 
403
        <xsl:choose>
 
404
          <xsl:when test="contains($tp-type, '[]')">
 
405
            <xsl:value-of select="substring-before($tp-type, '[]')"/>
 
406
          </xsl:when>
 
407
          <xsl:otherwise>
 
408
            <xsl:value-of select="$tp-type"/>
 
409
          </xsl:otherwise>
 
410
        </xsl:choose>
 
411
      </xsl:variable>
 
412
      <xsl:choose>
 
413
        <xsl:when test="//tp:simple-type[@name=$tp-type]" />
 
414
        <xsl:when test="//tp:simple-type[concat(@name, '[]')=$tp-type]" />
 
415
        <xsl:when test="//tp:struct[concat(@name, '[]')=$tp-type][string(@array-name) != '']" />
 
416
        <xsl:when test="//tp:struct[@name=$tp-type]" />
 
417
        <xsl:when test="//tp:enum[@name=$tp-type]" />
 
418
        <xsl:when test="//tp:enum[concat(@name, '[]')=$tp-type]" />
 
419
        <xsl:when test="//tp:flags[@name=$tp-type]" />
 
420
        <xsl:when test="//tp:flags[concat(@name, '[]')=$tp-type]" />
 
421
        <xsl:when test="//tp:mapping[@name=$tp-type]" />
 
422
        <xsl:when test="//tp:external-type[concat(@name, '[]')=$tp-type]" />
 
423
        <xsl:when test="//tp:external-type[@name=$tp-type]" />
 
424
        <xsl:otherwise>
 
425
          <xsl:message terminate="yes">
 
426
            <xsl:text>ERR: Unable to find type '</xsl:text>
 
427
            <xsl:value-of select="$tp-type"/>
 
428
            <xsl:text>'&#10;</xsl:text>
 
429
          </xsl:message>
 
430
        </xsl:otherwise>
 
431
      </xsl:choose>
 
432
      (<a href="#type-{$single-type}"><xsl:value-of select="$tp-type"/></a>)
 
433
    </xsl:if>
 
434
  </xsl:template>
 
435
 
 
436
  <xsl:template match="tp:member" mode="members-in-docstring">
 
437
    <dt xmlns="http://www.w3.org/1999/xhtml">
 
438
      <code><xsl:value-of select="@name"/></code> -
 
439
      <code><xsl:value-of select="@type"/></code>
 
440
      <xsl:call-template name="parenthesized-tp-type"/>
 
441
    </dt>
 
442
    <dd xmlns="http://www.w3.org/1999/xhtml">
 
443
      <xsl:choose>
 
444
        <xsl:when test="tp:docstring">
 
445
          <xsl:apply-templates select="tp:docstring" />
 
446
        </xsl:when>
 
447
        <xsl:otherwise>
 
448
          <em>(undocumented)</em>
 
449
        </xsl:otherwise>
 
450
      </xsl:choose>
 
451
    </dd>
 
452
  </xsl:template>
 
453
 
 
454
  <xsl:template match="arg" mode="parameters-in-docstring">
 
455
    <dt xmlns="http://www.w3.org/1999/xhtml">
 
456
      <code><xsl:value-of select="@name"/></code> -
 
457
      <code><xsl:value-of select="@type"/></code>
 
458
      <xsl:call-template name="parenthesized-tp-type"/>
 
459
    </dt>
 
460
    <dd xmlns="http://www.w3.org/1999/xhtml">
 
461
      <xsl:apply-templates select="tp:docstring" />
 
462
    </dd>
 
463
  </xsl:template>
 
464
 
 
465
  <xsl:template match="arg" mode="returns-in-docstring">
 
466
    <dt xmlns="http://www.w3.org/1999/xhtml">
 
467
      <xsl:if test="@name">
 
468
        <code><xsl:value-of select="@name"/></code> -
 
469
      </xsl:if>
 
470
      <code><xsl:value-of select="@type"/></code>
 
471
      <xsl:call-template name="parenthesized-tp-type"/>
 
472
    </dt>
 
473
    <dd xmlns="http://www.w3.org/1999/xhtml">
 
474
      <xsl:apply-templates select="tp:docstring"/>
 
475
    </dd>
 
476
  </xsl:template>
 
477
 
 
478
  <xsl:template match="tp:possible-errors/tp:error">
 
479
    <dt xmlns="http://www.w3.org/1999/xhtml">
 
480
      <code><xsl:value-of select="@name"/></code>
 
481
    </dt>
 
482
    <dd xmlns="http://www.w3.org/1999/xhtml">
 
483
        <xsl:variable name="name" select="@name"/>
 
484
        <xsl:choose>
 
485
          <xsl:when test="tp:docstring">
 
486
            <xsl:apply-templates select="tp:docstring"/>
 
487
          </xsl:when>
 
488
          <xsl:when test="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring">
 
489
            <xsl:apply-templates select="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring"/> <em xmlns="http://www.w3.org/1999/xhtml">(generic description)</em>
 
490
          </xsl:when>
 
491
          <xsl:otherwise>
 
492
            (Undocumented.)
 
493
          </xsl:otherwise>
 
494
        </xsl:choose>
 
495
    </dd>
 
496
  </xsl:template>
 
497
 
 
498
  <xsl:template match="signal">
 
499
    <div xmlns="http://www.w3.org/1999/xhtml" class="signal">
 
500
      <h3 xmlns="http://www.w3.org/1999/xhtml">
 
501
        <a name="{concat(../@name, concat('.', @name))}">
 
502
          <xsl:value-of select="@name"/>
 
503
        </a> (
 
504
        <xsl:for-each xmlns="" select="arg">
 
505
          <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
 
506
          <xsl:if test="position() != last()">, </xsl:if>
 
507
        </xsl:for-each>
 
508
        )</h3>
 
509
      <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
 
510
        <xsl:apply-templates select="tp:docstring"/>
 
511
      </div>
 
512
 
 
513
      <xsl:if test="arg">
 
514
        <div xmlns="http://www.w3.org/1999/xhtml">
 
515
          <h4>Parameters</h4>
 
516
          <dl xmlns="http://www.w3.org/1999/xhtml">
 
517
            <xsl:apply-templates select="arg" mode="parameters-in-docstring"/>
 
518
          </dl>
 
519
        </div>
 
520
      </xsl:if>
 
521
    </div>
 
522
  </xsl:template>
 
523
 
 
524
  <xsl:output method="xml" indent="no" encoding="ascii"
 
525
    omit-xml-declaration="yes"
 
526
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
 
527
    doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
 
528
 
 
529
  <xsl:template match="/tp:spec">
 
530
    <html xmlns="http://www.w3.org/1999/xhtml">
 
531
      <head>
 
532
        <title>
 
533
          <xsl:value-of select="tp:title"/>
 
534
          <xsl:if test="tp:version">
 
535
            <xsl:text> version </xsl:text>
 
536
            <xsl:value-of select="tp:version"/>
 
537
          </xsl:if>
 
538
        </title>
 
539
        <style type="text/css">
 
540
 
 
541
          body {
 
542
            font-family: sans-serif;
 
543
            margin: 2em;
 
544
            height: 100%;
 
545
            font-size: 1.2em;
 
546
          }
 
547
          h1 {
 
548
            padding-top: 5px;
 
549
            padding-bottom: 5px;
 
550
            font-size: 1.6em;
 
551
            background: #dadae2;
 
552
          }
 
553
          h2 {
 
554
            font-size: 1.3em;
 
555
          }
 
556
          h3 {
 
557
            font-size: 1.2em;
 
558
          }
 
559
          a:link, a:visited, a:link:hover, a:visited:hover {
 
560
            font-weight: bold;
 
561
          }
 
562
          .topbox {
 
563
            padding-top: 10px;
 
564
            padding-left: 10px;
 
565
            border-bottom: black solid 1px;
 
566
            padding-bottom: 10px;
 
567
            background: #dadae2;
 
568
            font-size: 2em;
 
569
            font-weight: bold;
 
570
            color: #5c5c5c;
 
571
          }
 
572
          .topnavbox {
 
573
            padding-left: 10px;
 
574
            padding-top: 5px;
 
575
            padding-bottom: 5px;
 
576
            background: #abacba;
 
577
            border-bottom: black solid 1px;
 
578
            font-size: 1.2em;
 
579
          }
 
580
          .topnavbox a{
 
581
            color: black;
 
582
            font-weight: normal;
 
583
          }
 
584
          .sidebar {
 
585
            float: left;
 
586
            /* width:9em;
 
587
            border-right:#abacba solid 1px;
 
588
            border-left: #abacba solid 1px;
 
589
            height:100%; */
 
590
            border: #abacba solid 1px;
 
591
            padding-left: 10px;
 
592
            margin-left: 10px;
 
593
            padding-right: 10px;
 
594
            margin-right: 10px;
 
595
            color: #5d5d5d;
 
596
            background: #dadae2;
 
597
          }
 
598
          .sidebar a {
 
599
            text-decoration: none;
 
600
            border-bottom: #e29625 dotted 1px;
 
601
            color: #e29625;
 
602
            font-weight: normal;
 
603
          }
 
604
          .sidebar h1 {
 
605
            font-size: 1.2em;
 
606
            color: black;
 
607
          }
 
608
          .sidebar ul {
 
609
            padding-left: 25px;
 
610
            padding-bottom: 10px;
 
611
            border-bottom: #abacba solid 1px;
 
612
          }
 
613
          .sidebar li {
 
614
            padding-top: 2px;
 
615
            padding-bottom: 2px;
 
616
          }
 
617
          .sidebar h2 {
 
618
            font-style:italic;
 
619
            font-size: 0.81em;
 
620
            padding-left: 5px;
 
621
            padding-right: 5px;
 
622
            font-weight: normal;
 
623
          }
 
624
          .date {
 
625
            font-size: 0.6em;
 
626
            float: right;
 
627
            font-style: italic;
 
628
          }
 
629
          .method {
 
630
            margin-left: 1em;
 
631
            margin-right: 4em;
 
632
          }
 
633
          .signal {
 
634
            margin-left: 1em;
 
635
            margin-right: 4em;
 
636
          }
 
637
 
 
638
        </style>
 
639
      </head>
 
640
      <body>
 
641
        <h1 class="topbox">
 
642
          <xsl:value-of select="tp:title" />
 
643
        </h1>
 
644
        <xsl:if test="tp:version">
 
645
          <h2>Version <xsl:apply-templates select="tp:version"/></h2>
 
646
        </xsl:if>
 
647
        <xsl:apply-templates select="tp:copyright"/>
 
648
        <xsl:apply-templates select="tp:license"/>
 
649
        <xsl:apply-templates select="tp:docstring"/>
 
650
 
 
651
        <h2>Interfaces</h2>
 
652
        <ul>
 
653
        <xsl:for-each select="node/interface">
 
654
            <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
 
655
          </xsl:for-each>
 
656
        </ul>
 
657
 
 
658
        <xsl:apply-templates select="node"/>
 
659
        <xsl:apply-templates select="tp:generic-types"/>
 
660
        <xsl:apply-templates select="tp:errors"/>
 
661
 
 
662
        <h1>Index</h1>
 
663
        <h2>Index of interfaces</h2>
 
664
        <ul>
 
665
        <xsl:for-each select="node/interface">
 
666
            <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
 
667
          </xsl:for-each>
 
668
        </ul>
 
669
        <h2>Index of types</h2>
 
670
        <ul>
 
671
          <xsl:for-each select="//tp:simple-type | //tp:enum | //tp:flags | //tp:mapping | //tp:struct | //tp:external-type">
 
672
            <xsl:sort select="@name"/>
 
673
            <li>
 
674
              <code>
 
675
                <a href="#type-{@name}">
 
676
                  <xsl:value-of select="@name"/>
 
677
                </a>
 
678
              </code>
 
679
              <xsl:apply-templates mode="in-index" select="."/>
 
680
            </li>
 
681
          </xsl:for-each>
 
682
        </ul>
 
683
      </body>
 
684
    </html>
 
685
  </xsl:template>
 
686
 
 
687
</xsl:stylesheet>
 
688
 
 
689
<!-- vim:set sw=2 sts=2 et: -->