~bcurtiswx/ubuntu/precise/empathy/3.4.2.1-0ubuntu1

« back to all changes in this revision

Viewing changes to telepathy-yell/tools/doc-generator.xsl

  • Committer: Package Import Robot
  • Author(s): Ken VanDine
  • Date: 2012-03-05 15:14:36 UTC
  • mfrom: (1.1.87)
  • Revision ID: package-import@ubuntu.com-20120305151436-utnrdabb2ppp3kw1
Tags: 3.3.90.2-0ubuntu1
* New upstream release
* debian/control
  - added yelp-tools and libfarstream-0.1-dev build depends
  - bump build depends on libtelepathy-farstream-dev, and 
    libtelepathy-glib-dev
  - bumpded depends for telepathy-mission-control-5
  - removed telepathy-butterfly recommends, mission-control-5 ensures 
    telepathy-haze handles MSN now.
* debian/rules
  - enable empathy-av 

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-2008 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
 
Lesser 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  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
 
  xmlns:html="http://www.w3.org/1999/xhtml"
25
 
  exclude-result-prefixes="tp html">
26
 
  <!--Don't move the declaration of the HTML namespace up here — XMLNSs
27
 
  don't work ideally in the presence of two things that want to use the
28
 
  absence of a prefix, sadly. -->
29
 
 
30
 
  <xsl:param name="allow-undefined-interfaces" select="false()"/>
31
 
 
32
 
  <xsl:template match="html:* | @*" mode="html">
33
 
    <xsl:copy>
34
 
      <xsl:apply-templates mode="html"/>
35
 
    </xsl:copy>
36
 
  </xsl:template>
37
 
 
38
 
  <xsl:template match="tp:type" mode="html">
39
 
    <xsl:call-template name="tp-type">
40
 
      <xsl:with-param name="tp-type" select="string(.)"/>
41
 
    </xsl:call-template>
42
 
  </xsl:template>
43
 
 
44
 
  <!-- tp:dbus-ref: reference a D-Bus interface, signal, method or property -->
45
 
  <xsl:template match="tp:dbus-ref" mode="html">
46
 
    <xsl:variable name="name">
47
 
      <xsl:choose>
48
 
        <xsl:when test="@namespace">
49
 
          <xsl:value-of select="@namespace"/>
50
 
          <xsl:text>.</xsl:text>
51
 
        </xsl:when>
52
 
      </xsl:choose>
53
 
      <xsl:value-of select="string(.)"/>
54
 
    </xsl:variable>
55
 
 
56
 
    <xsl:choose>
57
 
      <xsl:when test="//interface[@name=$name]
58
 
        or //interface/method[concat(../@name, '.', @name)=$name]
59
 
        or //interface/signal[concat(../@name, '.', @name)=$name]
60
 
        or //interface/property[concat(../@name, '.', @name)=$name]
61
 
        or //interface[@name=concat($name, '.DRAFT')]
62
 
        or //interface/method[
63
 
          concat(../@name, '.', @name)=concat($name, '.DRAFT')]
64
 
        or //interface/signal[
65
 
          concat(../@name, '.', @name)=concat($name, '.DRAFT')]
66
 
        or //interface/property[
67
 
          concat(../@name, '.', @name)=concat($name, '.DRAFT')]
68
 
        ">
69
 
        <a xmlns="http://www.w3.org/1999/xhtml" href="#{$name}">
70
 
          <xsl:value-of select="string(.)"/>
71
 
        </a>
72
 
      </xsl:when>
73
 
 
74
 
      <xsl:when test="$allow-undefined-interfaces">
75
 
        <span xmlns="http://www.w3.org/1999/xhtml" title="defined elsewhere">
76
 
          <xsl:value-of select="string(.)"/>
77
 
        </span>
78
 
      </xsl:when>
79
 
 
80
 
      <xsl:otherwise>
81
 
        <xsl:message terminate="yes">
82
 
          <xsl:text>ERR: cannot find D-Bus interface, method, </xsl:text>
83
 
          <xsl:text>signal or property called '</xsl:text>
84
 
          <xsl:value-of select="$name"/>
85
 
          <xsl:text>'&#10;</xsl:text>
86
 
        </xsl:message>
87
 
      </xsl:otherwise>
88
 
    </xsl:choose>
89
 
  </xsl:template>
90
 
 
91
 
  <!-- tp:member-ref: reference a property of the current interface -->
92
 
  <xsl:template match="tp:member-ref" mode="html">
93
 
    <xsl:variable name="prefix" select="concat(ancestor::interface/@name,
94
 
      '.')"/>
95
 
    <xsl:variable name="name" select="string(.)"/>
96
 
 
97
 
    <xsl:if test="not(ancestor::interface)">
98
 
      <xsl:message terminate="yes">
99
 
        <xsl:text>ERR: Cannot use tp:member-ref when not in an</xsl:text>
100
 
        <xsl:text> &lt;interface&gt;&#10;</xsl:text>
101
 
      </xsl:message>
102
 
    </xsl:if>
103
 
 
104
 
    <xsl:choose>
105
 
      <xsl:when test="ancestor::interface/signal[@name=$name]"/>
106
 
      <xsl:when test="ancestor::interface/method[@name=$name]"/>
107
 
      <xsl:when test="ancestor::interface/property[@name=$name]"/>
108
 
      <xsl:otherwise>
109
 
        <xsl:message terminate="yes">
110
 
          <xsl:text>ERR: interface </xsl:text>
111
 
          <xsl:value-of select="ancestor::interface/@name"/>
112
 
          <xsl:text> has no signal/method/property called </xsl:text>
113
 
          <xsl:value-of select="$name"/>
114
 
          <xsl:text>&#10;</xsl:text>
115
 
        </xsl:message>
116
 
      </xsl:otherwise>
117
 
    </xsl:choose>
118
 
 
119
 
    <a xmlns="http://www.w3.org/1999/xhtml" href="#{$prefix}{$name}">
120
 
      <xsl:value-of select="$name"/>
121
 
    </a>
122
 
  </xsl:template>
123
 
 
124
 
  <xsl:template match="*" mode="identity">
125
 
    <xsl:copy>
126
 
      <xsl:apply-templates mode="identity"/>
127
 
    </xsl:copy>
128
 
  </xsl:template>
129
 
 
130
 
  <xsl:template match="tp:docstring">
131
 
    <xsl:apply-templates mode="html"/>
132
 
  </xsl:template>
133
 
 
134
 
  <xsl:template match="tp:added">
135
 
    <p class="added" xmlns="http://www.w3.org/1999/xhtml">Added in
136
 
      version <xsl:value-of select="@version"/>.
137
 
      <xsl:apply-templates select="node()" mode="html"/></p>
138
 
  </xsl:template>
139
 
 
140
 
  <xsl:template match="tp:changed">
141
 
    <xsl:choose>
142
 
      <xsl:when test="node()">
143
 
        <p class="changed" xmlns="http://www.w3.org/1999/xhtml">Changed in
