Doc: Shifting down HTML heading tags by one.
[shapes.git] / doc / parts / formats / html.xsl
blob3af4b26444be1dee44d6625a2a291c58088f8ff4
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-PostScript">PostScript</xsl:template>
28 <xsl:template match="str-Shapes">Shapes</xsl:template>
29 <xsl:template match="str-TeX"><span class="tex">T<sub>e</sub>X</span></xsl:template>
30 <xsl:template match="str-LaTeX"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
31 <xsl:template match="str-pdfLaTeX"><span class="latex">pdfL<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
32 <xsl:template match="str-MetaPost">MetaPost</xsl:template>
33 <xsl:template match="str-UTF-8"><span class="medium-caps">utf</span>-8</xsl:template>
34 <xsl:template match="str-2D">2<span class="medium-caps"><sup>d</sup></span></xsl:template>
35 <xsl:template match="str-3D">3<span class="medium-caps"><sup>d</sup></span></xsl:template>
37 <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>
39 <xsl:template match="abbr-etc">&amp;c</xsl:template>
41 <xsl:template match="char-cdot">*</xsl:template>
42 <xsl:template match="char-bullet"></xsl:template>
43 <xsl:template match="char-str-open">`</xsl:template>
44 <xsl:template match="char-str-close">´</xsl:template>
46 <xsl:template match="const-false"><rm>false</rm></xsl:template>
47 <xsl:template match="const-true"><rm>true</rm></xsl:template>
49 <xsl:template match="x-hat"><b>x</b></xsl:template>
50 <xsl:template match="y-hat"><b>y</b></xsl:template>
51 <xsl:template match="z-hat"><b>z</b></xsl:template>
53 <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>
54 <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>
55 <xsl:template match="quote"><xsl:apply-templates /></xsl:template>
57 <xsl:template match="filename"><filename><xsl:value-of select="." /></filename></xsl:template>
59 <xsl:template match="p[not(@class)]">
60 <div class="p"><xsl:apply-templates/></div>
61 </xsl:template>
62 <xsl:template match="p[@class='center']">
63 <div class="p" style="text-align:center;"><xsl:apply-templates/></div>
64 </xsl:template>
66 <xsl:template match="ol">
67 <ol><xsl:apply-templates/></ol>
68 </xsl:template>
69 <xsl:template match="ol/li">
70 <li><xsl:apply-templates/></li>
71 </xsl:template>
73 <xsl:template match="ul">
74 <ul><xsl:apply-templates/></ul>
75 </xsl:template>
76 <xsl:template match="ul/li">
77 <li><xsl:apply-templates/></li>
78 </xsl:template>
80 <xsl:template match="pre">
81 <pre>
82 <xsl:apply-templates/>
83 </pre>
84 </xsl:template>
85 <xsl:template match="pre[@class]">
86 <xsl:element name="pre">
87 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
88 <xsl:apply-templates/>
89 </xsl:element>
90 </xsl:template>
92 <xsl:template match="note">
93 <table class="note">
94 <tr><td><xsl:apply-templates/></td></tr>
95 </table>
96 </xsl:template>
98 <xsl:template match="see-also">
99 <p>
100 <b>See also:</b>
101 <xsl:for-each select="*">
102 <xsl:text>  </xsl:text><xsl:apply-templates select="."/>
103 </xsl:for-each>
104 </p>
105 </xsl:template>
107 <xsl:template name="head-navigation" >
109 <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>
110 <xsl:if test="/book/up-link">
111 <xsl:text>  Up: </xsl:text><xsl:apply-templates select="/book/up-link" />
112 </xsl:if>
113 </p>
114 </xsl:template>
116 <xsl:template name="part-to-href">
117 <xsl:param name="name" />
118 <xsl:value-of select="/book/base/@href" /><xsl:choose>
119 <xsl:when test="$name='syntax'">syntax.html</xsl:when>
120 <xsl:when test="$name='bindings'">bindings.html</xsl:when>
121 <xsl:when test="$name='states'">states.html</xsl:when>
122 <xsl:when test="$name='dynamic'">dynamic.html</xsl:when>
123 <xsl:when test="$name='types'">types.html</xsl:when>
124 <xsl:when test="$name='state-types'">state-types.html</xsl:when>
125 <xsl:when test="$name='algo-tol'">algo-tol.html</xsl:when>
126 <xsl:when test="$name='man'">man.html</xsl:when>
127 <xsl:when test="$name='tutorial'">tutorial.html</xsl:when>
128 <xsl:when test="$name='extensions'">extensions/index.html</xsl:when>
129 <xsl:when test="$name='install'">install.html</xsl:when>
130 </xsl:choose>
131 </xsl:template>
132 <xsl:template name="extension-to-href">
133 <xsl:param name="name" />
134 <xsl:value-of select="/book/base/@href" /><xsl:text>extensions/</xsl:text><xsl:value-of select="$name" /><xsl:text>.html</xsl:text>
135 </xsl:template>
136 <xsl:template name="id-to-anchor-name">
137 <xsl:param name="id" />
138 <xsl:text>secid:</xsl:text><xsl:value-of select="$id" />
139 </xsl:template>
141 <xsl:template match="part-href[@name]">
142 <xsl:call-template name="part-to-href">
143 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
144 </xsl:call-template>
145 </xsl:template>
146 <xsl:template match="extension-href[@name]">
147 <xsl:call-template name="extension-to-href">
148 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
149 </xsl:call-template>
150 </xsl:template>
152 <xsl:template match="a[@part | @id]">
153 <xsl:element name="a">
154 <xsl:attribute name="href">
155 <xsl:if test="@part">
156 <xsl:call-template name="part-to-href">
157 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
158 </xsl:call-template>
159 </xsl:if>
160 <xsl:if test="@id">
161 <xsl:text>#</xsl:text>
162 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
163 </xsl:if>
164 </xsl:attribute>
165 <xsl:choose>
166 <xsl:when test="node()">
167 <xsl:apply-templates />
168 </xsl:when>
169 <xsl:when test="@part">
170 <filename>
171 <xsl:call-template name="part-to-href">
172 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
173 </xsl:call-template>
174 </filename>
175 </xsl:when>
176 <xsl:otherwise>
177 <xsl:variable name="dstid">
178 <xsl:value-of select="@id" />
179 </xsl:variable>
180 <xsl:apply-templates select="//section[@id=$dstid]/title" />
181 <xsl:apply-templates select="//example-with-output[@id=$dstid]/@title" />
182 </xsl:otherwise>
183 </xsl:choose>
184 </xsl:element>
185 </xsl:template>
186 <xsl:template match="a[@id]/title">
187 <xsl:variable name="dstid">
188 <xsl:value-of select="../@id" />
189 </xsl:variable>
190 <xsl:apply-templates select="//section[@id=$dstid]/title" />
191 </xsl:template>
192 <xsl:template match="a[@extension]">
193 <xsl:element name="a">
194 <xsl:attribute name="href">
195 <xsl:call-template name="extension-to-href">
196 <xsl:with-param name="name"><xsl:value-of select="@extension" /></xsl:with-param>
197 </xsl:call-template>
198 <xsl:if test="@id">
199 <xsl:text>#</xsl:text>
200 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
201 </xsl:if>
202 </xsl:attribute>
203 <filename><xsl:value-of select="@extension" /></filename>
204 </xsl:element>
205 </xsl:template>
207 <xsl:template match='a[@method="google-lucky" and @query]'>
208 <xsl:element name="a">
209 <xsl:attribute name="href">http://www.google.com/search?btnI=I%27m+Feeling+Lucky&amp;q=<xsl:value-of select="@query" /></xsl:attribute>
210 <xsl:choose>
211 <xsl:when test="node()">
212 <xsl:apply-templates />
213 </xsl:when>
214 <xsl:otherwise>
215 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text>_lucky `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
216 </xsl:otherwise>
217 </xsl:choose>
218 </xsl:element>
219 </xsl:template>
220 <xsl:template match='a[@method="google" and @query]'>
221 <xsl:element name="a">
222 <xsl:attribute name="href">http://www.google.com/search?q=<xsl:value-of select="@query" /></xsl:attribute>
223 <xsl:choose>
224 <xsl:when test="node()">
225 <xsl:apply-templates />
226 </xsl:when>
227 <xsl:otherwise>
228 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text> `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
229 </xsl:otherwise>
230 </xsl:choose>
231 </xsl:element>
232 </xsl:template>
233 <xsl:template match="a[@query]/query">
234 <xsl:value-of select="../@query" />
235 </xsl:template>
238 <xsl:template name="name-to-binding">
239 <xsl:param name="name" />
240 <varname><xsl:value-of select="$name" /></varname>
241 </xsl:template>
242 <xsl:template name="name-to-linked-binding">
243 <xsl:param name="extension" />
244 <xsl:param name="extension-href" />
245 <xsl:param name="name" />
246 <xsl:element name="a">
247 <xsl:attribute name="class">discrete</xsl:attribute>
248 <xsl:attribute name="href">
249 <xsl:choose>
250 <xsl:when test="$extension">
251 <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" />
252 </xsl:when>
253 <xsl:when test="$extension-href">
254 <xsl:value-of select="$extension-href" />#bind/<xsl:value-of select="$name" />
255 </xsl:when>
256 <xsl:otherwise>
257 <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" />
258 </xsl:otherwise>
259 </xsl:choose>
260 </xsl:attribute>
261 <xsl:call-template name="name-to-binding">
262 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
263 </xsl:call-template>
264 </xsl:element>
265 </xsl:template>
266 <xsl:template match="binding[@name and not(@extension)]">
267 <xsl:call-template name="name-to-linked-binding">
268 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
269 </xsl:call-template>
270 </xsl:template>
271 <xsl:template match="binding[@name and @extension]">
272 <xsl:call-template name="name-to-linked-binding">
273 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
274 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
275 </xsl:call-template>
276 </xsl:template>
277 <xsl:template match="user-binding[@name]">
278 <xsl:call-template name="name-to-binding">
279 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
280 </xsl:call-template>
281 </xsl:template>
283 <xsl:template name="name-to-dynvar">
284 <xsl:param name="name" />
285 <varname>@<xsl:value-of select="$name" /></varname>
286 </xsl:template>
287 <xsl:template name="name-to-linked-dynvar">
288 <xsl:param name="extension" />
289 <xsl:param name="extension-href" />
290 <xsl:param name="name" />
291 <xsl:element name="a">
292 <xsl:attribute name="class">discrete</xsl:attribute>
293 <xsl:attribute name="href">
294 <xsl:choose>
295 <xsl:when test="$extension">
296 <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" />
297 </xsl:when>
298 <xsl:when test="$extension-href">
299 <xsl:value-of select="$extension-href" />#dyn/<xsl:value-of select="$name" />
300 </xsl:when>
301 <xsl:otherwise>
302 <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" />
303 </xsl:otherwise>
304 </xsl:choose>
305 </xsl:attribute>
306 <xsl:call-template name="name-to-dynvar">
307 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
308 </xsl:call-template>
309 </xsl:element>
310 </xsl:template>
311 <xsl:template match="dynvar[@name and not(@extension)]">
312 <xsl:call-template name="name-to-linked-dynvar">
313 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
314 </xsl:call-template>
315 </xsl:template>
316 <xsl:template match="dynvar[@name and @extension]">
317 <xsl:call-template name="name-to-linked-dynvar">
318 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
319 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
320 </xsl:call-template>
321 </xsl:template>
323 <xsl:template name="name-to-state">
324 <xsl:param name="name" />
325 <varname><xsl:value-of select="$name" /></varname>
326 </xsl:template>
327 <xsl:template name="name-to-linked-state">
328 <xsl:param name="name" />
329 <xsl:element name="a">
330 <xsl:attribute name="class">discrete</xsl:attribute>
331 <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>
332 <xsl:call-template name="name-to-state">
333 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
334 </xsl:call-template>
335 </xsl:element>
336 </xsl:template>
337 <xsl:template match="state[@name]">
338 <xsl:call-template name="name-to-linked-state">
339 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
340 </xsl:call-template>
341 </xsl:template>
343 <xsl:template name="name-to-type">
344 <xsl:param name="name" />
345 <typename>§<xsl:value-of select="$name" /></typename>
346 </xsl:template>
347 <xsl:template name="name-to-linked-type">
348 <xsl:param name="name" />
349 <xsl:element name="a">
350 <xsl:attribute name="class">discrete</xsl:attribute>
351 <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>
352 <xsl:call-template name="name-to-type">
353 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
354 </xsl:call-template>
355 </xsl:element>
356 </xsl:template>
357 <xsl:template match="named-type[@name and not(@link)]">
358 <xsl:call-template name="name-to-linked-type">
359 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
360 </xsl:call-template>
361 </xsl:template>
362 <xsl:template match="named-type[@name and @link='no']">
363 <xsl:call-template name="name-to-type">
364 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
365 </xsl:call-template>
366 </xsl:template>
368 <xsl:template name="name-to-template-type">
369 <xsl:param name="name" />
370 <typename class="template">§<xsl:value-of select="$name" /></typename>
371 </xsl:template>
372 <xsl:template match="template-type[@name]">
373 <xsl:call-template name="name-to-template-type">
374 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
375 </xsl:call-template>
376 </xsl:template>
378 <xsl:template name="name-to-state-type">
379 <xsl:param name="name" />
380 <typename>§•<xsl:value-of select="$name" /></typename>
381 </xsl:template>
382 <xsl:template name="name-to-linked-state-type">
383 <xsl:param name="name" />
384 <xsl:element name="a">
385 <xsl:attribute name="class">discrete</xsl:attribute>
386 <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>
387 <xsl:call-template name="name-to-state-type">
388 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
389 </xsl:call-template>
390 </xsl:element>
391 </xsl:template>
392 <xsl:template match="named-state-type[@name and not(@link)]">
393 <xsl:call-template name="name-to-linked-state-type">
394 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
395 </xsl:call-template>
396 </xsl:template>
397 <xsl:template match="named-state-type[@name and @link='no']">
398 <xsl:call-template name="name-to-state-type">
399 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
400 </xsl:call-template>
401 </xsl:template>
403 <xsl:template name="name-to-template-state-type">
404 <xsl:param name="name" />
405 <typename class="template">§•<xsl:value-of select="$name" /></typename>
406 </xsl:template>
407 <xsl:template match="template-state-type[@name]">
408 <xsl:call-template name="name-to-template-state-type">
409 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
410 </xsl:call-template>
411 </xsl:template>
413 <xsl:template name="name-to-mutator">
414 <xsl:param name="name" />
415 <varname><xsl:value-of select="$name" /></varname>
416 </xsl:template>
417 <xsl:template name="name-to-linked-mutator">
418 <xsl:param name="extension" />
419 <xsl:param name="extension-href" />
420 <xsl:param name="type" />
421 <xsl:param name="name" />
422 <xsl:element name="a">
423 <xsl:attribute name="class">discrete</xsl:attribute>
424 <xsl:attribute name="href">
425 <xsl:choose>
426 <xsl:when test="$extension">
427 <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" />
428 </xsl:when>
429 <xsl:when test="$extension-href">
430 <xsl:value-of select="$extension-href" />#mutator/<xsl:value-of select="$type" />/<xsl:value-of select="$name" />
431 </xsl:when>
432 <xsl:otherwise>
433 <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" />
434 </xsl:otherwise>
435 </xsl:choose>
436 </xsl:attribute>
437 <xsl:call-template name="name-to-state-type">
438 <xsl:with-param name="name"><xsl:value-of select="$type" /></xsl:with-param>
439 </xsl:call-template>
440 <inline>/</inline>
441 <xsl:call-template name="name-to-mutator">
442 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
443 </xsl:call-template>
444 </xsl:element>
445 </xsl:template>
446 <xsl:template match="mutator[@type and @mutator and not(@extension)]">
447 <xsl:call-template name="name-to-linked-mutator">
448 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
449 <xsl:with-param name="name"><xsl:value-of select="@mutator" /></xsl:with-param>
450 </xsl:call-template>
451 </xsl:template>
452 <xsl:template match="mutator[@type and @mutator and @extension]">
453 <xsl:call-template name="name-to-linked-mutator">
454 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
455 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
456 <xsl:with-param name="name"><xsl:value-of select="@mutator" /></xsl:with-param>
457 </xsl:call-template>
458 </xsl:template>
460 <xsl:template match="tol-param[@name and @link='no']">
461 <tolparam><xsl:value-of select="@name" /></tolparam>
462 </xsl:template>
463 <xsl:template match="tol-param[@name and not(@link)]">
464 <xsl:element name="a">
465 <xsl:attribute name="class">discrete</xsl:attribute>
466 <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>
467 <tolparam><xsl:value-of select="@name" /></tolparam>
468 </xsl:element>
469 </xsl:template>
471 <xsl:template name="name-to-operator">
472 <xsl:param name="name" />
473 <inline><xsl:value-of select="$name" /></inline>
474 </xsl:template>
475 <xsl:template match="operator[@name]">
476 <xsl:call-template name="name-to-operator">
477 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
478 </xsl:call-template>
479 </xsl:template>
480 <xsl:template name="name-to-operator-unary-prefix">
481 <xsl:param name="name" />
482 <inline><xsl:value-of select="$name" /></inline>
483 </xsl:template>
484 <xsl:template match="operator-unary-prefix[@name]">
485 <xsl:call-template name="name-to-operator-unary-prefix">
486 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
487 </xsl:call-template>
488 </xsl:template>
490 <xsl:template match="inline"><inline><xsl:apply-templates/></inline></xsl:template>
491 <xsl:template match="em"><em><xsl:apply-templates/></em></xsl:template>
492 <xsl:template match="b"><b><xsl:apply-templates/></b></xsl:template>
493 <xsl:template match="bnf"><bnf><xsl:apply-templates/></bnf></xsl:template>
494 <xsl:template match="union-type">
495 <typename><xsl:text>( </xsl:text></typename>
496 <xsl:for-each select="./*">
497 <xsl:if test="position() > 1">
498 <typename><xsl:text>| </xsl:text></typename>
499 </xsl:if>
500 <xsl:apply-templates select="." />
501 <xsl:text> </xsl:text>
502 </xsl:for-each>
503 <typename>)</typename>
504 </xsl:template>
505 <xsl:template match="structure-type">
506 <typename><xsl:text>(&gt; </xsl:text></typename>
507 <xsl:for-each select="field">
508 <xsl:if test="@name">
509 <xsl:value-of select="@name" /><xsl:text>::</xsl:text>
510 </xsl:if>
511 <xsl:if test="not(@name)">
512 <xsl:value-of select="position( )" /><xsl:text>::</xsl:text>
513 </xsl:if>
514 <xsl:if test="not(type)">
515 <typename>Any-Type</typename>
516 </xsl:if>
517 <xsl:apply-templates select="type" />
518 <xsl:text> </xsl:text>
519 </xsl:for-each>
520 <typename>&lt;)</typename>
521 </xsl:template>
522 <xsl:template match="structure-type/field">
523 </xsl:template>
524 <xsl:template match="function-type">
525 <typename><xsl:text>( </xsl:text></typename>
526 <xsl:apply-templates select="arguments" />
527 <xsl:text></xsl:text>
528 <xsl:apply-templates select="result" />
529 <typename><xsl:text> )</xsl:text></typename>
530 </xsl:template>
531 <xsl:template match="typename"><typename><xsl:apply-templates/></typename></xsl:template>
532 <xsl:template match="typename[@class='replacable']">
533 <typename class="replacable"><xsl:apply-templates/></typename>
534 </xsl:template>
535 <xsl:template match="replacable-text[@name]">
536 <varname class="replacable"><xsl:value-of select="@name" /></varname>
537 </xsl:template>
539 <xsl:template name="name-to-argument">
540 <xsl:param name="name" />
541 <xsl:param name="class" />
542 <xsl:element name="varname">
543 <xsl:attribute name="class"><xsl:value-of select="$class" /></xsl:attribute>
544 <xsl:value-of select="$name" />
545 </xsl:element>
546 </xsl:template>
547 <xsl:template match="p/arg[@name] | td/arg[@name]">
548 <xsl:call-template name="name-to-argument">
549 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
550 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
551 </xsl:call-template>
552 </xsl:template>
554 <xsl:template name="name-to-state-argument">
555 <xsl:param name="name" />
556 <xsl:param name="class" />
557 <xsl:element name="varname">
558 <xsl:attribute name="class"><xsl:value-of select="$class" /></xsl:attribute>
559 <xsl:call-template name="name-to-state">
560 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
561 </xsl:call-template>
562 </xsl:element>
563 </xsl:template>
564 <xsl:template match="state-arg[@name]">
565 <xsl:call-template name="name-to-state-argument">
566 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
567 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
568 </xsl:call-template>
569 </xsl:template>
571 <xsl:template match="field[@name and not(@class)]">
572 <varname><xsl:value-of select="@name" /></varname>
573 </xsl:template>
574 <xsl:template match="field[@name and @class='replacable']">
575 <varname class="replacable"><xsl:value-of select="@name" /></varname>
576 </xsl:template>
578 <xsl:template match="lexerregexp">
579 <lexerregexp><xsl:apply-templates/></lexerregexp>
580 </xsl:template>
581 <xsl:template match="syntax[@name and @class='new']">
582 <xsl:element name="a">
583 <xsl:attribute name="name">stx/<xsl:value-of select="@name" /></xsl:attribute>
584 <syntaxname class="new"><xsl:value-of select="@name"/></syntaxname>
585 </xsl:element>
586 </xsl:template>
587 <xsl:template match="syntax[@name and not(@class)]">
588 <xsl:element name="a">
589 <xsl:attribute name="class">discrete</xsl:attribute>
590 <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>
591 <syntaxname><xsl:value-of select="@name"/></syntaxname>
592 </xsl:element>
593 </xsl:template>
594 <xsl:template match="a[@href]">
595 <xsl:element name="a">
596 <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
597 <xsl:apply-templates/>
598 </xsl:element>
599 </xsl:template>
600 <xsl:template match="command-line">
601 <pre class="terminal">
602 <xsl:apply-templates/>
603 </pre>
604 </xsl:template>
606 <xsl:template match="tight-table">
607 <table class="tight"><xsl:apply-templates select="tr"/></table>
608 </xsl:template>
609 <xsl:template match="loose-table">
610 <table class="loose"><xsl:apply-templates select="tr"/></table>
611 </xsl:template>
613 <xsl:template match="tr">
614 <tr><xsl:apply-templates/></tr>
615 </xsl:template>
616 <xsl:template match="tr[@align]">
617 <xsl:element name="tr">
618 <xsl:attribute name="align"><xsl:value-of select="./@align" /></xsl:attribute>
619 <xsl:apply-templates/>
620 </xsl:element>
621 </xsl:template>
622 <xsl:template match="head/tr/td">
623 <th><xsl:apply-templates/></th>
624 </xsl:template>
625 <xsl:template match="td">
626 <td><xsl:apply-templates/></td>
627 </xsl:template>
628 <xsl:template match="th">
629 <th><xsl:apply-templates/></th>
630 </xsl:template>
631 <xsl:template match="th[@colspan]">
632 <xsl:element name="th">
633 <xsl:attribute name="colspan"><xsl:value-of select="./@colspan" /></xsl:attribute>
634 <xsl:apply-templates/>
635 </xsl:element>
636 </xsl:template>
638 <xsl:template match="img[@*]">
639 <xsl:element name="img">
640 <xsl:attribute name="src"><xsl:value-of select="@src" /></xsl:attribute>
641 <xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute>
642 </xsl:element>
643 </xsl:template>
645 <xsl:template match="arguments">
646 <xsl:apply-templates select="arg | state"/>
647 <xsl:apply-templates select="sink"/>
648 </xsl:template>
650 <xsl:template match="arguments/arg">
651 <xsl:if test="@identifier">
652 <xsl:call-template name="name-to-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
653 </xsl:if>
654 <xsl:apply-templates select="default"/>
655 <xsl:apply-templates select="type"/>
656 <xsl:text>   </xsl:text>
657 </xsl:template>
658 <xsl:template match="arguments/arg/default">:<xsl:apply-templates /></xsl:template>
659 <xsl:template match="arguments/arg/type"><xsl:text>::</xsl:text><xsl:apply-templates /></xsl:template>
661 <xsl:template match="arguments/state[@identifier]">
662 <xsl:call-template name="name-to-state-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
663 <xsl:apply-templates select="type"/>
664 <xsl:text>   </xsl:text>
665 </xsl:template>
666 <xsl:template match="arguments/state[not(@identifier)]">
667 <xsl:apply-templates select="type"/>
668 <xsl:text>   </xsl:text>
669 </xsl:template>
670 <xsl:template match="arguments/state/type"><xsl:text>::</xsl:text><xsl:apply-templates /></xsl:template>
672 <xsl:template match="arguments/sink[@identifier]">
673 <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>
674 <xsl:apply-templates select="type"/>
675 <xsl:text>   </xsl:text>
676 </xsl:template>
677 <xsl:template match="arguments/sink[not(@identifier)]">
678 <xsl:text>&lt;&gt;</xsl:text>
679 <xsl:apply-templates select="type"/>
680 <xsl:text>   </xsl:text>
681 </xsl:template>
682 <xsl:template match="arguments/sink/type"><xsl:text>::{</xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text></xsl:template>
684 <xsl:template match="type-templates">
685 <table class="type-templates">
686 <xsl:apply-templates />
687 </table>
688 </xsl:template>
689 <xsl:template match="type-templates/template[@name]">
690 <tr>
691 <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>
692 <td>
693 <xsl:apply-templates select="description"/>
694 </td>
695 </tr>
696 </xsl:template>
697 <xsl:template match="type-templates/template-state[@name]">
698 <tr>
699 <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>
700 <td>
701 <xsl:apply-templates select="description"/>
702 </td>
703 </tr>
704 </xsl:template>
706 <xsl:template match="eq"><eq><xsl:apply-templates/></eq></xsl:template>
707 <xsl:template match="eq//op"><span class="rm"><xsl:apply-templates/></span></xsl:template>
708 <xsl:template match="eq//rm"><span class="rm"><xsl:apply-templates/></span></xsl:template>
709 <xsl:template match="eq//text"><span class="text"><xsl:apply-templates/></span></xsl:template>
710 <xsl:template match="eq//sub"><span class="sub"><xsl:apply-templates/></span></xsl:template>
711 <xsl:template match="eq//sup"><span class="sup"><xsl:apply-templates/></span></xsl:template>
713 </xsl:stylesheet>