Merge branch 'ht/mutator'
[shapes.git] / doc / parts / formats / html.xsl
blob769ee5ac503f4992481b0c67e392e4abaf0146fb
1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- This file is part of Shapes. -->
4 <!-- -->
5 <!-- Shapes is free software: you can redistribute it and/or modify -->
6 <!-- it under the terms of the GNU General Public License as published by -->
7 <!-- the Free Software Foundation, either version 3 of the License, or -->
8 <!-- any later version. -->
9 <!-- -->
10 <!-- Shapes is distributed in the hope that it will be useful, -->
11 <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of -->
12 <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -->
13 <!-- GNU General Public License for more details. -->
14 <!-- -->
15 <!-- You should have received a copy of the GNU General Public License -->
16 <!-- along with Shapes. If not, see <http://www.gnu.org/licenses/>. -->
17 <!-- -->
18 <!-- Copyright 2008 Henrik Tidefelt -->
20 <xsl:stylesheet version="2.0"
21 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
23 <xsl:template match="str-PDF"><span class="medium-caps">pdf</span></xsl:template>
24 <xsl:template match="str-HTML"><span class="medium-caps">html</span></xsl:template>
25 <xsl:template match="str-XML"><span class="medium-caps">xml</span></xsl:template>
26 <xsl:template match="str-SVG"><span class="medium-caps">svg</span></xsl:template>
27 <xsl:template match="str-Shapes">Shapes</xsl:template>
28 <xsl:template match="str-TeX"><span class="tex">T<sub>e</sub>X</span></xsl:template>
29 <xsl:template match="str-LaTeX"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
30 <xsl:template match="str-pdfLaTeX"><span class="latex">pdfL<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
31 <xsl:template match="str-MetaPost">MetaPost</xsl:template>
32 <xsl:template match="str-UTF-8"><span class="medium-caps">utf</span>-8</xsl:template>
33 <xsl:template match="str-2D">2<span class="medium-caps"><sup>d</sup></span></xsl:template>
34 <xsl:template match="str-3D">3<span class="medium-caps"><sup>d</sup></span></xsl:template>
36 <xsl:template name="str-Google" match="str-Google"><span class="Google"><blue>G</blue><red>o</red><yellow>o</yellow><blue>g</blue><green>l</green><red>e</red><black></black></span></xsl:template>
38 <xsl:template match="abbr-etc">&amp;c</xsl:template>
40 <xsl:template match="char-cdot">*</xsl:template>
41 <xsl:template match="char-bullet"></xsl:template>
42 <xsl:template match="char-str-open">`</xsl:template>
43 <xsl:template match="char-str-close">´</xsl:template>
45 <xsl:template match="const-false"><rm>false</rm></xsl:template>
46 <xsl:template match="const-true"><rm>true</rm></xsl:template>
48 <xsl:template match="x-hat"><b>x</b></xsl:template>
49 <xsl:template match="y-hat"><b>y</b></xsl:template>
50 <xsl:template match="z-hat"><b>z</b></xsl:template>
52 <xsl:template match="physical"><span class="nowrap"><xsl:apply-templates select="scalar" /><span class="xx-small"> </span><xsl:apply-templates select="unit" /></span></xsl:template>
53 <xsl:template match="sci-fmt[@mantissa,@exp]"><span class="nowrap"><xsl:value-of select="@mantissa" /><span class="small-caps">e</span><xsl:value-of select="@exp" /></span></xsl:template>
54 <xsl:template match="quote"><xsl:apply-templates /></xsl:template>
56 <xsl:template match="filename"><filename><xsl:value-of select="." /></filename></xsl:template>
58 <xsl:template match="p">
59 <div class="p"><xsl:apply-templates/></div>
60 </xsl:template>
62 <xsl:template match="ol">
63 <ol><xsl:apply-templates/></ol>
64 </xsl:template>
65 <xsl:template match="ol/li">
66 <li><xsl:apply-templates/></li>
67 </xsl:template>
69 <xsl:template match="ul">
70 <ul><xsl:apply-templates/></ul>
71 </xsl:template>
72 <xsl:template match="ul/li">
73 <li><xsl:apply-templates/></li>
74 </xsl:template>
76 <xsl:template match="pre">
77 <pre>
78 <xsl:apply-templates/>
79 </pre>
80 </xsl:template>
81 <xsl:template match="pre[@class]">
82 <xsl:element name="pre">
83 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
84 <xsl:apply-templates/>
85 </xsl:element>
86 </xsl:template>
88 <xsl:template match="note">
89 <table class="note">
90 <tr><td><xsl:apply-templates/></td></tr>
91 </table>
92 </xsl:template>
94 <xsl:template match="see-also">
95 <p>
96 <b>See also:</b>
97 <xsl:for-each select="*">
98 <xsl:text>  </xsl:text><xsl:apply-templates select="."/>
99 </xsl:for-each>
100 </p>
101 </xsl:template>
103 <xsl:template name="head-navigation" >
105 <xsl:element name="a"><xsl:attribute name="href"><xsl:value-of select="/book/base/@href" />index.html</xsl:attribute><xsl:text>To top.</xsl:text></xsl:element>
106 <xsl:if test="/book/up-link">
107 <xsl:text>  Up: </xsl:text><xsl:apply-templates select="/book/up-link" />
108 </xsl:if>
109 </p>
110 </xsl:template>
112 <xsl:template name="part-to-href">
113 <xsl:param name="name" />
114 <xsl:value-of select="/book/base/@href" /><xsl:choose>
115 <xsl:when test="$name='syntax'">syntax.html</xsl:when>
116 <xsl:when test="$name='bindings'">bindings.html</xsl:when>
117 <xsl:when test="$name='states'">states.html</xsl:when>
118 <xsl:when test="$name='dynamic'">dynamic.html</xsl:when>
119 <xsl:when test="$name='types'">types.html</xsl:when>
120 <xsl:when test="$name='state-types'">state-types.html</xsl:when>
121 <xsl:when test="$name='algo-tol'">algo-tol.html</xsl:when>
122 <xsl:when test="$name='man'">man.html</xsl:when>
123 <xsl:when test="$name='tutorial'">tutorial.html</xsl:when>
124 <xsl:when test="$name='extensions'">extensions/index.html</xsl:when>
125 <xsl:when test="$name='install'">install.html</xsl:when>
126 </xsl:choose>
127 </xsl:template>
128 <xsl:template name="extension-to-href">
129 <xsl:param name="name" />
130 <xsl:value-of select="/book/base/@href" /><xsl:text>extensions/</xsl:text><xsl:value-of select="$name" /><xsl:text>.html</xsl:text>
131 </xsl:template>
132 <xsl:template name="id-to-anchor-name">
133 <xsl:param name="id" />
134 <xsl:text>secid:</xsl:text><xsl:value-of select="$id" />
135 </xsl:template>
137 <xsl:template match="part-href[@name]">
138 <xsl:call-template name="part-to-href">
139 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
140 </xsl:call-template>
141 </xsl:template>
142 <xsl:template match="extension-href[@name]">
143 <xsl:call-template name="extension-to-href">
144 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
145 </xsl:call-template>
146 </xsl:template>
148 <xsl:template match="a[@part | @id]">
149 <xsl:element name="a">
150 <xsl:attribute name="href">
151 <xsl:if test="@part">
152 <xsl:call-template name="part-to-href">
153 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
154 </xsl:call-template>
155 </xsl:if>
156 <xsl:if test="@id">
157 <xsl:text>#</xsl:text>
158 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
159 </xsl:if>
160 </xsl:attribute>
161 <xsl:choose>
162 <xsl:when test="node()">
163 <xsl:apply-templates />
164 </xsl:when>
165 <xsl:when test="@part">
166 <filename>
167 <xsl:call-template name="part-to-href">
168 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
169 </xsl:call-template>
170 </filename>
171 </xsl:when>
172 <xsl:otherwise>
173 <xsl:variable name="dstid">
174 <xsl:value-of select="@id" />
175 </xsl:variable>
176 <xsl:apply-templates select="//section[@id=$dstid]/title" />
177 <xsl:apply-templates select="//example-with-output[@id=$dstid]/@title" />
178 </xsl:otherwise>
179 </xsl:choose>
180 </xsl:element>
181 </xsl:template>
182 <xsl:template match="a[@id]/title">
183 <xsl:variable name="dstid">
184 <xsl:value-of select="../@id" />
185 </xsl:variable>
186 <xsl:apply-templates select="//section[@id=$dstid]/title" />
187 </xsl:template>
188 <xsl:template match="a[@extension]">
189 <xsl:element name="a">
190 <xsl:attribute name="href">
191 <xsl:call-template name="extension-to-href">
192 <xsl:with-param name="name"><xsl:value-of select="@extension" /></xsl:with-param>
193 </xsl:call-template>
194 <xsl:if test="@id">
195 <xsl:text>#</xsl:text>
196 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
197 </xsl:if>
198 </xsl:attribute>
199 <filename><xsl:value-of select="@extension" /></filename>
200 </xsl:element>
201 </xsl:template>
203 <xsl:template match='a[@method="google-lucky" and @query]'>
204 <xsl:element name="a">
205 <xsl:attribute name="href">http://www.google.com/search?btnI=I%27m+Feeling+Lucky&amp;q=<xsl:value-of select="@query" /></xsl:attribute>
206 <xsl:choose>
207 <xsl:when test="node()">
208 <xsl:apply-templates />
209 </xsl:when>
210 <xsl:otherwise>
211 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text>_lucky `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
212 </xsl:otherwise>
213 </xsl:choose>
214 </xsl:element>
215 </xsl:template>
216 <xsl:template match='a[@method="google" and @query]'>
217 <xsl:element name="a">
218 <xsl:attribute name="href">http://www.google.com/search?q=<xsl:value-of select="@query" /></xsl:attribute>
219 <xsl:choose>
220 <xsl:when test="node()">
221 <xsl:apply-templates />
222 </xsl:when>
223 <xsl:otherwise>
224 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text> `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
225 </xsl:otherwise>
226 </xsl:choose>
227 </xsl:element>
228 </xsl:template>
229 <xsl:template match="a[@query]/query">
230 <xsl:value-of select="../@query" />
231 </xsl:template>
234 <xsl:template name="name-to-binding">
235 <xsl:param name="name" />
236 <varname><xsl:value-of select="$name" /></varname>
237 </xsl:template>
238 <xsl:template name="name-to-linked-binding">
239 <xsl:param name="extension" />
240 <xsl:param name="extension-href" />
241 <xsl:param name="name" />
242 <xsl:element name="a">
243 <xsl:attribute name="class">discrete</xsl:attribute>
244 <xsl:attribute name="href">
245 <xsl:choose>
246 <xsl:when test="$extension">
247 <xsl:call-template name="extension-to-href"><xsl:with-param name="name"><xsl:value-of select="$extension" /></xsl:with-param></xsl:call-template>#bind/<xsl:value-of select="$name" />
248 </xsl:when>
249 <xsl:when test="$extension-href">
250 <xsl:value-of select="$extension-href" />#bind/<xsl:value-of select="$name" />
251 </xsl:when>
252 <xsl:otherwise>
253 <xsl:call-template name="part-to-href"><xsl:with-param name="name">bindings</xsl:with-param></xsl:call-template>#bind/<xsl:value-of select="$name" />
254 </xsl:otherwise>
255 </xsl:choose>
256 </xsl:attribute>
257 <xsl:call-template name="name-to-binding">
258 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
259 </xsl:call-template>
260 </xsl:element>
261 </xsl:template>
262 <xsl:template match="binding[@name and not(@extension)]">
263 <xsl:call-template name="name-to-linked-binding">
264 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
265 </xsl:call-template>
266 </xsl:template>
267 <xsl:template match="binding[@name and @extension]">
268 <xsl:call-template name="name-to-linked-binding">
269 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
270 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
271 </xsl:call-template>
272 </xsl:template>
273 <xsl:template match="user-binding[@name]">
274 <xsl:call-template name="name-to-binding">
275 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
276 </xsl:call-template>
277 </xsl:template>
279 <xsl:template name="name-to-dynvar">
280 <xsl:param name="name" />
281 <varname>@<xsl:value-of select="$name" /></varname>
282 </xsl:template>
283 <xsl:template name="name-to-linked-dynvar">
284 <xsl:param name="extension" />
285 <xsl:param name="extension-href" />
286 <xsl:param name="name" />
287 <xsl:element name="a">
288 <xsl:attribute name="class">discrete</xsl:attribute>
289 <xsl:attribute name="href">
290 <xsl:choose>
291 <xsl:when test="$extension">
292 <xsl:call-template name="extension-to-href"><xsl:with-param name="name"><xsl:value-of select="$extension" /></xsl:with-param></xsl:call-template>#dyn/<xsl:value-of select="$name" />
293 </xsl:when>
294 <xsl:when test="$extension-href">
295 <xsl:value-of select="$extension-href" />#dyn/<xsl:value-of select="$name" />
296 </xsl:when>
297 <xsl:otherwise>
298 <xsl:call-template name="part-to-href"><xsl:with-param name="name">dynamic</xsl:with-param></xsl:call-template>#dyn/<xsl:value-of select="$name" />
299 </xsl:otherwise>
300 </xsl:choose>
301 </xsl:attribute>
302 <xsl:call-template name="name-to-dynvar">
303 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
304 </xsl:call-template>
305 </xsl:element>
306 </xsl:template>
307 <xsl:template match="dynvar[@name and not(@extension)]">
308 <xsl:call-template name="name-to-linked-dynvar">
309 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
310 </xsl:call-template>
311 </xsl:template>
312 <xsl:template match="dynvar[@name and @extension]">
313 <xsl:call-template name="name-to-linked-dynvar">
314 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
315 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
316 </xsl:call-template>
317 </xsl:template>
319 <xsl:template name="name-to-state">
320 <xsl:param name="name" />
321 <varname><xsl:value-of select="$name" /></varname>
322 </xsl:template>
323 <xsl:template name="name-to-linked-state">
324 <xsl:param name="name" />
325 <xsl:element name="a">
326 <xsl:attribute name="class">discrete</xsl:attribute>
327 <xsl:attribute name="href"><xsl:call-template name="part-to-href"><xsl:with-param name="name">states</xsl:with-param></xsl:call-template>#state/<xsl:value-of select="$name" /></xsl:attribute>
328 <xsl:call-template name="name-to-state">
329 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
330 </xsl:call-template>
331 </xsl:element>
332 </xsl:template>
333 <xsl:template match="state[@name]">
334 <xsl:call-template name="name-to-linked-state">
335 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
336 </xsl:call-template>
337 </xsl:template>
339 <xsl:template name="name-to-type">
340 <xsl:param name="name" />
341 <typename>§<xsl:value-of select="$name" /></typename>
342 </xsl:template>
343 <xsl:template name="name-to-linked-type">
344 <xsl:param name="name" />
345 <xsl:element name="a">
346 <xsl:attribute name="class">discrete</xsl:attribute>
347 <xsl:attribute name="href"><xsl:call-template name="part-to-href"><xsl:with-param name="name">types</xsl:with-param></xsl:call-template>#type/<xsl:value-of select="$name" /></xsl:attribute>
348 <xsl:call-template name="name-to-type">
349 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
350 </xsl:call-template>
351 </xsl:element>
352 </xsl:template>
353 <xsl:template match="named-type[@name and not(@link)]">
354 <xsl:call-template name="name-to-linked-type">
355 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
356 </xsl:call-template>
357 </xsl:template>
358 <xsl:template match="named-type[@name and @link='no']">
359 <xsl:call-template name="name-to-type">
360 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
361 </xsl:call-template>
362 </xsl:template>
364 <xsl:template name="name-to-template-type">
365 <xsl:param name="name" />
366 <typename class="template">§<xsl:value-of select="$name" /></typename>
367 </xsl:template>
368 <xsl:template match="template-type[@name]">
369 <xsl:call-template name="name-to-template-type">
370 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
371 </xsl:call-template>
372 </xsl:template>
374 <xsl:template name="name-to-state-type">
375 <xsl:param name="name" />
376 <typename>§•<xsl:value-of select="$name" /></typename>
377 </xsl:template>
378 <xsl:template name="name-to-linked-state-type">
379 <xsl:param name="name" />
380 <xsl:element name="a">
381 <xsl:attribute name="class">discrete</xsl:attribute>
382 <xsl:attribute name="href"><xsl:call-template name="part-to-href"><xsl:with-param name="name">state-types</xsl:with-param></xsl:call-template>#state-type/<xsl:value-of select="$name" /></xsl:attribute>
383 <xsl:call-template name="name-to-state-type">
384 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
385 </xsl:call-template>
386 </xsl:element>
387 </xsl:template>
388 <xsl:template match="named-state-type[@name and not(@link)]">
389 <xsl:call-template name="name-to-linked-state-type">
390 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
391 </xsl:call-template>
392 </xsl:template>
393 <xsl:template match="named-state-type[@name and @link='no']">
394 <xsl:call-template name="name-to-state-type">
395 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
396 </xsl:call-template>
397 </xsl:template>
399 <xsl:template name="name-to-template-state-type">
400 <xsl:param name="name" />
401 <typename class="template">§•<xsl:value-of select="$name" /></typename>
402 </xsl:template>
403 <xsl:template match="template-state-type[@name]">
404 <xsl:call-template name="name-to-template-state-type">
405 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
406 </xsl:call-template>
407 </xsl:template>
409 <xsl:template name="name-to-mutator">
410 <xsl:param name="name" />
411 <varname><xsl:value-of select="$name" /></varname>
412 </xsl:template>
413 <xsl:template name="name-to-linked-mutator">
414 <xsl:param name="extension" />
415 <xsl:param name="extension-href" />
416 <xsl:param name="type" />
417 <xsl:param name="name" />
418 <xsl:element name="a">
419 <xsl:attribute name="class">discrete</xsl:attribute>
420 <xsl:attribute name="href">
421 <xsl:choose>
422 <xsl:when test="$extension">
423 <xsl:call-template name="extension-to-href"><xsl:with-param name="name"><xsl:value-of select="$extension" /></xsl:with-param></xsl:call-template>#mutator/<xsl:value-of select="$type" />/<xsl:value-of select="$name" />
424 </xsl:when>
425 <xsl:when test="$extension-href">
426 <xsl:value-of select="$extension-href" />#mutator/<xsl:value-of select="$type" />/<xsl:value-of select="$name" />
427 </xsl:when>
428 <xsl:otherwise>
429 <xsl:call-template name="part-to-href"><xsl:with-param name="name">state-types</xsl:with-param></xsl:call-template>#mutator/<xsl:value-of select="$type" />/<xsl:value-of select="$name" />
430 </xsl:otherwise>
431 </xsl:choose>
432 </xsl:attribute>
433 <xsl:call-template name="name-to-state-type">
434 <xsl:with-param name="name"><xsl:value-of select="$type" /></xsl:with-param>
435 </xsl:call-template>
436 <inline>/</inline>
437 <xsl:call-template name="name-to-mutator">
438 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
439 </xsl:call-template>
440 </xsl:element>
441 </xsl:template>
442 <xsl:template match="mutator[@type and @mutator and not(@extension)]">
443 <xsl:call-template name="name-to-linked-mutator">
444 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
445 <xsl:with-param name="name"><xsl:value-of select="@mutator" /></xsl:with-param>
446 </xsl:call-template>
447 </xsl:template>
448 <xsl:template match="mutator[@type and @mutator and @extension]">
449 <xsl:call-template name="name-to-linked-mutator">
450 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
451 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
452 <xsl:with-param name="name"><xsl:value-of select="@mutator" /></xsl:with-param>
453 </xsl:call-template>
454 </xsl:template>
456 <xsl:template match="tol-param[@name and @link='no']">
457 <tolparam><xsl:value-of select="@name" /></tolparam>
458 </xsl:template>
459 <xsl:template match="tol-param[@name and not(@link)]">
460 <xsl:element name="a">
461 <xsl:attribute name="class">discrete</xsl:attribute>
462 <xsl:attribute name="href"><xsl:call-template name="part-to-href"><xsl:with-param name="name">algo-tol</xsl:with-param></xsl:call-template>#tol-<xsl:value-of select="@name" /></xsl:attribute>
463 <tolparam><xsl:value-of select="@name" /></tolparam>
464 </xsl:element>
465 </xsl:template>
467 <xsl:template name="name-to-operator">
468 <xsl:param name="name" />
469 <inline><xsl:value-of select="$name" /></inline>
470 </xsl:template>
471 <xsl:template match="operator[@name]">
472 <xsl:call-template name="name-to-operator">
473 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
474 </xsl:call-template>
475 </xsl:template>
476 <xsl:template name="name-to-operator-unary-prefix">
477 <xsl:param name="name" />
478 <inline><xsl:value-of select="$name" /></inline>
479 </xsl:template>
480 <xsl:template match="operator-unary-prefix[@name]">
481 <xsl:call-template name="name-to-operator-unary-prefix">
482 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
483 </xsl:call-template>
484 </xsl:template>
486 <xsl:template match="inline"><inline><xsl:apply-templates/></inline></xsl:template>
487 <xsl:template match="em"><em><xsl:apply-templates/></em></xsl:template>
488 <xsl:template match="b"><b><xsl:apply-templates/></b></xsl:template>
489 <xsl:template match="bnf"><bnf><xsl:apply-templates/></bnf></xsl:template>
490 <xsl:template match="union-type">
491 <typename><xsl:text>( </xsl:text></typename>
492 <xsl:for-each select="./*">
493 <xsl:if test="position() > 1">
494 <typename><xsl:text>| </xsl:text></typename>
495 </xsl:if>
496 <xsl:apply-templates select="." />
497 <xsl:text> </xsl:text>
498 </xsl:for-each>
499 <typename>)</typename>
500 </xsl:template>
501 <xsl:template match="structure-type">
502 <typename><xsl:text>(&gt; </xsl:text></typename>
503 <xsl:for-each select="field">
504 <xsl:if test="@name">
505 <xsl:value-of select="@name" /><xsl:text>::</xsl:text>
506 </xsl:if>
507 <xsl:if test="not(@name)">
508 <xsl:value-of select="position( )" /><xsl:text>::</xsl:text>
509 </xsl:if>
510 <xsl:if test="not(type)">
511 <typename>Any-Type</typename>
512 </xsl:if>
513 <xsl:apply-templates select="type" />
514 <xsl:text> </xsl:text>
515 </xsl:for-each>
516 <typename>&lt;)</typename>
517 </xsl:template>
518 <xsl:template match="structure-type/field">
519 </xsl:template>
520 <xsl:template match="function-type">
521 <typename><xsl:text>( </xsl:text></typename>
522 <xsl:apply-templates select="arguments" />
523 <xsl:text></xsl:text>
524 <xsl:apply-templates select="result" />
525 <typename><xsl:text> )</xsl:text></typename>
526 </xsl:template>
527 <xsl:template match="typename"><typename><xsl:apply-templates/></typename></xsl:template>
528 <xsl:template match="typename[@class='replacable']">
529 <typename class="replacable"><xsl:apply-templates/></typename>
530 </xsl:template>
531 <xsl:template match="replacable-text[@name]">
532 <varname class="replacable"><xsl:value-of select="@name" /></varname>
533 </xsl:template>
535 <xsl:template name="name-to-argument">
536 <xsl:param name="name" />
537 <xsl:param name="class" />
538 <xsl:element name="varname">
539 <xsl:attribute name="class"><xsl:value-of select="$class" /></xsl:attribute>
540 <xsl:value-of select="$name" />
541 </xsl:element>
542 </xsl:template>
543 <xsl:template match="p/arg[@name] | td/arg[@name]">
544 <xsl:call-template name="name-to-argument">
545 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
546 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
547 </xsl:call-template>
548 </xsl:template>
550 <xsl:template name="name-to-state-argument">
551 <xsl:param name="name" />
552 <xsl:param name="class" />
553 <xsl:element name="varname">
554 <xsl:attribute name="class"><xsl:value-of select="$class" /></xsl:attribute>
555 <xsl:call-template name="name-to-state">
556 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
557 </xsl:call-template>
558 </xsl:element>
559 </xsl:template>
560 <xsl:template match="state-arg[@name]">
561 <xsl:call-template name="name-to-state-argument">
562 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
563 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
564 </xsl:call-template>
565 </xsl:template>
567 <xsl:template match="field[@name and not(@class)]">
568 <varname><xsl:value-of select="@name" /></varname>
569 </xsl:template>
570 <xsl:template match="field[@name and @class='replacable']">
571 <varname class="replacable"><xsl:value-of select="@name" /></varname>
572 </xsl:template>
574 <xsl:template match="lexerregexp">
575 <lexerregexp><xsl:apply-templates/></lexerregexp>
576 </xsl:template>
577 <xsl:template match="syntax[@name and @class='new']">
578 <xsl:element name="a">
579 <xsl:attribute name="name">stx/<xsl:value-of select="@name" /></xsl:attribute>
580 <syntaxname class="new"><xsl:value-of select="@name"/></syntaxname>
581 </xsl:element>
582 </xsl:template>
583 <xsl:template match="syntax[@name and not(@class)]">
584 <xsl:element name="a">
585 <xsl:attribute name="class">discrete</xsl:attribute>
586 <xsl:attribute name="href"><xsl:call-template name="part-to-href"><xsl:with-param name="name">syntax</xsl:with-param></xsl:call-template>#stx/<xsl:value-of select="@name" /></xsl:attribute>
587 <syntaxname><xsl:value-of select="@name"/></syntaxname>
588 </xsl:element>
589 </xsl:template>
590 <xsl:template match="a[@href]">
591 <xsl:element name="a">
592 <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
593 <xsl:apply-templates/>
594 </xsl:element>
595 </xsl:template>
596 <xsl:template match="command-line">
597 <pre class="terminal">
598 <xsl:apply-templates/>
599 </pre>
600 </xsl:template>
602 <xsl:template match="tight-table">
603 <table class="tight"><xsl:apply-templates select="tr"/></table>
604 </xsl:template>
605 <xsl:template match="loose-table">
606 <table class="loose"><xsl:apply-templates select="tr"/></table>
607 </xsl:template>
609 <xsl:template match="tr">
610 <tr><xsl:apply-templates/></tr>
611 </xsl:template>
612 <xsl:template match="tr[@align]">
613 <xsl:element name="tr">
614 <xsl:attribute name="align"><xsl:value-of select="./@align" /></xsl:attribute>
615 <xsl:apply-templates/>
616 </xsl:element>
617 </xsl:template>
618 <xsl:template match="head/tr/td">
619 <th><xsl:apply-templates/></th>
620 </xsl:template>
621 <xsl:template match="td">
622 <td><xsl:apply-templates/></td>
623 </xsl:template>
624 <xsl:template match="th">
625 <th><xsl:apply-templates/></th>
626 </xsl:template>
627 <xsl:template match="th[@colspan]">
628 <xsl:element name="th">
629 <xsl:attribute name="colspan"><xsl:value-of select="./@colspan" /></xsl:attribute>
630 <xsl:apply-templates/>
631 </xsl:element>
632 </xsl:template>
634 <xsl:template match="img[@*]">
635 <xsl:element name="img">
636 <xsl:attribute name="src"><xsl:value-of select="@src" /></xsl:attribute>
637 <xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute>
638 </xsl:element>
639 </xsl:template>
641 <xsl:template match="arguments">
642 <xsl:apply-templates select="arg | state"/>
643 <xsl:apply-templates select="sink"/>
644 </xsl:template>
646 <xsl:template match="arguments/arg">
647 <xsl:if test="@identifier">
648 <xsl:call-template name="name-to-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
649 </xsl:if>
650 <xsl:apply-templates select="default"/>
651 <xsl:apply-templates select="type"/>
652 <xsl:text>   </xsl:text>
653 </xsl:template>
654 <xsl:template match="arguments/arg/default">:<xsl:apply-templates /></xsl:template>
655 <xsl:template match="arguments/arg/type"><xsl:text>::</xsl:text><xsl:apply-templates /></xsl:template>
657 <xsl:template match="arguments/state[@identifier]">
658 <xsl:call-template name="name-to-state-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
659 <xsl:apply-templates select="type"/>
660 <xsl:text>   </xsl:text>
661 </xsl:template>
662 <xsl:template match="arguments/state[not(@identifier)]">
663 <xsl:apply-templates select="type"/>
664 <xsl:text>   </xsl:text>
665 </xsl:template>
666 <xsl:template match="arguments/state/type"><xsl:text>::</xsl:text><xsl:apply-templates /></xsl:template>
668 <xsl:template match="arguments/sink[@identifier]">
669 <xsl:text>&lt;&gt;</xsl:text><xsl:call-template name="name-to-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
670 <xsl:apply-templates select="type"/>
671 <xsl:text>   </xsl:text>
672 </xsl:template>
673 <xsl:template match="arguments/sink[not(@identifier)]">
674 <xsl:text>&lt;&gt;</xsl:text>
675 <xsl:apply-templates select="type"/>
676 <xsl:text>   </xsl:text>
677 </xsl:template>
678 <xsl:template match="arguments/sink/type"><xsl:text>::{</xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text></xsl:template>
680 <xsl:template match="type-templates">
681 <table class="type-templates">
682 <xsl:apply-templates />
683 </table>
684 </xsl:template>
685 <xsl:template match="type-templates/template[@name]">
686 <tr>
687 <td align="right"><xsl:call-template name="name-to-template-type"><xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param></xsl:call-template>  </td>
688 <td>
689 <xsl:apply-templates select="description"/>
690 </td>
691 </tr>
692 </xsl:template>
693 <xsl:template match="type-templates/template-state[@name]">
694 <tr>
695 <td align="right"><xsl:call-template name="name-to-template-state-type"><xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param></xsl:call-template>  </td>
696 <td>
697 <xsl:apply-templates select="description"/>
698 </td>
699 </tr>
700 </xsl:template>
702 <xsl:template match="eq"><eq><xsl:apply-templates/></eq></xsl:template>
703 <xsl:template match="eq//op"><span class="rm"><xsl:apply-templates/></span></xsl:template>
704 <xsl:template match="eq//rm"><span class="rm"><xsl:apply-templates/></span></xsl:template>
705 <xsl:template match="eq//text"><span class="text"><xsl:apply-templates/></span></xsl:template>
706 <xsl:template match="eq//sub"><span class="sub"><xsl:apply-templates/></span></xsl:template>
707 <xsl:template match="eq//sup"><span class="sup"><xsl:apply-templates/></span></xsl:template>
709 </xsl:stylesheet>