144
 
          version <xsl:value-of select="@version"/>:
145
 
          <xsl:apply-templates select="node()" mode="html"/></p>
146
 
      </xsl:when>
147
 
      <xsl:otherwise>
148
 
        <p class="changed">Changed in version
149
 
          <xsl:value-of select="@version"/></p>
150
 
      </xsl:otherwise>
151
 
    </xsl:choose>
152
 
  </xsl:template>
153
 
 
154
 
  <xsl:template match="tp:deprecated">
155
 
    <p class="deprecated" xmlns="http://www.w3.org/1999/xhtml">Deprecated
156
 
      since version <xsl:value-of select="@version"/>.
157
 
      <xsl:apply-templates select="node()" mode="html"/></p>
158
 
  </xsl:template>
159
 
 
160
 
  <xsl:template match="tp:rationale" mode="html">
161
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="rationale">
162
 
      <xsl:apply-templates select="node()" mode="html"/>
163
 
    </div>
164
 
  </xsl:template>
165
 
 
166
 
  <xsl:template match="tp:errors">
167
 
    <h1 xmlns="http://www.w3.org/1999/xhtml">Errors</h1>
168
 
    <xsl:apply-templates/>
169
 
  </xsl:template>
170
 
 
171
 
  <xsl:template match="tp:generic-types">
172
 
    <h1 xmlns="http://www.w3.org/1999/xhtml">Generic types</h1>
173
 
    <xsl:call-template name="do-types"/>
174
 
  </xsl:template>
175
 
 
176
 
  <xsl:template name="do-types">
177
 
    <xsl:if test="tp:simple-type">
178
 
      <h2 xmlns="http://www.w3.org/1999/xhtml">Simple types</h2>
179
 
      <xsl:apply-templates select="tp:simple-type"/>
180
 
    </xsl:if>
181
 
 
182
 
    <xsl:if test="tp:enum">
183
 
      <h2 xmlns="http://www.w3.org/1999/xhtml">Enumerated types:</h2>
184
 
      <xsl:apply-templates select="tp:enum"/>
185
 
    </xsl:if>
186
 
 
187
 
    <xsl:if test="tp:flags">
188
 
      <h2 xmlns="http://www.w3.org/1999/xhtml">Sets of flags:</h2>
189
 
      <xsl:apply-templates select="tp:flags"/>
190
 
    </xsl:if>
191
 
 
192
 
    <xsl:if test="tp:struct">
193
 
      <h2 xmlns="http://www.w3.org/1999/xhtml">Structure types</h2>
194
 
      <xsl:apply-templates select="tp:struct"/>
195
 
    </xsl:if>
196
 
 
197
 
    <xsl:if test="tp:mapping">
198
 
      <h2 xmlns="http://www.w3.org/1999/xhtml">Mapping types</h2>
199
 
      <xsl:apply-templates select="tp:mapping"/>
200
 
    </xsl:if>
201
 
 
202
 
    <xsl:if test="tp:external-type">
203
 
      <h2 xmlns="http://www.w3.org/1999/xhtml">Types defined elsewhere</h2>
204
 
      <dl><xsl:apply-templates select="tp:external-type"/></dl>
205
 
    </xsl:if>
206
 
  </xsl:template>
207
 
 
208
 
  <xsl:template match="tp:error">
209
 
    <h2 xmlns="http://www.w3.org/1999/xhtml"><a name="{concat(../@namespace, '.', translate(@name, ' ', ''))}"></a><xsl:value-of select="concat(../@namespace, '.', translate(@name, ' ', ''))"/></h2>
210
 
    <xsl:apply-templates select="tp:docstring"/>
211
 
    <xsl:apply-templates select="tp:added"/>
212
 
    <xsl:apply-templates select="tp:changed"/>
213
 
    <xsl:apply-templates select="tp:deprecated"/>
214
 
  </xsl:template>
215
 
 
216
 
  <xsl:template match="/tp:spec/tp:copyright">
217
 
    <div xmlns="http://www.w3.org/1999/xhtml">
218
 
      <xsl:apply-templates mode="text"/>
219
 
    </div>
220
 
  </xsl:template>
221
 
  <xsl:template match="/tp:spec/tp:license">
222
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="license">
223
 
      <xsl:apply-templates mode="html"/>
224
 
    </div>
225
 
  </xsl:template>
226
 
 
227
 
  <xsl:template match="tp:copyright"/>
228
 
  <xsl:template match="tp:license"/>
229
 
 
230
 
  <xsl:template match="interface">
231
 
    <h1 xmlns="http://www.w3.org/1999/xhtml"><a name="{@name}"></a><xsl:value-of select="@name"/></h1>
232
 
 
233
 
    <xsl:if test="@tp:causes-havoc">
234
 
      <p xmlns="http://www.w3.org/1999/xhtml" class="causes-havoc">
235
 
        This interface is <xsl:value-of select="@tp:causes-havoc"/>
236
 
        and is likely to cause havoc to your API/ABI if bindings are generated.
237
 
        Don't include it in libraries that care about compatibility.
238
 
      </p>
239
 
    </xsl:if>
240
 
 
241
 
    <xsl:if test="tp:requires">
242
 
      <p>Implementations of this interface must also implement:</p>
243
 
      <ul xmlns="http://www.w3.org/1999/xhtml">
244
 
        <xsl:for-each select="tp:requires">
245
 
          <li><code><a href="#{@interface}"><xsl:value-of select="@interface"/></a></code></li>
246
 
        </xsl:for-each>
247
 
      </ul>
248
 
    </xsl:if>
249
 
 
250
 
    <xsl:apply-templates select="tp:docstring" />
251
 
    <xsl:apply-templates select="tp:added"/>
252
 
    <xsl:apply-templates select="tp:changed"/>
253
 
    <xsl:apply-templates select="tp:deprecated"/>
254
 
 
255
 
    <xsl:choose>
256
 
      <xsl:when test="method">
257
 
        <h2 xmlns="http://www.w3.org/1999/xhtml">Methods:</h2>
258
 
        <xsl:apply-templates select="method"/>
259
 
      </xsl:when>
260
 
      <xsl:otherwise>
261
 
        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no methods.</p>
262
 
      </xsl:otherwise>
263
 
    </xsl:choose>
264
 
 
265
 
    <xsl:choose>
266
 
      <xsl:when test="signal">
267
 
        <h2 xmlns="http://www.w3.org/1999/xhtml">Signals:</h2>
268
 
        <xsl:apply-templates select="signal"/>
269
 
      </xsl:when>
270
 
      <xsl:otherwise>
271
 
        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no signals.</p>
272
 
      </xsl:otherwise>
273
 
    </xsl:choose>
274
 
 
275
 
    <xsl:choose>
276
 
      <xsl:when test="tp:property">
277
 
        <h2 xmlns="http://www.w3.org/1999/xhtml">Telepathy Properties:</h2>
