Merge branch 'ht/graphs'
[shapes.git] / doc / parts / formats / html.xsl
blob3b07d1d165aa27f3d3e6bf9dd567ad6016ef1650
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, 2009, 2010, 2013, 2014 Henrik Tidefelt -->
20 <xsl:stylesheet
21 version="2.0"
22 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
23 xmlns="http://www.w3.org/1999/xhtml"
26 <xsl:template match="str-PDF"><span class="medium-caps">pdf</span></xsl:template>
27 <xsl:template match="str-HTML"><span class="medium-caps">html</span></xsl:template>
28 <xsl:template match="str-XML"><span class="medium-caps">xml</span></xsl:template>
29 <xsl:template match="str-SVG"><span class="medium-caps">svg</span></xsl:template>
30 <xsl:template match="str-PNG"><span class="medium-caps">png</span></xsl:template>
31 <xsl:template match="str-JPEG"><span class="medium-caps">jpeg</span></xsl:template>
32 <xsl:template match="str-DAG"><span class="medium-caps">dag</span></xsl:template>
33 <xsl:template match="str-PostScript">PostScript</xsl:template>
34 <xsl:template match="str-Shapes">Shapes</xsl:template>
35 <xsl:template match="str-shapes-mode"><em>shapes-mode</em></xsl:template>
36 <xsl:template match="str-TeX"><span class="tex">T<sub>e</sub>X</span></xsl:template>
37 <xsl:template match="str-LaTeX"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
38 <xsl:template match="str-pdfLaTeX"><span class="latex">pdfL<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
39 <xsl:template match="str-MetaPost">MetaPost</xsl:template>
40 <xsl:template match="str-C-plus-plus"><span class="medium-caps">c</span>++</xsl:template>
41 <xsl:template match="str-UTF-8"><span class="medium-caps">utf</span>-8</xsl:template>
42 <xsl:template match="str-2D">2<span class="medium-caps"><sup>d</sup></span></xsl:template>
43 <xsl:template match="str-3D">3<span class="medium-caps"><sup>d</sup></span></xsl:template>
45 <xsl:template name="str-Google" match="str-Google"><span class="Google"><span class="blue">G</span><span class="red">o</span><span class="yellow">o</span><span class="blue">g</span><span class="green">l</span><span class="red">e</span><span class="black"></span></span></xsl:template>
47 <xsl:template match="abbr-etc">&amp;c</xsl:template>
49 <xsl:template match="char-cdot">*</xsl:template>
50 <xsl:template match="char-bullet"></xsl:template>
51 <xsl:template match="char-str-open">`</xsl:template>
52 <xsl:template match="char-str-close">´</xsl:template>
54 <xsl:template match="const-false"><span class="rm">false</span></xsl:template>
55 <xsl:template match="const-true"><span class="rm">true</span></xsl:template>
57 <xsl:template match="x-hat"><b>x</b></xsl:template>
58 <xsl:template match="y-hat"><b>y</b></xsl:template>
59 <xsl:template match="z-hat"><b>z</b></xsl:template>
61 <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>
62 <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>
63 <xsl:template match="quote"><xsl:apply-templates /></xsl:template>
65 <xsl:template match="p[not(@class)]">
66 <div class="p"><xsl:apply-templates/></div>
67 </xsl:template>
68 <xsl:template match="p[@class='center']">
69 <div class="p" style="text-align:center;"><xsl:apply-templates/></div>
70 </xsl:template>
71 <xsl:template match="p[@class='todo']">
72 <div class="p todo"><xsl:apply-templates/></div>
73 </xsl:template>
75 <xsl:template match="ol">
76 <ol><xsl:apply-templates/></ol>
77 </xsl:template>
78 <xsl:template match="ol/li">
79 <li><xsl:apply-templates/></li>
80 </xsl:template>
82 <xsl:template match="ul">
83 <ul><xsl:apply-templates/></ul>
84 </xsl:template>
85 <xsl:template match="ul/li">
86 <li><xsl:apply-templates/></li>
87 </xsl:template>
89 <xsl:template match="pre">
90 <pre>
91 <xsl:apply-templates/>
92 </pre>
93 </xsl:template>
94 <xsl:template match="pre[@class]">
95 <xsl:element name="pre">
96 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
97 <xsl:apply-templates/>
98 </xsl:element>
99 </xsl:template>
101 <xsl:template match="note">
102 <table class="note">
103 <tr><td><xsl:apply-templates/></td></tr>
104 </table>
105 </xsl:template>
107 <xsl:template match="see-also">
108 <div class="p">
109 <b>See also:</b>
110 <xsl:for-each select="*">
111 <xsl:text> </xsl:text>
112 <span class="horizontal-item">
113 <xsl:apply-templates select="."/>
114 </span>
115 </xsl:for-each>
116 </div>
117 </xsl:template>
119 <xsl:template name="under-development-banner">
120 <div class="upper-right-banner">
121 <div class="banner-content">Under development</div>
122 </div>
123 </xsl:template>
125 <xsl:template name="version-header">
126 <div class="version-header"><xsl:text>For version </xsl:text>
127 <xsl:choose>
128 <xsl:when test="/book/shapes-version"><xsl:value-of select="/book/shapes-version/@number" /></xsl:when>
129 <xsl:when test="/man/manhead/shapes-version"><xsl:value-of select="/man/manhead/shapes-version/@number" /></xsl:when>
130 </xsl:choose>
131 <xsl:text>.</xsl:text>
132 </div>
133 </xsl:template>
135 <xsl:template name="head-navigation" >
136 <xsl:call-template name="version-header" />
137 <div class="p">
138 <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>
139 <xsl:if test="/book/up-link">
140 <xsl:text>  Up: </xsl:text><xsl:apply-templates select="/book/up-link" />
141 </xsl:if>
142 </div>
143 </xsl:template>
145 <xsl:template name="part-to-href">
146 <xsl:param name="name" />
147 <xsl:value-of select="/book/base/@href" /><xsl:choose>
148 <xsl:when test="$name='structure'">structure.html</xsl:when>
149 <xsl:when test="$name='syntax'">syntax.html</xsl:when>
150 <xsl:when test="$name='bindings'">bindings.html</xsl:when>
151 <xsl:when test="$name='states'">states.html</xsl:when>
152 <xsl:when test="$name='dynamic'">dynamic.html</xsl:when>
153 <xsl:when test="$name='types'">types.html</xsl:when>
154 <xsl:when test="$name='state-types'">state-types.html</xsl:when>
155 <xsl:when test="$name='algo-tol'">algo-tol.html</xsl:when>
156 <xsl:when test="$name='man'">man.html</xsl:when>
157 <xsl:when test="$name='tutorial'">tutorial.html</xsl:when>
158 <xsl:when test="$name='guides'">guides.html</xsl:when>
159 <xsl:when test="$name='extensions'">extensions/index.html</xsl:when>
160 <xsl:when test="$name='install'">install.html</xsl:when>
161 <xsl:when test="$name='interactive'">interactive.html</xsl:when>
162 <xsl:when test="$name='edit'">edit.html</xsl:when>
163 <xsl:when test="$name='namespace-index'">namespace-index.html</xsl:when>
164 </xsl:choose>
165 </xsl:template>
166 <xsl:template name="extension-to-href">
167 <xsl:param name="namespace" />
168 <xsl:param name="name" />
169 <xsl:choose>
170 <xsl:when test="$namespace">
171 <xsl:value-of select="/book/base/@href" /><xsl:text>extensions/</xsl:text><xsl:value-of select="replace(replace($namespace, '^\.\.', ''), '\.\.', '-')" />-<xsl:value-of select="$name" /><xsl:text>.html</xsl:text>
172 </xsl:when>
173 <xsl:otherwise>
174 <xsl:value-of select="/book/base/@href" /><xsl:text>extensions/</xsl:text><xsl:value-of select="$name" /><xsl:text>.html</xsl:text>
175 </xsl:otherwise>
176 </xsl:choose>
177 </xsl:template>
178 <xsl:template name="guide-to-href">
179 <xsl:param name="name" />
180 <xsl:value-of select="/book/base/@href" /><xsl:text>guides/</xsl:text><xsl:value-of select="$name" /><xsl:text>.html</xsl:text>
181 </xsl:template>
182 <xsl:template name="id-to-anchor-name">
183 <xsl:param name="id" />
184 <xsl:value-of select="replace(replace(concat('secid:', $id), '-', '--'), '/', '-.')" />
185 </xsl:template>
186 <xsl:template name="env-var-to-anchor-name">
187 <xsl:param name="id" />
188 <xsl:value-of select="replace(replace(concat('env:', $id), '-', '--'), '/', '-.')" />
189 </xsl:template>
191 <xsl:template match="env-var[@name]">
192 <xsl:element name="a">
193 <xsl:attribute name="class">discrete</xsl:attribute>
194 <xsl:attribute name="href">
195 <xsl:call-template name="part-to-href">
196 <xsl:with-param name="name">man</xsl:with-param>
197 </xsl:call-template>#<xsl:call-template name="env-var-to-anchor-name">
198 <xsl:with-param name="id"><xsl:value-of select="@name" /></xsl:with-param>
199 </xsl:call-template>
200 </xsl:attribute>
201 <xsl:value-of select="@name" />
202 </xsl:element>
203 </xsl:template>
205 <xsl:template match="part-href[@name]">
206 <xsl:call-template name="part-to-href">
207 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
208 </xsl:call-template>
209 </xsl:template>
210 <xsl:template match="extension-href[@name]">
211 <xsl:call-template name="extension-to-href">
212 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
213 </xsl:call-template>
214 </xsl:template>
215 <xsl:template name="name-to-linked-extension">
216 <xsl:param name="current-namespace" />
217 <xsl:param name="namespace" />
218 <xsl:param name="name" />
219 <xsl:variable name="ns">
220 <xsl:choose>
221 <xsl:when test="starts-with($namespace, '..')">
222 <xsl:value-of select="$namespace" />
223 </xsl:when>
224 <xsl:when test="$namespace = ''">
225 <xsl:value-of select="$current-namespace" />
226 </xsl:when>
227 <xsl:when test="$current-namespace = '..'">
228 <xsl:value-of select="concat('..', $namespace)" />
229 </xsl:when>
230 <xsl:otherwise>
231 <xsl:value-of select="concat($current-namespace, '..', $namespace)" />
232 </xsl:otherwise>
233 </xsl:choose>
234 </xsl:variable>
235 <xsl:element name="a">
236 <xsl:attribute name="class">discrete</xsl:attribute>
237 <xsl:attribute name="href">
238 <xsl:call-template name="extension-to-href">
239 <xsl:with-param name="namespace"><xsl:value-of select="$ns" /></xsl:with-param>
240 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
241 </xsl:call-template>
242 </xsl:attribute>
243 <xsl:choose>
244 <xsl:when test="$ns = $current-namespace">
245 <span class="filename"><xsl:value-of select="$name" /></span>
246 </xsl:when>
247 <xsl:when test="$current-namespace != ''">
248 <xsl:variable name="prefix">^<xsl:value-of select="$current-namespace" />\.\.</xsl:variable>
249 <xsl:call-template name="format-namespace-name">
250 <xsl:with-param name="name"><xsl:value-of select="replace($ns, $prefix, '')" /></xsl:with-param>
251 </xsl:call-template>
252 <xsl:text> / </xsl:text>
253 <span class="filename"><xsl:value-of select="$name" /></span>
254 </xsl:when>
255 <xsl:otherwise>
256 <xsl:call-template name="format-namespace-name">
257 <xsl:with-param name="name"><xsl:value-of select="$ns" /></xsl:with-param>
258 </xsl:call-template>
259 <xsl:text> / </xsl:text>
260 <span class="filename"><xsl:value-of select="$name" /></span>
261 </xsl:otherwise>
262 </xsl:choose>
263 </xsl:element>
264 </xsl:template>
265 <xsl:template match="extension[@path]">
266 <xsl:variable name="namespace"><xsl:value-of select="replace(@path, '/.*$', '')" /></xsl:variable>
267 <xsl:variable name="name"><xsl:value-of select="replace(@path, '^.*/', '')" /></xsl:variable>
268 <xsl:call-template name="name-to-linked-extension">
269 <xsl:with-param name="namespace"><xsl:value-of select="$namespace" /></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="/book[namespace]//extension[@name]">
274 <xsl:call-template name="name-to-linked-extension">
275 <xsl:with-param name="current-namespace"><xsl:value-of select="ancestor::book[namespace][1]/namespace" /></xsl:with-param>
276 <xsl:with-param name="namespace"><xsl:value-of select="@namespace" /></xsl:with-param>
277 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
278 </xsl:call-template>
279 </xsl:template>
280 <xsl:template match="/book[not(namespace)]//extension[@name]">
281 <xsl:call-template name="name-to-linked-extension">
282 <xsl:with-param name="namespace"><xsl:value-of select="@namespace" /></xsl:with-param>
283 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
284 </xsl:call-template>
285 </xsl:template>
287 <xsl:template match="guide-href[@name]">
288 <xsl:call-template name="guide-to-href">
289 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
290 </xsl:call-template>
291 </xsl:template>
293 <xsl:template match="a[(@part or @id) and not(@extension)]">
294 <xsl:element name="a">
295 <xsl:attribute name="href">
296 <xsl:if test="@part">
297 <xsl:call-template name="part-to-href">
298 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
299 </xsl:call-template>
300 </xsl:if>
301 <xsl:if test="@id">
302 <xsl:text>#</xsl:text>
303 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
304 </xsl:if>
305 </xsl:attribute>
306 <xsl:choose>
307 <xsl:when test="node()">
308 <xsl:apply-templates />
309 </xsl:when>
310 <xsl:when test="@part">
311 <span class="filename">
312 <xsl:call-template name="part-to-href">
313 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
314 </xsl:call-template>
315 </span>
316 </xsl:when>
317 <xsl:otherwise>
318 <xsl:variable name="dstid">
319 <xsl:value-of select="@id" />
320 </xsl:variable>
321 <xsl:apply-templates select="//section[@id=$dstid]/title" />
322 <xsl:apply-templates select="//example-with-output[@id=$dstid]/@title" />
323 </xsl:otherwise>
324 </xsl:choose>
325 </xsl:element>
326 </xsl:template>
327 <xsl:template match="a[@id]/title">
328 <xsl:variable name="dstid">
329 <xsl:value-of select="../@id" />
330 </xsl:variable>
331 <xsl:apply-templates select="//section[@id=$dstid]/title" />
332 </xsl:template>
333 <xsl:template match="a[@extension]">
334 <xsl:element name="a">
335 <xsl:attribute name="href">
336 <xsl:call-template name="extension-to-href">
337 <xsl:with-param name="name"><xsl:value-of select="@extension" /></xsl:with-param>
338 </xsl:call-template>
339 <xsl:if test="@id">
340 <xsl:text>#</xsl:text>
341 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
342 </xsl:if>
343 </xsl:attribute>
344 <span class="filename"><xsl:value-of select="@extension" /></span>
345 </xsl:element>
346 </xsl:template>
347 <xsl:template match="a[@guide]">
348 <xsl:element name="a">
349 <xsl:attribute name="href">
350 <xsl:call-template name="guide-to-href">
351 <xsl:with-param name="name"><xsl:value-of select="@guide" /></xsl:with-param>
352 </xsl:call-template>
353 <xsl:if test="@id">
354 <xsl:text>#</xsl:text>
355 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
356 </xsl:if>
357 </xsl:attribute>
358 <xsl:apply-templates />
359 </xsl:element>
360 </xsl:template>
362 <xsl:template match='a[@method="google-lucky" and @query]'>
363 <xsl:element name="a">
364 <xsl:attribute name="href">http://www.google.com/search?btnI=I%27m%20Feeling%20Lucky&amp;q=<xsl:value-of select="encode-for-uri(@query)" /></xsl:attribute>
365 <xsl:choose>
366 <xsl:when test="node()">
367 <xsl:apply-templates />
368 </xsl:when>
369 <xsl:otherwise>
370 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text>_lucky `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
371 </xsl:otherwise>
372 </xsl:choose>
373 </xsl:element>
374 </xsl:template>
375 <xsl:template match='a[@method="google" and @query]'>
376 <xsl:element name="a">
377 <xsl:attribute name="href">http://www.google.com/search?q=<xsl:value-of select="encode-for-uri(@query)" /></xsl:attribute>
378 <xsl:choose>
379 <xsl:when test="node()">
380 <xsl:apply-templates />
381 </xsl:when>
382 <xsl:otherwise>
383 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text> `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
384 </xsl:otherwise>
385 </xsl:choose>
386 </xsl:element>
387 </xsl:template>
388 <xsl:template match="a[@query]/query">
389 <xsl:value-of select="../@query" />
390 </xsl:template>
392 <xsl:template name="name-to-linked-type">
393 <xsl:param name="name" />
394 <xsl:element name="a">
395 <xsl:attribute name="class">discrete</xsl:attribute>
396 <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>
397 <xsl:call-template name="format-type-name">
398 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
399 </xsl:call-template>
400 </xsl:element>
401 </xsl:template>
402 <xsl:template name="name-to-linked-statetype">
403 <xsl:param name="name" />
404 <xsl:element name="a">
405 <xsl:attribute name="class">discrete</xsl:attribute>
406 <xsl:attribute name="href"><xsl:call-template name="part-to-href"><xsl:with-param name="name">stete-types</xsl:with-param></xsl:call-template>#statetype:<xsl:value-of select="$name" /></xsl:attribute>
407 <xsl:call-template name="format-type-name">
408 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
409 </xsl:call-template>
410 </xsl:element>
411 </xsl:template>
413 <xsl:template match="named-type[@name and not(@link)]">
414 <xsl:call-template name="name-to-linked-type">
415 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
416 </xsl:call-template>
417 </xsl:template>
418 <xsl:template match="named-type[@name and @link='no']">
419 <xsl:call-template name="format-type-name">
420 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
421 </xsl:call-template>
422 </xsl:template>
424 <xsl:template match="named-statetype[@name and not(@link)]">
425 <xsl:call-template name="name-to-linked-statetype">
426 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
427 </xsl:call-template>
428 </xsl:template>
429 <xsl:template match="named-statetype[@name and @link='no']">
430 <xsl:call-template name="format-statetype-name">
431 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
432 </xsl:call-template>
433 </xsl:template>
434 <xsl:template match="parameter-type[@name]">
435 <xsl:call-template name="name-to-template-type">
436 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
437 </xsl:call-template>
438 </xsl:template>
440 <xsl:template name="format-template-type-name">
441 <xsl:param name="name" />
442 <span class="typename template">§<xsl:value-of select="$name" /></span>
443 </xsl:template>
444 <xsl:template name="format-template-statetype-name">
445 <xsl:param name="name" />
446 <span class="typename template">§•<xsl:value-of select="$name" /></span>
447 </xsl:template>
449 <xsl:template match="template-type[@name]">
450 <xsl:call-template name="format-template-type-name">
451 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
452 </xsl:call-template>
453 </xsl:template>
454 <xsl:template match="template-statetype[@name]">
455 <xsl:call-template name="format-template-statetype-name">
456 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
457 </xsl:call-template>
458 </xsl:template>
460 <xsl:template name="format-mutator-name">
461 <xsl:param name="name" />
462 <span class="varname"><xsl:value-of select="$name" /></span>
463 </xsl:template>
464 <xsl:template name="name-to-linked-mutator">
465 <xsl:param name="extension" />
466 <xsl:param name="extension-href" />
467 <xsl:param name="type" />
468 <xsl:param name="name" />
469 <xsl:element name="a">
470 <xsl:attribute name="class">discrete</xsl:attribute>
471 <xsl:attribute name="href">
472 <xsl:choose>
473 <xsl:when test="$extension">
474 <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" />
475 </xsl:when>
476 <xsl:when test="$extension-href">
477 <xsl:value-of select="$extension-href" />#mutator:<xsl:value-of select="$type" />:<xsl:value-of select="$name" />
478 </xsl:when>
479 <xsl:otherwise>
480 <xsl:call-template name="part-to-href"><xsl:with-param name="name">statetypes</xsl:with-param></xsl:call-template>#mutator:<xsl:value-of select="$type" />:<xsl:value-of select="$name" />
481 </xsl:otherwise>
482 </xsl:choose>
483 </xsl:attribute>
484 <xsl:call-template name="format-statetype-name">
485 <xsl:with-param name="name"><xsl:value-of select="$type" /></xsl:with-param>
486 </xsl:call-template>
487 <span class="inline">/</span>
488 <xsl:call-template name="format-mutator-name">
489 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
490 </xsl:call-template>
491 </xsl:element>
492 </xsl:template>
493 <xsl:template match="mutator[@type and @name and not(@extension)]">
494 <xsl:call-template name="name-to-linked-mutator">
495 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
496 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
497 </xsl:call-template>
498 </xsl:template>
499 <xsl:template match="mutator[@type and @name and @extension]">
500 <xsl:call-template name="name-to-linked-mutator">
501 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
502 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
503 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
504 </xsl:call-template>
505 </xsl:template>
507 <xsl:template name="name-to-tol-param">
508 <xsl:param name="name" />
509 <span class="tolparam"><xsl:value-of select="@name" /></span>
510 </xsl:template>
511 <xsl:template match="tol-param[@name and @link='no']">
512 <xsl:call-template name="name-to-operator">
513 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
514 </xsl:call-template>
515 </xsl:template>
516 <xsl:template match="tol-param[@name and not(@link)]">
517 <xsl:element name="a">
518 <xsl:attribute name="class">discrete</xsl:attribute>
519 <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>
520 <xsl:call-template name="name-to-operator">
521 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
522 </xsl:call-template>
523 </xsl:element>
524 </xsl:template>
526 <xsl:template name="name-to-operator">
527 <xsl:param name="name" />
528 <span class="inline"><xsl:value-of select="$name" /></span>
529 </xsl:template>
530 <xsl:template match="operator[@name]">
531 <xsl:call-template name="name-to-operator">
532 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
533 </xsl:call-template>
534 </xsl:template>
535 <xsl:template name="name-to-operator-unary-prefix">
536 <xsl:param name="name" />
537 <span class="inline"><xsl:value-of select="$name" /></span>
538 </xsl:template>
539 <xsl:template match="operator-unary-prefix[@name]">
540 <xsl:call-template name="name-to-operator-unary-prefix">
541 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
542 </xsl:call-template>
543 </xsl:template>
545 <xsl:template name="format-namespace-name">
546 <xsl:param name="name" />
547 <span class="inline"><xsl:value-of select="$name" /></span>
548 </xsl:template>
549 <xsl:template name="name-to-linked-namespace">
550 <xsl:param name="name" />
551 <xsl:element name="a">
552 <xsl:attribute name="class">discrete</xsl:attribute>
553 <xsl:attribute name="href">
554 <xsl:call-template name="namespace-to-href"><xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param></xsl:call-template>
555 </xsl:attribute>
556 <xsl:call-template name="format-namespace-name">
557 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
558 </xsl:call-template>
559 </xsl:element>
560 </xsl:template>
561 <xsl:template match="user-namespace[@name]">
562 <xsl:call-template name="format-namespace-name">
563 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
564 </xsl:call-template>
565 </xsl:template>
566 <xsl:template match="namespace[@name]">
567 <xsl:call-template name="name-to-linked-namespace">
568 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
569 </xsl:call-template>
570 </xsl:template>
571 <xsl:template match="namespace[@current and @relative]">
572 <xsl:element name="a">
573 <xsl:attribute name="class">discrete</xsl:attribute>
574 <xsl:attribute name="href">
575 <xsl:call-template name="namespace-to-href"><xsl:with-param name="name"><xsl:value-of select="@current" />..<xsl:value-of select="@relative" /></xsl:with-param></xsl:call-template>
576 </xsl:attribute>
577 <xsl:call-template name="format-namespace-name">
578 <xsl:with-param name="name"><xsl:value-of select="@relative" /></xsl:with-param>
579 </xsl:call-template>
580 </xsl:element>
581 </xsl:template>
582 <xsl:template match="/book[namespace]//namespace[@relative and not(@current)]">
583 <xsl:element name="a">
584 <xsl:attribute name="class">discrete</xsl:attribute>
585 <xsl:attribute name="href">
586 <xsl:call-template name="namespace-to-href"><xsl:with-param name="name"><xsl:value-of select="/book/namespace" />..<xsl:value-of select="@relative" /></xsl:with-param></xsl:call-template>
587 </xsl:attribute>
588 <xsl:call-template name="format-namespace-name">
589 <xsl:with-param name="name"><xsl:value-of select="@relative" /></xsl:with-param>
590 </xsl:call-template>
591 </xsl:element>
592 </xsl:template>
594 <xsl:template match="em"><em><xsl:apply-templates/></em></xsl:template>
595 <xsl:template match="b"><b><xsl:apply-templates/></b></xsl:template>
596 <xsl:template match="weak"><span class="weak"><xsl:apply-templates/></span></xsl:template>
597 <xsl:template match="inline"><span class="inline"><xsl:apply-templates/></span></xsl:template>
598 <xsl:template match="bnf"><span class="bnf"><xsl:apply-templates/></span></xsl:template>
599 <xsl:template match="union-type">
600 <span class="typename"><xsl:text>( </xsl:text></span>
601 <xsl:for-each select="./*">
602 <xsl:if test="position() > 1">
603 <span class="typestx"><xsl:text></xsl:text></span><xsl:text> </xsl:text>
604 </xsl:if>
605 <xsl:apply-templates select="." />
606 <xsl:text> </xsl:text>
607 </xsl:for-each>
608 <span class="typename">)</span>
609 </xsl:template>
610 <xsl:template match="singleton-type">
611 <span class="typestx">§(</span>
612 <xsl:apply-templates />
613 <span class="typestx">)</span>
614 </xsl:template>
615 <xsl:template match="intersection-type">
616 <span class="typestx"><xsl:text>(</xsl:text></span><xsl:text> </xsl:text>
617 <xsl:for-each select="./*">
618 <xsl:if test="position() > 1">
619 <span class="typestx"><xsl:text></xsl:text></span><xsl:text> </xsl:text>
620 </xsl:if>
621 <xsl:apply-templates select="." />
622 <xsl:text> </xsl:text>
623 </xsl:for-each>
624 <span class="typestx">)</span>
625 </xsl:template>
626 <xsl:template name="name-to-field">
627 <xsl:param name="name" />
628 <fieldname><xsl:value-of select="$name" /></fieldname>
629 </xsl:template>
630 <xsl:template match="structure-type">
631 <span class="typestx"><xsl:text>(&gt;</xsl:text></span><xsl:text> </xsl:text>
632 <xsl:for-each select="field">
633 <xsl:if test="@name">
634 <xsl:call-template name="name-to-field">
635 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
636 </xsl:call-template>
637 </xsl:if>
638 <xsl:if test="not(@name)">
639 <xsl:value-of select="position( )" />
640 </xsl:if>
641 <xsl:choose>
642 <xsl:when test="type">
643 <xsl:text>::</xsl:text><xsl:apply-templates select="type" />
644 </xsl:when>
645 <xsl:when test="value">
646 <xsl:text>:</xsl:text><xsl:apply-templates select="value" />
647 </xsl:when>
648 <xsl:otherwise>
649 <xsl:text>::</xsl:text><typename>Any-Type</typename>
650 </xsl:otherwise>
651 </xsl:choose>
652 <xsl:text> </xsl:text>
653 </xsl:for-each>
654 <span class="typestx">&lt;)</span>
655 </xsl:template>
656 <xsl:template match="function-type">
657 <span class="typestx"><xsl:text>(</xsl:text></span><xsl:text> </xsl:text>
658 <xsl:apply-templates select="arguments" />
659 <xsl:text> </xsl:text><span class="typestx"><xsl:text></xsl:text></span><xsl:text> </xsl:text>
660 <xsl:apply-templates select="result" />
661 <xsl:text> </xsl:text><span class="typestx"><xsl:text>)</xsl:text></span>
662 </xsl:template>
663 <xsl:template match="typename"><span class="typename"><xsl:apply-templates/></span></xsl:template>
664 <xsl:template match="typename[@class='replacable']">
665 <span class="typename replacable"><xsl:apply-templates/></span>
666 </xsl:template>
667 <xsl:template match="replacable-text[@name]">
668 <span class="varname replacable"><xsl:value-of select="@name" /></span>
669 </xsl:template>
670 <xsl:template match="parameterized-type">
671 <span class="typestx"><xsl:text>[</xsl:text></span>
672 <xsl:call-template name="name-to-linked-type">
673 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
674 </xsl:call-template>
675 <xsl:for-each select="./*">
676 <xsl:text> </xsl:text>
677 <xsl:apply-templates select="." />
678 </xsl:for-each>
679 <span class="typestx"><xsl:text>]</xsl:text></span>
680 </xsl:template>
682 <xsl:template name="name-to-argument">
683 <xsl:param name="name" />
684 <xsl:param name="class" />
685 <xsl:element name="span">
686 <xsl:attribute name="class">varname <xsl:value-of select="$class" /></xsl:attribute>
687 <xsl:value-of select="$name" />
688 </xsl:element>
689 </xsl:template>
690 <xsl:template match="p/arg[@name] | td/arg[@name] | singleton-type/arg[@name]">
691 <xsl:call-template name="name-to-argument">
692 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
693 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
694 </xsl:call-template>
695 </xsl:template>
697 <xsl:template name="name-to-state-argument">
698 <xsl:param name="name" />
699 <xsl:param name="class" />
700 <xsl:element name="span">
701 <xsl:attribute name="class">varname <xsl:value-of select="$class" /></xsl:attribute>
702 <xsl:call-template name="format-state-name">
703 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
704 </xsl:call-template>
705 </xsl:element>
706 </xsl:template>
707 <xsl:template match="state-arg[@name]">
708 <xsl:call-template name="name-to-state-argument">
709 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
710 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
711 </xsl:call-template>
712 </xsl:template>
714 <xsl:template match="field[@name and not(@class)]">
715 <span class="varname"><xsl:value-of select="@name" /></span>
716 </xsl:template>
717 <xsl:template match="field[@name and @class='replacable']">
718 <span class="varname replacable"><xsl:value-of select="@name" /></span>
719 </xsl:template>
721 <xsl:template match="lexerregexp">
722 <span class="lexerregexp"><xsl:apply-templates/></span>
723 </xsl:template>
724 <xsl:template match="syntax[@name and @class='new']">
725 <xsl:element name="a">
726 <xsl:attribute name="name">stx-.<xsl:value-of select="@name" /></xsl:attribute>
727 <span class="syntaxname-new"><xsl:value-of select="@name"/></span>
728 </xsl:element>
729 </xsl:template>
730 <xsl:template match="syntax[@name and not(@class)]">
731 <xsl:element name="a">
732 <xsl:attribute name="class">discrete</xsl:attribute>
733 <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>
734 <span class="syntaxname"><xsl:value-of select="@name"/></span>
735 </xsl:element>
736 </xsl:template>
737 <xsl:template match="a[@href]">
738 <xsl:element name="a">
739 <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
740 <xsl:apply-templates/>
741 </xsl:element>
742 </xsl:template>
744 <xsl:template match="unit">
745 <xsl:element name="span">
746 <xsl:attribute name="class">
747 <xsl:text>unit</xsl:text>
748 <xsl:if test="@class"><xsl:text> </xsl:text><xsl:value-of select="@class" /></xsl:if>
749 </xsl:attribute>
750 <xsl:apply-templates/>
751 </xsl:element>
752 </xsl:template>
754 <xsl:template match="filename"><span class="filename"><xsl:value-of select="." /></span></xsl:template>
755 <xsl:template match="progname"><span class="terminal"><xsl:value-of select="." /></span></xsl:template>
756 <xsl:template match="command-line">
757 <pre class="terminal">
758 <xsl:apply-templates/>
759 </pre>
760 </xsl:template>
762 <xsl:template match="tight-table">
763 <table class="tight"><xsl:apply-templates select="head/tr | body/tr"/></table>
764 </xsl:template>
765 <xsl:template match="loose-table">
766 <table class="loose"><xsl:apply-templates select="head/tr | body/tr"/></table>
767 </xsl:template>
769 <xsl:template match="tr">
770 <tr><xsl:apply-templates/></tr>
771 </xsl:template>
772 <xsl:template match="tr[@align]">
773 <xsl:element name="tr">
774 <xsl:attribute name="align"><xsl:value-of select="./@align" /></xsl:attribute>
775 <xsl:apply-templates/>
776 </xsl:element>
777 </xsl:template>
778 <xsl:template match="head/tr/td">
779 <th><xsl:apply-templates/></th>
780 </xsl:template>
781 <xsl:template match="td">
782 <td><xsl:apply-templates/></td>
783 </xsl:template>
784 <xsl:template match="th">
785 <th><xsl:apply-templates/></th>
786 </xsl:template>
787 <xsl:template match="th[@colspan]">
788 <xsl:element name="th">
789 <xsl:attribute name="colspan"><xsl:value-of select="./@colspan" /></xsl:attribute>
790 <xsl:apply-templates/>
791 </xsl:element>
792 </xsl:template>
794 <xsl:template match="img">
795 <xsl:choose>
796 <xsl:when test="@target">
797 <xsl:element name="a">
798 <xsl:attribute name="href"><xsl:value-of select="iri-to-uri(replace(@src,'%','%25'))" /></xsl:attribute>
799 <xsl:attribute name="target"><xsl:value-of select="@target" /></xsl:attribute>
800 <xsl:element name="img">
801 <xsl:if test="@class">
802 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
803 </xsl:if>
804 <xsl:attribute name="src"><xsl:value-of select="iri-to-uri(replace(@src,'%','%25'))" /></xsl:attribute>
805 <xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute>
806 <xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width" /></xsl:attribute></xsl:if>
807 <xsl:if test="@height"><xsl:attribute name="height"><xsl:value-of select="@height" /></xsl:attribute></xsl:if>
808 </xsl:element>
809 </xsl:element>
810 </xsl:when>
811 <xsl:otherwise>
812 <xsl:element name="img">
813 <xsl:if test="@class">
814 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
815 </xsl:if>
816 <xsl:attribute name="src"><xsl:value-of select="iri-to-uri(replace(@src,'%','%25'))" /></xsl:attribute>
817 <xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute>
818 <xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width" /></xsl:attribute></xsl:if>
819 <xsl:if test="@height"><xsl:attribute name="height"><xsl:value-of select="@height" /></xsl:attribute></xsl:if>
820 </xsl:element>
821 </xsl:otherwise>
822 </xsl:choose>
823 </xsl:template>
824 <xsl:template match="figure[image]">
825 <div class="p">
826 <table class="figure">
827 <tr align="center"><td>
828 <xsl:if test="@id">
829 <xsl:element name="a">
830 <xsl:attribute name="name"><xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template></xsl:attribute>
831 </xsl:element>
832 </xsl:if>
833 <xsl:apply-templates select="image/*" />
834 </td></tr>
835 <tr><td class="here-caption">
836 <xsl:apply-templates select="caption/*" />
837 </td></tr>
838 </table>
839 </div>
840 </xsl:template>
843 <xsl:template match="arguments">
844 <xsl:for-each select="arg | state">
845 <xsl:if test="position() > 1">
846 <xsl:text> </xsl:text>
847 </xsl:if>
848 <xsl:apply-templates select="." />
849 </xsl:for-each>
850 <xsl:if test="sink">
851 <xsl:if test="arg | state">
852 <xsl:text> </xsl:text>
853 </xsl:if>
854 <xsl:apply-templates select="sink"/>
855 </xsl:if>
856 </xsl:template>
858 <xsl:template match="arguments/arg">
859 <xsl:if test="@identifier">
860 <xsl:call-template name="name-to-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
861 </xsl:if>
862 <xsl:apply-templates select="default"/>
863 <xsl:apply-templates select="type"/>
864 </xsl:template>
865 <xsl:template match="arguments/arg/default">:<xsl:apply-templates /></xsl:template>
866 <xsl:template match="arguments/arg/type"><xsl:text>::</xsl:text><xsl:apply-templates select="*" /></xsl:template>
868 <xsl:template match="arguments/state[@identifier]">
869 <xsl:call-template name="name-to-state-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
870 <xsl:apply-templates select="type"/>
871 </xsl:template>
872 <xsl:template match="arguments/state[not(@identifier)]">
873 <xsl:apply-templates select="type"/>
874 </xsl:template>
875 <xsl:template match="arguments/state/type"><xsl:text>::</xsl:text><xsl:apply-templates /></xsl:template>
877 <xsl:template match="arguments/sink[@identifier]">
878 <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>
879 <xsl:apply-templates select="type"/>
880 </xsl:template>
881 <xsl:template match="arguments/sink[not(@identifier)]">
882 <xsl:text>&lt;&gt;</xsl:text>
883 <xsl:apply-templates select="type"/>
884 </xsl:template>
885 <xsl:template match="arguments/sink/type"><xsl:text>::{</xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text></xsl:template>
887 <xsl:template match="type-templates">
888 <table class="type-templates">
889 <xsl:apply-templates />
890 </table>
891 </xsl:template>
892 <xsl:template match="type-templates/template[@name]">
893 <tr>
894 <td align="right"><xsl:call-template name="format-template-type-name"><xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param></xsl:call-template>  </td>
895 <td>
896 <xsl:apply-templates select="description"/>
897 </td>
898 </tr>
899 </xsl:template>
900 <xsl:template match="type-templates/template-state[@name]">
901 <tr>
902 <td align="right"><xsl:call-template name="format-template-statetype-name"><xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param></xsl:call-template>  </td>
903 <td>
904 <xsl:apply-templates select="description"/>
905 </td>
906 </tr>
907 </xsl:template>
909 <xsl:template match="book[namespace and not(extension)]/title/self">
910 <xsl:value-of select="../../namespace" />
911 </xsl:template>
912 <xsl:template match="/book[namespace and not(extension)]/top/p/self">
913 <xsl:call-template name="format-namespace-name">
914 <xsl:with-param name="name"><xsl:value-of select="/book/namespace" /></xsl:with-param>
915 </xsl:call-template>
916 </xsl:template>
918 <xsl:template match="book[namespace and extension]/title/self">
919 <xsl:value-of select="../../extension" />
920 </xsl:template>
921 <xsl:template match="/book[namespace and extension]/top/p/self">
922 <span class="filename"><xsl:value-of select="ancestor::book/extension" /></span>
923 </xsl:template>
925 <xsl:template match="book[namespace and not(extension)]/meta-selflink/self-href">
926 <xsl:call-template name="namespace-to-href">
927 <xsl:with-param name="name"><xsl:value-of select="../../namespace" /></xsl:with-param>
928 </xsl:call-template>
929 </xsl:template>
930 <xsl:template match="book[namespace and extension]/meta-selflink/self-href">
931 <xsl:call-template name="extension-to-href">
932 <xsl:with-param name="namespace"><xsl:value-of select="../../namespace" /></xsl:with-param>
933 <xsl:with-param name="name"><xsl:value-of select="../../extension" /></xsl:with-param>
934 </xsl:call-template>
935 </xsl:template>
937 <xsl:template match="book[namespace and not(extension)]/up-link/parent-namespace">
938 <xsl:variable name="ns"><xsl:value-of select="../../namespace" /></xsl:variable>
939 <xsl:call-template name="name-to-linked-namespace">
940 <xsl:with-param name="name"><xsl:value-of select="replace($ns, '\.\.[^.]*$', '')" /></xsl:with-param>
941 </xsl:call-template>
942 </xsl:template>
943 <xsl:template match="book[namespace and extension]/up-link/parent-namespace">
944 <xsl:call-template name="name-to-linked-namespace">
945 <xsl:with-param name="name"><xsl:value-of select="../../namespace" /></xsl:with-param>
946 </xsl:call-template>
947 </xsl:template>
949 <xsl:template match="type-parameters">
950 <table class="type-templates">
951 <xsl:apply-templates />
952 </table>
953 </xsl:template>
954 <xsl:template match="type-parameters/parameter[@name]">
955 <tr>
956 <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>
957 <td>
958 <xsl:apply-templates select="description"/>
959 </td>
960 </tr>
961 </xsl:template>
962 <xsl:template match="type-parameters/parameter-state[@name]">
963 <tr>
964 <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>
965 <td>
966 <xsl:apply-templates select="description"/>
967 </td>
968 </tr>
969 </xsl:template>
971 <xsl:template name="SF-placeholder" >
972 <xsl:comment>PUT-SF-LOGO-HERE</xsl:comment>
973 </xsl:template>
975 <xsl:template match="eq"><span class="eq"><xsl:apply-templates/></span></xsl:template>
976 <xsl:template match="eq//op"><span class="rm"><xsl:apply-templates/></span></xsl:template>
977 <xsl:template match="eq//rm"><span class="rm"><xsl:apply-templates/></span></xsl:template>
978 <xsl:template match="eq//text"><span class="text"><xsl:apply-templates/></span></xsl:template>
979 <xsl:template match="eq//sub"><sub><xsl:apply-templates/></sub></xsl:template>
980 <xsl:template match="eq//sup"><sup><xsl:apply-templates/></sup></xsl:template>
982 </xsl:stylesheet>