278
 
        <p xmlns="http://www.w3.org/1999/xhtml">Accessed using the
279
 
          <a href="#org.freedesktop.Telepathy.Properties">Telepathy
280
 
            Properties</a> interface.</p>
281
 
        <dl xmlns="http://www.w3.org/1999/xhtml">
282
 
          <xsl:apply-templates select="tp:property"/>
283
 
        </dl>
284
 
      </xsl:when>
285
 
      <xsl:otherwise>
286
 
        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no Telepathy
287
 
          properties.</p>
288
 
      </xsl:otherwise>
289
 
    </xsl:choose>
290
 
 
291
 
    <xsl:choose>
292
 
      <xsl:when test="property">
293
 
        <h2 xmlns="http://www.w3.org/1999/xhtml">D-Bus core Properties:</h2>
294
 
        <p xmlns="http://www.w3.org/1999/xhtml">Accessed using the
295
 
          org.freedesktop.DBus.Properties interface.</p>
296
 
        <dl xmlns="http://www.w3.org/1999/xhtml">
297
 
          <xsl:apply-templates select="property"/>
298
 
        </dl>
299
 
      </xsl:when>
300
 
      <xsl:otherwise>
301
 
        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no D-Bus core
302
 
          properties.</p>
303
 
      </xsl:otherwise>
304
 
    </xsl:choose>
305
 
 
306
 
    <xsl:call-template name="do-types"/>
307
 
 
308
 
  </xsl:template>
309
 
 
310
 
  <xsl:template match="tp:flags">
311
 
 
312
 
    <xsl:if test="not(@name) or @name = ''">
313
 
      <xsl:message terminate="yes">
314
 
        <xsl:text>ERR: missing @name on a tp:flags type&#10;</xsl:text>
315
 
      </xsl:message>
316
 
    </xsl:if>
317
 
 
318
 
    <xsl:if test="not(@type) or @type = ''">
319
 
      <xsl:message terminate="yes">
320
 
        <xsl:text>ERR: missing @type on tp:flags type</xsl:text>
321
 
        <xsl:value-of select="@name"/>
322
 
        <xsl:text>&#10;</xsl:text>
323
 
      </xsl:message>
324
 
    </xsl:if>
325
 
 
326
 
    <h3>
327
 
      <a name="type-{@name}">
328
 
        <xsl:value-of select="@name"/>
329
 
      </a>
330
 
    </h3>
331
 
    <xsl:apply-templates select="tp:docstring" />
332
 
    <xsl:apply-templates select="tp:added"/>
333
 
    <xsl:apply-templates select="tp:changed"/>
334
 
    <xsl:apply-templates select="tp:deprecated"/>
335
 
    <dl xmlns="http://www.w3.org/1999/xhtml">
336
 
        <xsl:variable name="value-prefix">
337
 
          <xsl:choose>
338
 
            <xsl:when test="@value-prefix">
339
 
              <xsl:value-of select="@value-prefix"/>
340
 
            </xsl:when>
341
 
            <xsl:otherwise>
342
 
              <xsl:value-of select="@name"/>
343
 
            </xsl:otherwise>
344
 
          </xsl:choose>
345
 
        </xsl:variable>
346
 
      <xsl:for-each select="tp:flag">
347
 
        <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
348
 
        <xsl:choose>
349
 
          <xsl:when test="tp:docstring">
350
 
            <dd xmlns="http://www.w3.org/1999/xhtml">
351
 
              <xsl:apply-templates select="tp:docstring" />
352
 
              <xsl:apply-templates select="tp:added"/>
353
 
              <xsl:apply-templates select="tp:changed"/>
354
 
              <xsl:apply-templates select="tp:deprecated"/>
355
 
            </dd>
356
 
          </xsl:when>
357
 
          <xsl:otherwise>
358
 
            <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
359
 
          </xsl:otherwise>
360
 
        </xsl:choose>
361
 
      </xsl:for-each>
362
 
    </dl>
363
 
  </xsl:template>
364
 
 
365
 
  <xsl:template match="tp:enum">
366
 
 
367
 
    <xsl:if test="not(@name) or @name = ''">
368
 
      <xsl:message terminate="yes">
369
 
        <xsl:text>ERR: missing @name on a tp:enum type&#10;</xsl:text>
370
 
      </xsl:message>
371
 
    </xsl:if>
372
 
 
373
 
    <xsl:if test="not(@type) or @type = ''">
374
 
      <xsl:message terminate="yes">
375
 
        <xsl:text>ERR: missing @type on tp:enum type</xsl:text>
376
 
        <xsl:value-of select="@name"/>
377
 
        <xsl:text>&#10;</xsl:text>
378
 
      </xsl:message>
379
 
    </xsl:if>
380
 
 
381
 
    <h3 xmlns="http://www.w3.org/1999/xhtml">
382
 
      <a name="type-{@name}">
383
 
        <xsl:value-of select="@name"/>
384
 
      </a>
385
 
    </h3>
386
 
    <xsl:apply-templates select="tp:docstring" />
387
 
    <xsl:apply-templates select="tp:added"/>
388
 
    <xsl:apply-templates select="tp:changed"/>
389
 
    <xsl:apply-templates select="tp:deprecated"/>
390
 
    <dl xmlns="http://www.w3.org/1999/xhtml">
391
 
        <xsl:variable name="value-prefix">
392
 
          <xsl:choose>
393
 
            <xsl:when test="@value-prefix">
394
 
              <xsl:value-of select="@value-prefix"/>
395
 
            </xsl:when>
396
 
            <xsl:otherwise>
397
 
              <xsl:value-of select="@name"/>
398
 
            </xsl:otherwise>
399
 
          </xsl:choose>
400
 
        </xsl:variable>
401
 
      <xsl:for-each select="tp:enumvalue">
402
 
        <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
403
 
        <xsl:choose>
404
 
          <xsl:when test="tp:docstring">
405
 
            <dd xmlns="http://www.w3.org/1999/xhtml">
406
 
              <xsl:apply-templates select="tp:docstring" />
407
 
              <xsl:apply-templates select="tp:added"/>
408
 
              <xsl:apply-templates select="tp:changed"/>
409
 
              <xsl:apply-templates select="tp:deprecated"/>
410
 
            </dd>
411
 
          </xsl:when>
412
 
          <xsl:otherwise>
413
 
            <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
414
 
          </xsl:otherwise>
415
 
        </xsl:choose>
416
 
      </xsl:for-each>
417
 
    </dl>
418
 
  </xsl:template>
419
 
 
420
 
  <xsl:template match="property">
421
 
 
422
 
    <xsl:if test="not(parent::interface)">
423
 
      <xsl:message terminate="yes">
424
 
        <xsl:text>ERR: property </xsl:text>
425
 
        <xsl:value-of select="@name"/>
426
 
        <xsl:text> does not have an interface as parent&#10;</xsl:text>
427
 
      </xsl:message>
428
 
    </xsl:if>
429
 
 
430
 
    <xsl:if test="not(@name) or @name = ''">
431
 
      <xsl:message terminate="yes">
432
 
        <xsl:text>ERR: missing @name on a property of </xsl:text>
433
 
        <xsl:value-of select="../@name"/>
434
 
        <xsl:text>&#10;</xsl:text>
435
 
      </xsl:message>
436
 
    </xsl:if>
437
 
 
438
 
    <xsl:if test="not(@type) or @type = ''">
439
 
      <xsl:message terminate="yes">
440
 
        <xsl:text>ERR: missing @type on property </xsl:text>
441
 
        <xsl:value-of select="concat(../@name, '.', @name)"/>
442
 
        <xsl:text>: '</xsl:text>
443
 
        <xsl:value-of select="@access"/>
444
 
        <xsl:text>'&#10;</xsl:text>
445
 
      </xsl:message>
446
 
    </xsl:if>
447
 
 
448
 
    <dt xmlns="http://www.w3.org/1999/xhtml">
449
 
      <a name="{concat(../@name, '.', @name)}">
450
 
        <code><xsl:value-of select="@name"/></code>
451
 
      </a>
452
 
      <xsl:text> − </xsl:text>
453
 
      <code><xsl:value-of select="@type"/></code>
454
 
      <xsl:call-template name="parenthesized-tp-type"/>
455
 
      <xsl:text>, </xsl:text>
456
 
      <xsl:choose>
457
 
        <xsl:when test="@access = 'read'">
458
 
          <xsl:text>read-only</xsl:text>
459
 
        </xsl:when>
460
 
        <xsl:when test="@access = 'write'">
461
 
          <xsl:text>write-only</xsl:text>
462
 
        </xsl:when>
463
 
        <xsl:when test="@access = 'readwrite'">
464
 
          <xsl:text>read/write</xsl:text>
465
 
        </xsl:when>
466
 
        <xsl:otherwise>
467
 
          <xsl:message terminate="yes">
468
 
            <xsl:text>ERR: unknown or missing value for </xsl:text>
469
 
            <xsl:text>@access on property </xsl:text>
470
 
            <xsl:value-of select="concat(../@name, '.', @name)"/>
471
 
            <xsl:text>: '</xsl:text>
472
 
            <xsl:value-of select="@access"/>
473
 
            <xsl:text>'&#10;</xsl:text>
474
 
          </xsl:message>
475
 
        </xsl:otherwise>
476
 
      </xsl:choose>
477
 
    </dt>
478
 
    <dd xmlns="http://www.w3.org/1999/xhtml">
479
 
      <xsl:apply-templates select="tp:docstring"/>
480
 
      <xsl:apply-templates select="tp:added"/>
481
 
      <xsl:apply-templates select="tp:changed"/>
482
 
      <xsl:apply-templates select="tp:deprecated"/>
483
 
    </dd>
484
 
  </xsl:template>
485
 
 
486
 
  <xsl:template match="tp:property">
487
 
    <dt xmlns="http://www.w3.org/1999/xhtml">
488
 
      <xsl:if test="@name">
489
 
        <code><xsl:value-of select="@name"/></code> −
490
 
      </xsl:if>
491
 
      <code><xsl:value-of select="@type"/></code>
492
 
    </dt>
493
 
    <dd xmlns="http://www.w3.org/1999/xhtml">
494
 
      <xsl:apply-templates select="tp:docstring"/>
495
 
      <xsl:apply-templates select="tp:added"/>
496
 
      <xsl:apply-templates select="tp:changed"/>
497
 
      <xsl:apply-templates select="tp:deprecated"/>
498
 
    </dd>
499
 
  </xsl:template>
500
 
 
501
 
  <xsl:template match="tp:mapping">
502
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
503
 
      <h3>
504
 
        <a name="type-{@name}">
505
 
          <xsl:value-of select="@name"/>
506
 
        </a> − a{
507
 
        <xsl:for-each select="tp:member">
508
 
          <xsl:value-of select="@type"/>
509
 
          <xsl:text>: </xsl:text>
510
 
          <xsl:value-of select="@name"/>
511
 
          <xsl:if test="position() != last()"> &#x2192; </xsl:if>
512
 
        </xsl:for-each>
513
 
        }
514
 
      </h3>
515
 
      <div class="docstring">
516
 
        <xsl:apply-templates select="tp:docstring"/>
517
 
        <xsl:if test="string(@array-name) != ''">
518
 
          <p>In bindings that need a separate name, arrays of
519
 
            <xsl:value-of select="@name"/> should be called
520
 
            <xsl:value-of select="@array-name"/>.</p>
521
 
        </xsl:if>
522
 
      </div>
523
 
      <div>
524
 
        <h4>Members</h4>
525
 
        <dl>
526
 
          <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
527
 
        </dl>
528
 
      </div>
529
 
    </div>
530
 
  </xsl:template>
531
 
 
532
 
  <xsl:template match="tp:docstring" mode="in-index"/>
533
 
 
534
 
  <xsl:template match="tp:simple-type | tp:enum | tp:flags | tp:external-type"
535
 
    mode="in-index">
536
 
    − <xsl:value-of select="@type"/>
537
 
  </xsl:template>
538
 
 
539
 
  <xsl:template match="tp:simple-type">
540
 
 
541
 
    <xsl:if test="not(@name) or @name = ''">
542
 
      <xsl:message terminate="yes">
543
 
        <xsl:text>ERR: missing @name on a tp:simple-type&#10;</xsl:text>
544
 
      </xsl:message>
545
 
    </xsl:if>
546
 
 
547
 
    <xsl:if test="not(@type) or @type = ''">
548
 
      <xsl:message terminate="yes">
549
 
        <xsl:text>ERR: missing @type on tp:simple-type</xsl:text>
550
 
        <xsl:value-of select="@name"/>
551
 
        <xsl:text>&#10;</xsl:text>
552
 
      </xsl:message>
553
 
    </xsl:if>
554
 
 
555
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="simple-type">
556
 
      <h3>
557
 
        <a name="type-{@name}">
558
 
          <xsl:value-of select="@name"/>
559
 
        </a> − <xsl:value-of select="@type"/>
560
 
      </h3>
561
 
      <div class="docstring">
562
 
        <xsl:apply-templates select="tp:docstring"/>
563
 
        <xsl:apply-templates select="tp:added"/>
564
 
        <xsl:apply-templates select="tp:changed"/>
565
 
        <xsl:apply-templates select="tp:deprecated"/>
566
 
      </div>
567
 
    </div>
568
 
  </xsl:template>
569
 
 
570
 
  <xsl:template match="tp:external-type">
571
 
 
572
 
    <xsl:if test="not(@name) or @name = ''">
573
 
      <xsl:message terminate="yes">
574
 
        <xsl:text>ERR: missing @name on a tp:external-type&#10;</xsl:text>
575
 
      </xsl:message>
576
 
    </xsl:if>
577
 
 
578
 
    <xsl:if test="not(@type) or @type = ''">
579
 
      <xsl:message terminate="yes">
580
 
        <xsl:text>ERR: missing @type on tp:external-type</xsl:text>
581
 
        <xsl:value-of select="@name"/>
582
 
        <xsl:text>&#10;</xsl:text>
583
 
      </xsl:message>
584
 
    </xsl:if>
585
 
 
586
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="external-type">
587
 
      <dt>
588
 
        <a name="type-{@name}">
589
 
          <xsl:value-of select="@name"/>
590
 
        </a> − <xsl:value-of select="@type"/>
591
 
      </dt>
592
 
      <dd>Defined by: <xsl:value-of select="@from"/></dd>
593
 
    </div>
594
 
  </xsl:template>
595
 
 
596
 
  <xsl:template match="tp:struct" mode="in-index">
597
 
    − ( <xsl:for-each select="tp:member">
598
 
          <xsl:value-of select="@type"/>
599
 
          <xsl:if test="position() != last()">, </xsl:if>
600
 
        </xsl:for-each> )
601
 
  </xsl:template>
602
 
 
603
 
  <xsl:template match="tp:mapping" mode="in-index">
604
 
    − a{ <xsl:for-each select="tp:member">
605
 
          <xsl:value-of select="@type"/>
606
 
          <xsl:if test="position() != last()"> &#x2192; </xsl:if>
607
 
        </xsl:for-each> }
608
 
  </xsl:template>
609
 
 
610
 
  <xsl:template match="tp:struct">
611
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
612
 
      <h3>
613
 
        <a name="type-{@name}">
614
 
          <xsl:value-of select="@name"/>
615
 
        </a> − (
616
 
        <xsl:for-each select="tp:member">
617
 
          <xsl:value-of select="@type"/>
618
 
          <xsl:text>: </xsl:text>
619
 
          <xsl:value-of select="@name"/>
620
 
          <xsl:if test="position() != last()">, </xsl:if>
621
 
        </xsl:for-each>
622
 
        )
623
 
      </h3>
624
 
      <div class="docstring">
625
 
        <xsl:apply-templates select="tp:docstring"/>
626
 
        <xsl:apply-templates select="tp:added"/>
627
 
        <xsl:apply-templates select="tp:changed"/>
628
 
        <xsl:apply-templates select="tp:deprecated"/>
629
 
      </div>
630
 
      <xsl:choose>
631
 
        <xsl:when test="string(@array-name) != ''">
632
 
          <p>In bindings that need a separate name, arrays of
633
 
            <xsl:value-of select="@name"/> should be called
634
 
            <xsl:value-of select="@array-name"/>.</p>
635
 
        </xsl:when>
636
 
        <xsl:otherwise>
637
 
          <p>Arrays of <xsl:value-of select="@name"/> don't generally
638
 
            make sense.</p>
639
 
        </xsl:otherwise>
640
 
      </xsl:choose>
641
 
      <div>
642
 
        <h4>Members</h4>
643
 
        <dl>
644
 
          <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
645
 
        </dl>
646
 
      </div>
647
 
    </div>
648
 
  </xsl:template>
649
 
 
650
 
  <xsl:template match="method">
651
 
 
652
 
    <xsl:if test="not(parent::interface)">
653
 
      <xsl:message terminate="yes">
654
 
        <xsl:text>ERR: method </xsl:text>
655
 
        <xsl:value-of select="@name"/>
656
 
        <xsl:text> does not have an interface as parent&#10;</xsl:text>
657
 
      </xsl:message>
658
 
    </xsl:if>
659
 
 
660
 
    <xsl:if test="not(@name) or @name = ''">
661
 
      <xsl:message terminate="yes">
662
 
        <xsl:text>ERR: missing @name on a method of </xsl:text>
663
 
        <xsl:value-of select="../@name"/>
664
 
        <xsl:text>&#10;</xsl:text>
665
 
      </xsl:message>
666
 
    </xsl:if>
667
 
 
668
 
    <xsl:for-each select="arg">
669
 
      <xsl:if test="not(@type) or @type = ''">
670
 
        <xsl:message terminate="yes">
671
 
          <xsl:text>ERR: an arg of method </xsl:text>
672
 
          <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
673
 
          <xsl:text> has no type</xsl:text>
674
 
        </xsl:message>
675
 
      </xsl:if>
676
 
      <xsl:choose>
677
 
        <xsl:when test="@direction='in'">
678
 
          <xsl:if test="not(@name) or @name = ''">
679
 
            <xsl:message terminate="yes">
680
 
              <xsl:text>ERR: an 'in' arg of method </xsl:text>
681
 
              <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
682
 
              <xsl:text> has no name</xsl:text>
683
 
            </xsl:message>
684
 
          </xsl:if>
685
 
        </xsl:when>
686
 
        <xsl:when test="@direction='out'">
687
 
          <!-- FIXME: This is commented out until someone with a lot of time
688
 
          on their hands goes through the spec adding names to all the "out"
689
 
          arguments
690
 
 
691
 
          <xsl:if test="not(@name) or @name = ''">
692
 
            <xsl:message terminate="no">
693
 
              <xsl:text>INFO: an 'out' arg of method </xsl:text>
694
 
              <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
695
 
              <xsl:text> has no name</xsl:text>
696
 
            </xsl:message>
697
 
          </xsl:if>-->
698
 
        </xsl:when>
699
 
        <xsl:otherwise>
700
 
          <xsl:message terminate="yes">
701
 
            <xsl:text>ERR: an arg of method </xsl:text>
702
 
            <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
703
 
            <xsl:text> has direction neither 'in' nor 'out'</xsl:text>
704
 
          </xsl:message>
705
 
        </xsl:otherwise>
706
 
      </xsl:choose>
707
 
    </xsl:for-each>
708
 
 
709
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="method">
710
 
      <h3 xmlns="http://www.w3.org/1999/xhtml">
711
 
        <a name="{concat(../@name, concat('.', @name))}">
712
 
          <xsl:value-of select="@name"/>
713
 
        </a> (
714
 
        <xsl:for-each xmlns="" select="arg[@direction='in']">
715
 
          <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
716
 
          <xsl:if test="position() != last()">, </xsl:if>
717
 
        </xsl:for-each>
718
 
        ) &#x2192;
719
 
        <xsl:choose>
720
 
          <xsl:when test="arg[@direction='out']">
721
 
            <xsl:for-each xmlns="" select="arg[@direction='out']">
722
 
              <xsl:value-of select="@type"/>
723
 
              <xsl:if test="position() != last()">, </xsl:if>
724
 
            </xsl:for-each>
725
 
          </xsl:when>
726
 
          <xsl:otherwise>nothing</xsl:otherwise>
727
 
        </xsl:choose>
728
 
      </h3>
729
 
      <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
730
 
        <xsl:apply-templates select="tp:docstring" />
731
 
        <xsl:apply-templates select="tp:added"/>
732
 
        <xsl:apply-templates select="tp:changed"/>
733
 
        <xsl:apply-templates select="tp:deprecated"/>
734
 
      </div>
735
 
 
736
 
      <xsl:if test="arg[@direction='in']">
737
 
        <div xmlns="http://www.w3.org/1999/xhtml">
738
 
          <h4>Parameters</h4>
739
 
          <dl xmlns="http://www.w3.org/1999/xhtml">
740
 
            <xsl:apply-templates select="arg[@direction='in']"
741
 
              mode="parameters-in-docstring"/>
742
 
          </dl>
743
 
        </div>
744
 
      </xsl:if>
745
 
 
746
 
      <xsl:if test="arg[@direction='out']">
747
 
        <div xmlns="http://www.w3.org/1999/xhtml">
748
 
          <h4>Returns</h4>
749
 
          <dl xmlns="http://www.w3.org/1999/xhtml">
750
 
            <xsl:apply-templates select="arg[@direction='out']"
751
 
              mode="returns-in-docstring"/>
752
 
          </dl>
753
 
        </div>
754
 
      </xsl:if>
755
 
 
756
 
      <xsl:if test="tp:possible-errors">
757
 
        <div xmlns="http://www.w3.org/1999/xhtml">
758
 
          <h4>Possible errors</h4>
759
 
          <dl xmlns="http://www.w3.org/1999/xhtml">
760
 
            <xsl:apply-templates select="tp:possible-errors/tp:error"/>
761
 
          </dl>
762
 
        </div>
763
 
      </xsl:if>
764
 
 
765
 
    </div>
766
 
  </xsl:template>
767
 
 
768
 
  <xsl:template name="tp-type">
769
 
    <xsl:param name="tp-type"/>
770
 
    <xsl:param name="type"/>
771
 
 
772
 
    <xsl:variable name="single-type">
773
 
      <xsl:choose>
774
 
        <xsl:when test="contains($tp-type, '[]')">
775
 
          <xsl:value-of select="substring-before($tp-type, '[]')"/>
776
 
        </xsl:when>
777
 
        <xsl:otherwise>
778
 
          <xsl:value-of select="$tp-type"/>
779
 
        </xsl:otherwise>
780
 
      </xsl:choose>
781
 
    </xsl:variable>
782
 
 
783
 
    <xsl:variable name="type-of-tp-type">
784
 
      <xsl:if test="contains($tp-type, '[]')">
785
 
        <!-- one 'a', plus one for each [ after the [], and delete all ] -->
786
 
        <xsl:value-of select="concat('a',
787
 
          translate(substring-after($tp-type, '[]'), '[]', 'a'))"/>
788
 
      </xsl:if>
789
 
 
790
 
      <xsl:choose>
791
 
        <xsl:when test="//tp:simple-type[@name=$single-type]">
792
 
          <xsl:value-of select="string(//tp:simple-type[@name=$single-type]/@type)"/>
793
 
        </xsl:when>
794
 
        <xsl:when test="//tp:struct[@name=$single-type]">
795
 
          <xsl:text>(</xsl:text>
796
 
          <xsl:for-each select="//tp:struct[@name=$single-type]/tp:member">
797
 
            <xsl:value-of select="@type"/>
798
 
          </xsl:for-each>
799
 
          <xsl:text>)</xsl:text>
800
 
        </xsl:when>
801
 
        <xsl:when test="//tp:enum[@name=$single-type]">
802
 
          <xsl:value-of select="string(//tp:enum[@name=$single-type]/@type)"/>
803
 
        </xsl:when>
804
 
        <xsl:when test="//tp:flags[@name=$single-type]">
805
 
          <xsl:value-of select="string(//tp:flags[@name=$single-type]/@type)"/>
806
 
        </xsl:when>
807
 
        <xsl:when test="//tp:mapping[@name=$single-type]">
808
 
          <xsl:text>a{</xsl:text>
809
 
          <xsl:for-each select="//tp:mapping[@name=$single-type]/tp:member">
810
 
            <xsl:value-of select="@type"/>
811
 
          </xsl:for-each>
812
 
          <xsl:text>}</xsl:text>
813
 
        </xsl:when>
814
 
        <xsl:when test="//tp:external-type[@name=$single-type]">
815
 
          <xsl:value-of select="string(//tp:external-type[@name=$single-type]/@type)"/>
816
 
        </xsl:when>
817
 
        <xsl:otherwise>
818
 
          <xsl:message terminate="yes">
819
 
            <xsl:text>ERR: Unable to find type '</xsl:text>
820
 
            <xsl:value-of select="$tp-type"/>
821
 
            <xsl:text>'&#10;</xsl:text>
822
 
          </xsl:message>
823
 
        </xsl:otherwise>
824
 
      </xsl:choose>
825
 
    </xsl:variable>
826
 
 
827
 
    <xsl:if test="string($type) != '' and
828
 
      string($type-of-tp-type) != string($type)">
829
 
      <xsl:message terminate="yes">
830
 
        <xsl:text>ERR: tp:type '</xsl:text>
831
 
        <xsl:value-of select="$tp-type"/>
832
 
        <xsl:text>' has D-Bus type '</xsl:text>
833
 
        <xsl:value-of select="$type-of-tp-type"/>
834
 
        <xsl:text>' but has been used with type='</xsl:text>
835
 
        <xsl:value-of select="$type"/>
836
 
        <xsl:text>'&#10;</xsl:text>
837
 
      </xsl:message>
838
 
    </xsl:if>
839
 
 
840
 
    <a href="#type-{$single-type}"><xsl:value-of select="$tp-type"/></a>
841
 
 
842
 
  </xsl:template>
843
 
 
844
 
  <xsl:template name="parenthesized-tp-type">
845
 
    <xsl:if test="@tp:type">
846
 
      <xsl:text> (</xsl:text>
847
 
      <xsl:call-template name="tp-type">
848
 
        <xsl:with-param name="tp-type" select="@tp:type"/>
849
 
        <xsl:with-param name="type" select="@type"/>
850
 
      </xsl:call-template>
851
 
      <xsl:text>)</xsl:text>
852
 
    </xsl:if>
853
 
  </xsl:template>
854
 
 
855
 
  <xsl:template match="tp:member" mode="members-in-docstring">
856
 
    <dt xmlns="http://www.w3.org/1999/xhtml">
857
 
      <code><xsl:value-of select="@name"/></code> −
858
 
      <code><xsl:value-of select="@type"/></code>
859
 
      <xsl:call-template name="parenthesized-tp-type"/>
860
 
    </dt>
861
 
    <dd xmlns="http://www.w3.org/1999/xhtml">
862
 
      <xsl:choose>
863
 
        <xsl:when test="tp:docstring">
864
 
          <xsl:apply-templates select="tp:docstring" />
865
 
        </xsl:when>
866
 
        <xsl:otherwise>
867
 
          <em>(undocumented)</em>
868
 
        </xsl:otherwise>
869
 
      </xsl:choose>
870
 
    </dd>
871
 
  </xsl:template>
872
 
 
873
 
  <xsl:template match="arg" mode="parameters-in-docstring">
874
 
    <dt xmlns="http://www.w3.org/1999/xhtml">
875
 
      <code><xsl:value-of select="@name"/></code> −
876
 
      <code><xsl:value-of select="@type"/></code>
877
 
      <xsl:call-template name="parenthesized-tp-type"/>
878
 
    </dt>
879
 
    <dd xmlns="http://www.w3.org/1999/xhtml">
880
 
      <xsl:apply-templates select="tp:docstring" />
881
 
    </dd>
882
 
  </xsl:template>
883
 
 
884
 
  <xsl:template match="arg" mode="returns-in-docstring">
885
 
    <dt xmlns="http://www.w3.org/1999/xhtml">
886
 
      <xsl:if test="@name">
887
 
        <code><xsl:value-of select="@name"/></code> −
888
 
      </xsl:if>
889
 
      <code><xsl:value-of select="@type"/></code>
890
 
      <xsl:call-template name="parenthesized-tp-type"/>
891
 
    </dt>
892
 
    <dd xmlns="http://www.w3.org/1999/xhtml">
893
 
      <xsl:apply-templates select="tp:docstring"/>
894
 
    </dd>
895
 
  </xsl:template>
896
 
 
897
 
  <xsl:template match="tp:possible-errors/tp:error">
898
 
    <dt xmlns="http://www.w3.org/1999/xhtml">
899
 
      <code><xsl:value-of select="@name"/></code>
900
 
    </dt>
901
 
    <dd xmlns="http://www.w3.org/1999/xhtml">
902
 
        <xsl:variable name="name" select="@name"/>
903
 
        <xsl:choose>
904
 
          <xsl:when test="tp:docstring">
905
 
            <xsl:apply-templates select="tp:docstring"/>
906
 
          </xsl:when>
907
 
          <xsl:when test="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring">
908
 
            <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>
909
 
          </xsl:when>
910
 
          <xsl:otherwise>
911
 
            (Undocumented.)
912
 
          </xsl:otherwise>
913
 
        </xsl:choose>
914
 
    </dd>
915
 
  </xsl:template>
916
 
 
917
 
  <xsl:template match="signal">
918
 
 
919
 
    <xsl:if test="not(parent::interface)">
920
 
      <xsl:message terminate="yes">
921
 
        <xsl:text>ERR: signal </xsl:text>
922
 
        <xsl:value-of select="@name"/>
923
 
        <xsl:text> does not have an interface as parent&#10;</xsl:text>
924
 
      </xsl:message>
925
 
    </xsl:if>
926
 
 
927
 
    <xsl:if test="not(@name) or @name = ''">
928
 
      <xsl:message terminate="yes">
929
 
        <xsl:text>ERR: missing @name on a signal of </xsl:text>
930
 
        <xsl:value-of select="../@name"/>
931
 
        <xsl:text>&#10;</xsl:text>
932
 
      </xsl:message>
933
 
    </xsl:if>
934
 
 
935
 
    <xsl:for-each select="arg">
936
 
      <xsl:if test="not(@type) or @type = ''">
937
 
        <xsl:message terminate="yes">
938
 
          <xsl:text>ERR: an arg of signal </xsl:text>
939
 
          <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
940
 
          <xsl:text> has no type</xsl:text>
941
 
        </xsl:message>
942
 
      </xsl:if>
943
 
      <xsl:if test="not(@name) or @name = ''">
944
 
        <xsl:message terminate="yes">
945
 
          <xsl:text>ERR: an arg of signal </xsl:text>
946
 
          <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
947
 
          <xsl:text> has no name</xsl:text>
948
 
        </xsl:message>
949
 
      </xsl:if>
950
 
      <xsl:choose>
951
 
        <xsl:when test="not(@direction)"/>
952
 
        <xsl:when test="@direction='in'">
953
 
          <xsl:message terminate="no">
954
 
            <xsl:text>INFO: an arg of signal </xsl:text>
955
 
            <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
956
 
            <xsl:text> has unnecessary direction 'in'</xsl:text>
957
 
          </xsl:message>
958
 
        </xsl:when>
959
 
        <xsl:otherwise>
960
 
          <xsl:message terminate="yes">
961
 
            <xsl:text>ERR: an arg of signal </xsl:text>
962
 
            <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
963
 
            <xsl:text> has direction other than 'in'</xsl:text>
964
 
          </xsl:message>
965
 
        </xsl:otherwise>
966
 
      </xsl:choose>
967
 
    </xsl:for-each>
968
 
 
969
 
    <div xmlns="http://www.w3.org/1999/xhtml" class="signal">
970
 
      <h3 xmlns="http://www.w3.org/1999/xhtml">
971
 
        <a name="{concat(../@name, concat('.', @name))}">
972
 
          <xsl:value-of select="@name"/>
973
 
        </a> (
974
 
        <xsl:for-each xmlns="" select="arg">
975
 
          <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
976
 
          <xsl:if test="position() != last()">, </xsl:if>
977
 
        </xsl:for-each>
978
 
        )</h3>
979
 
 
980
 
      <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
981
 
        <xsl:apply-templates select="tp:docstring"/>
982
 
        <xsl:apply-templates select="tp:added"/>
983
 
        <xsl:apply-templates select="tp:changed"/>
984
 
        <xsl:apply-templates select="tp:deprecated"/>
985
 
      </div>
986
 
 
987
 
      <xsl:if test="arg">
988
 
        <div xmlns="http://www.w3.org/1999/xhtml">
989
 
          <h4>Parameters</h4>
990
 
          <dl xmlns="http://www.w3.org/1999/xhtml">
991
 
            <xsl:apply-templates select="arg" mode="parameters-in-docstring"/>
992
 
          </dl>
993
 
        </div>
994
 
      </xsl:if>
995
 
    </div>
996
 
  </xsl:template>
997
 
 
998
 
  <xsl:output method="xml" indent="no" encoding="ascii"
999
 
    omit-xml-declaration="yes"
1000
 
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
1001
 
    doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
1002
 
 
1003
 
  <xsl:template match="/tp:spec">
1004
 
    <html xmlns="http://www.w3.org/1999/xhtml">
1005
 
      <head>
1006
 
        <title>
1007
 
          <xsl:value-of select="tp:title"/>
1008
 
          <xsl:if test="tp:version">
1009
 
            <xsl:text> version </xsl:text>
1010
 
            <xsl:value-of select="tp:version"/>
1011
 
          </xsl:if>
1012
 
        </title>
1013
 
        <style type="text/css">
1014
 
 
1015
 
          body {
1016
 
            font-family: sans-serif;
1017
 
            margin: 2em;
1018
 
            height: 100%;
1019
 
            font-size: 1.2em;
1020
 
          }
1021
 
          h1 {
1022
 
            padding-top: 5px;
1023
 
            padding-bottom: 5px;
1024
 
            font-size: 1.6em;
1025
 
            background: #dadae2;
1026
 
          }
1027
 
          h2 {
1028
 
            font-size: 1.3em;
1029
 
          }
1030
 
          h3 {
1031
 
            font-size: 1.2em;
1032
 
          }
1033
 
          a:link, a:visited, a:link:hover, a:visited:hover {
1034
 
            font-weight: bold;
1035
 
          }
1036
 
          .topbox {
1037
 
            padding-top: 10px;
1038
 
            padding-left: 10px;
1039
 
            border-bottom: black solid 1px;
1040
 
            padding-bottom: 10px;
1041
 
            background: #dadae2;
1042
 
            font-size: 2em;
1043
 
            font-weight: bold;
1044
 
            color: #5c5c5c;
1045
 
          }
1046
 
          .topnavbox {
1047
 
            padding-left: 10px;
1048
 
            padding-top: 5px;
1049
 
            padding-bottom: 5px;
1050
 
            background: #abacba;
1051
 
            border-bottom: black solid 1px;
1052
 
            font-size: 1.2em;
1053
 
          }
1054
 
          .topnavbox a{
1055
 
            color: black;
1056
 
            font-weight: normal;
1057
 
          }
1058
 
          .sidebar {
1059
 
            float: left;
1060
 
            /* width:9em;
1061
 
            border-right:#abacba solid 1px;
1062
 
            border-left: #abacba solid 1px;
1063
 
            height:100%; */
1064
 
            border: #abacba solid 1px;
1065
 
            padding-left: 10px;
1066
 
            margin-left: 10px;
1067
 
            padding-right: 10px;
1068
 
            margin-right: 10px;
1069
 
            color: #5d5d5d;
1070
 
            background: #dadae2;
1071
 
          }
1072
 
          .sidebar a {
1073
 
            text-decoration: none;
1074
 
            border-bottom: #e29625 dotted 1px;
1075
 
            color: #e29625;
1076
 
            font-weight: normal;
1077
 
          }
1078
 
          .sidebar h1 {
1079
 
            font-size: 1.2em;
1080
 
            color: black;
1081
 
          }
1082
 
          .sidebar ul {
1083
 
            padding-left: 25px;
1084
 
            padding-bottom: 10px;
1085
 
            border-bottom: #abacba solid 1px;
1086
 
          }
1087
 
          .sidebar li {
1088
 
            padding-top: 2px;
1089
 
            padding-bottom: 2px;
1090
 
          }
1091
 
          .sidebar h2 {
1092
 
            font-style:italic;
1093
 
            font-size: 0.81em;
1094
 
            padding-left: 5px;
1095
 
            padding-right: 5px;
1096
 
            font-weight: normal;
1097
 
          }
1098
 
          .date {
1099
 
            font-size: 0.6em;
1100
 
            float: right;
1101
 
            font-style: italic;
1102
 
          }
1103
 
          .method, .signal, .property {
1104
 
            margin-left: 1em;
1105
 
            margin-right: 4em;
1106
 
          }
1107
 
          .rationale {
1108
 
            font-style: italic;
1109
 
            border-left: 0.25em solid #808080;
1110
 
            padding-left: 0.5em;
1111
 
          }
1112
 
 
1113
 
          .added {
1114
 
            color: #006600;
1115
 
            background: #ffffff;
1116
 
          }
1117
 
          .deprecated {
1118
 
            color: #ff0000;
1119
 
            background: #ffffff;
1120
 
          }
1121
 
          table, tr, td, th {
1122
 
            border: 1px solid #666;
1123
 
          }
1124
 
 
1125
 
        </style>
1126
 
      </head>
1127
 
      <body>
1128
 
        <h1 class="topbox">
1129
 
          <xsl:value-of select="tp:title" />
1130
 
        </h1>
1131
 
        <xsl:if test="tp:version">
1132
 
          <h2>Version <xsl:value-of select="string(tp:version)"/></h2>
1133
 
        </xsl:if>
1134
 
        <xsl:apply-templates select="tp:copyright"/>
1135
 
        <xsl:apply-templates select="tp:license"/>
1136
 
        <xsl:apply-templates select="tp:docstring"/>
1137
 
 
1138
 
        <h2>Interfaces</h2>
1139
 
        <ul>
1140
 
          <xsl:for-each select="//node/interface">
1141
 
            <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
1142
 
          </xsl:for-each>
1143
 
        </ul>
1144
 
 
1145
 
        <xsl:apply-templates select="//node"/>
1146
 
        <xsl:apply-templates select="tp:generic-types"/>
1147
 
        <xsl:apply-templates select="tp:errors"/>
1148
 
 
1149
 
        <h1>Index</h1>
1150
 
        <h2>Index of interfaces</h2>
1151
 
        <ul>
1152
 
          <xsl:for-each select="//node/interface">
1153
 
            <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
1154
 
          </xsl:for-each>
1155
 
        </ul>
1156
 
        <h2>Index of types</h2>
1157
 
        <ul>
1158
 
          <xsl:for-each select="//tp:simple-type | //tp:enum | //tp:flags | //tp:mapping | //tp:struct | //tp:external-type">
1159
 
            <xsl:sort select="@name"/>
1160
 
            <li>
1161
 
              <code>
1162
 
                <a href="#type-{@name}">
1163
 
                  <xsl:value-of select="@name"/>
1164
 
                </a>
1165
 
              </code>
1166
 
              <xsl:apply-templates mode="in-index" select="."/>
1167
 
            </li>
1168
 
          </xsl:for-each>
1169
 
        </ul>
1170
 
      </body>
1171
 
    </html>
1172
 
  </xsl:template>
1173
 
 
1174
 
  <xsl:template match="node">
1175
 
      <xsl:apply-templates />
1176
 
  </xsl:template>
1177
 
 
1178
 
  <xsl:template match="text()">
1179
 
    <xsl:if test="normalize-space(.) != ''">
1180
 
      <xsl:message terminate="yes">
1181
 
        <xsl:text>Stray text: {{{</xsl:text>
1182
 
        <xsl:value-of select="." />
1183
 
        <xsl:text>}}}&#10;</xsl:text>
1184
 
      </xsl:message>
1185
 
    </xsl:if>
1186
 
  </xsl:template>
1187
 
 
1188
 
  <xsl:template match="*">
1189
 
      <xsl:message terminate="yes">
1190
 
         <xsl:text>Unrecognised element: {</xsl:text>
1191
 
         <xsl:value-of select="namespace-uri(.)" />
1192
 
         <xsl:text>}</xsl:text>
1193
 
         <xsl:value-of select="local-name(.)" />
1194
 
         <xsl:text>&#10;</xsl:text>
1195
 
      </xsl:message>
1196
 
  </xsl:template>
1197
 
</xsl:stylesheet>
1198
 
 
1199
 
<!-- vim:set sw=2 sts=2 et: -->