Doc: Update all references to extensions
[shapes.git] / doc / parts / formats / html.xsl
blobc61adca1f3c8d57f0bf6a6695eaef26637893f51
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, 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-PostScript">PostScript</xsl:template>
33 <xsl:template match="str-Shapes">Shapes</xsl:template>
34 <xsl:template match="str-shapes-mode"><em>shapes-mode</em></xsl:template>
35 <xsl:template match="str-TeX"><span class="tex">T<sub>e</sub>X</span></xsl:template>
36 <xsl:template match="str-LaTeX"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
37 <xsl:template match="str-pdfLaTeX"><span class="latex">pdfL<sup>a</sup>T<sub>e</sub>X</span></xsl:template>
38 <xsl:template match="str-MetaPost">MetaPost</xsl:template>
39 <xsl:template match="str-C-plus-plus"><span class="medium-caps">c</span>++</xsl:template>
40 <xsl:template match="str-UTF-8"><span class="medium-caps">utf</span>-8</xsl:template>
41 <xsl:template match="str-2D">2<span class="medium-caps"><sup>d</sup></span></xsl:template>
42 <xsl:template match="str-3D">3<span class="medium-caps"><sup>d</sup></span></xsl:template>
44 <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>
46 <xsl:template match="abbr-etc">&amp;c</xsl:template>
48 <xsl:template match="char-cdot">*</xsl:template>
49 <xsl:template match="char-bullet"></xsl:template>
50 <xsl:template match="char-str-open">`</xsl:template>
51 <xsl:template match="char-str-close">´</xsl:template>
53 <xsl:template match="const-false"><span class="rm">false</span></xsl:template>
54 <xsl:template match="const-true"><span class="rm">true</span></xsl:template>
56 <xsl:template match="x-hat"><b>x</b></xsl:template>
57 <xsl:template match="y-hat"><b>y</b></xsl:template>
58 <xsl:template match="z-hat"><b>z</b></xsl:template>
60 <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>
61 <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>
62 <xsl:template match="quote"><xsl:apply-templates /></xsl:template>
64 <xsl:template match="p[not(@class)]">
65 <div class="p"><xsl:apply-templates/></div>
66 </xsl:template>
67 <xsl:template match="p[@class='center']">
68 <div class="p" style="text-align:center;"><xsl:apply-templates/></div>
69 </xsl:template>
70 <xsl:template match="p[@class='todo']">
71 <div class="p todo"><xsl:apply-templates/></div>
72 </xsl:template>
74 <xsl:template match="ol">
75 <ol><xsl:apply-templates/></ol>
76 </xsl:template>
77 <xsl:template match="ol/li">
78 <li><xsl:apply-templates/></li>
79 </xsl:template>
81 <xsl:template match="ul">
82 <ul><xsl:apply-templates/></ul>
83 </xsl:template>
84 <xsl:template match="ul/li">
85 <li><xsl:apply-templates/></li>
86 </xsl:template>
88 <xsl:template match="pre">
89 <pre>
90 <xsl:apply-templates/>
91 </pre>
92 </xsl:template>
93 <xsl:template match="pre[@class]">
94 <xsl:element name="pre">
95 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
96 <xsl:apply-templates/>
97 </xsl:element>
98 </xsl:template>
100 <xsl:template match="note">
101 <table class="note">
102 <tr><td><xsl:apply-templates/></td></tr>
103 </table>
104 </xsl:template>
106 <xsl:template match="see-also">
107 <div class="p">
108 <b>See also:</b>
109 <xsl:for-each select="*">
110 <xsl:text> </xsl:text>
111 <span class="horizontal-item">
112 <xsl:apply-templates select="."/>
113 </span>
114 </xsl:for-each>
115 </div>
116 </xsl:template>
118 <xsl:template name="version-header">
119 <div class="version-header"><xsl:text>For version </xsl:text>
120 <xsl:choose>
121 <xsl:when test="/book/shapes-version"><xsl:value-of select="/book/shapes-version/@number" /></xsl:when>
122 <xsl:when test="/man/manhead/shapes-version"><xsl:value-of select="/man/manhead/shapes-version/@number" /></xsl:when>
123 </xsl:choose>
124 <xsl:text>.</xsl:text>
125 </div>
126 </xsl:template>
128 <xsl:template name="head-navigation" >
129 <xsl:call-template name="version-header" />
130 <div class="p">
131 <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>
132 <xsl:if test="/book/up-link">
133 <xsl:text>  Up: </xsl:text><xsl:apply-templates select="/book/up-link" />
134 </xsl:if>
135 </div>
136 </xsl:template>
138 <xsl:template name="part-to-href">
139 <xsl:param name="name" />
140 <xsl:value-of select="/book/base/@href" /><xsl:choose>
141 <xsl:when test="$name='structure'">structure.html</xsl:when>
142 <xsl:when test="$name='syntax'">syntax.html</xsl:when>
143 <xsl:when test="$name='bindings'">bindings.html</xsl:when>
144 <xsl:when test="$name='states'">states.html</xsl:when>
145 <xsl:when test="$name='dynamic'">dynamic.html</xsl:when>
146 <xsl:when test="$name='types'">types.html</xsl:when>
147 <xsl:when test="$name='state-types'">state-types.html</xsl:when>
148 <xsl:when test="$name='algo-tol'">algo-tol.html</xsl:when>
149 <xsl:when test="$name='man'">man.html</xsl:when>
150 <xsl:when test="$name='tutorial'">tutorial.html</xsl:when>
151 <xsl:when test="$name='extensions'">extensions/index.html</xsl:when>
152 <xsl:when test="$name='install'">install.html</xsl:when>
153 <xsl:when test="$name='interactive'">interactive.html</xsl:when>
154 <xsl:when test="$name='edit'">edit.html</xsl:when>
155 <xsl:when test="$name='namespace-index'">namespace-index.html</xsl:when>
156 </xsl:choose>
157 </xsl:template>
158 <xsl:template name="extension-to-href">
159 <xsl:param name="namespace" />
160 <xsl:param name="name" />
161 <xsl:choose>
162 <xsl:when test="$namespace">
163 <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>
164 </xsl:when>
165 <xsl:otherwise>
166 <xsl:value-of select="/book/base/@href" /><xsl:text>extensions/</xsl:text><xsl:value-of select="$name" /><xsl:text>.html</xsl:text>
167 </xsl:otherwise>
168 </xsl:choose>
169 </xsl:template>
170 <xsl:template name="id-to-anchor-name">
171 <xsl:param name="id" />
172 <xsl:value-of select="replace(replace(concat('secid:', $id), '-', '--'), '/', '-.')" />
173 </xsl:template>
174 <xsl:template name="env-var-to-anchor-name">
175 <xsl:param name="id" />
176 <xsl:value-of select="replace(replace(concat('env:', $id), '-', '--'), '/', '-.')" />
177 </xsl:template>
179 <xsl:template match="env-var[@name]">
180 <xsl:element name="a">
181 <xsl:attribute name="class">discrete</xsl:attribute>
182 <xsl:attribute name="href">
183 <xsl:call-template name="part-to-href">
184 <xsl:with-param name="name">man</xsl:with-param>
185 </xsl:call-template>#<xsl:call-template name="env-var-to-anchor-name">
186 <xsl:with-param name="id"><xsl:value-of select="@name" /></xsl:with-param>
187 </xsl:call-template>
188 </xsl:attribute>
189 <xsl:value-of select="@name" />
190 </xsl:element>
191 </xsl:template>
193 <xsl:template match="part-href[@name]">
194 <xsl:call-template name="part-to-href">
195 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
196 </xsl:call-template>
197 </xsl:template>
198 <xsl:template match="extension-href[@name]">
199 <xsl:call-template name="extension-to-href">
200 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
201 </xsl:call-template>
202 </xsl:template>
203 <xsl:template name="name-to-linked-extension">
204 <xsl:param name="current-namespace" />
205 <xsl:param name="namespace" />
206 <xsl:param name="name" />
207 <xsl:variable name="ns">
208 <xsl:choose>
209 <xsl:when test="starts-with($namespace, '..')">
210 <xsl:value-of select="$namespace" />
211 </xsl:when>
212 <xsl:when test="$namespace = ''">
213 <xsl:value-of select="$current-namespace" />
214 </xsl:when>
215 <xsl:when test="$current-namespace = '..'">
216 <xsl:value-of select="concat('..', $namespace)" />
217 </xsl:when>
218 <xsl:otherwise>
219 <xsl:value-of select="concat($current-namespace, '..', $namespace)" />
220 </xsl:otherwise>
221 </xsl:choose>
222 </xsl:variable>
223 <xsl:element name="a">
224 <xsl:attribute name="class">discrete</xsl:attribute>
225 <xsl:attribute name="href">
226 <xsl:call-template name="extension-to-href">
227 <xsl:with-param name="namespace"><xsl:value-of select="$ns" /></xsl:with-param>
228 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
229 </xsl:call-template>
230 </xsl:attribute>
231 <xsl:choose>
232 <xsl:when test="$ns = $current-namespace">
233 <span class="filename"><xsl:value-of select="$name" /></span>
234 </xsl:when>
235 <xsl:when test="$current-namespace != ''">
236 <xsl:variable name="prefix">^<xsl:value-of select="$current-namespace" />\.\.</xsl:variable>
237 <xsl:call-template name="format-namespace-name">
238 <xsl:with-param name="name"><xsl:value-of select="replace($ns, $prefix, '')" /></xsl:with-param>
239 </xsl:call-template>
240 <xsl:text> / </xsl:text>
241 <span class="filename"><xsl:value-of select="$name" /></span>
242 </xsl:when>
243 <xsl:otherwise>
244 <xsl:call-template name="format-namespace-name">
245 <xsl:with-param name="name"><xsl:value-of select="$ns" /></xsl:with-param>
246 </xsl:call-template>
247 <xsl:text> / </xsl:text>
248 <span class="filename"><xsl:value-of select="$name" /></span>
249 </xsl:otherwise>
250 </xsl:choose>
251 </xsl:element>
252 </xsl:template>
253 <xsl:template match="extension[@path]">
254 <xsl:variable name="namespace"><xsl:value-of select="replace(@path, '/.*$', '')" /></xsl:variable>
255 <xsl:variable name="name"><xsl:value-of select="replace(@path, '^.*/', '')" /></xsl:variable>
256 <xsl:call-template name="name-to-linked-extension">
257 <xsl:with-param name="namespace"><xsl:value-of select="$namespace" /></xsl:with-param>
258 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
259 </xsl:call-template>
260 </xsl:template>
261 <xsl:template match="/book[namespace]//extension[@name]">
262 <xsl:call-template name="name-to-linked-extension">
263 <xsl:with-param name="current-namespace"><xsl:value-of select="ancestor::book[namespace][1]/namespace" /></xsl:with-param>
264 <xsl:with-param name="namespace"><xsl:value-of select="@namespace" /></xsl:with-param>
265 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
266 </xsl:call-template>
267 </xsl:template>
268 <xsl:template match="/book[not(namespace)]//extension[@name]">
269 <xsl:call-template name="name-to-linked-extension">
270 <xsl:with-param name="namespace"><xsl:value-of select="@namespace" /></xsl:with-param>
271 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
272 </xsl:call-template>
273 </xsl:template>
276 <xsl:template match="a[(@part or @id) and not(@extension)]">
277 <xsl:element name="a">
278 <xsl:attribute name="href">
279 <xsl:if test="@part">
280 <xsl:call-template name="part-to-href">
281 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
282 </xsl:call-template>
283 </xsl:if>
284 <xsl:if test="@id">
285 <xsl:text>#</xsl:text>
286 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
287 </xsl:if>
288 </xsl:attribute>
289 <xsl:choose>
290 <xsl:when test="node()">
291 <xsl:apply-templates />
292 </xsl:when>
293 <xsl:when test="@part">
294 <span class="filename">
295 <xsl:call-template name="part-to-href">
296 <xsl:with-param name="name"><xsl:value-of select="@part" /></xsl:with-param>
297 </xsl:call-template>
298 </span>
299 </xsl:when>
300 <xsl:otherwise>
301 <xsl:variable name="dstid">
302 <xsl:value-of select="@id" />
303 </xsl:variable>
304 <xsl:apply-templates select="//section[@id=$dstid]/title" />
305 <xsl:apply-templates select="//example-with-output[@id=$dstid]/@title" />
306 </xsl:otherwise>
307 </xsl:choose>
308 </xsl:element>
309 </xsl:template>
310 <xsl:template match="a[@id]/title">
311 <xsl:variable name="dstid">
312 <xsl:value-of select="../@id" />
313 </xsl:variable>
314 <xsl:apply-templates select="//section[@id=$dstid]/title" />
315 </xsl:template>
316 <xsl:template match="a[@extension]">
317 <xsl:element name="a">
318 <xsl:attribute name="href">
319 <xsl:call-template name="extension-to-href">
320 <xsl:with-param name="name"><xsl:value-of select="@extension" /></xsl:with-param>
321 </xsl:call-template>
322 <xsl:if test="@id">
323 <xsl:text>#</xsl:text>
324 <xsl:call-template name="id-to-anchor-name"><xsl:with-param name="id"><xsl:value-of select="@id" /></xsl:with-param></xsl:call-template>
325 </xsl:if>
326 </xsl:attribute>
327 <span class="filename"><xsl:value-of select="@extension" /></span>
328 </xsl:element>
329 </xsl:template>
331 <xsl:template match='a[@method="google-lucky" and @query]'>
332 <xsl:element name="a">
333 <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>
334 <xsl:choose>
335 <xsl:when test="node()">
336 <xsl:apply-templates />
337 </xsl:when>
338 <xsl:otherwise>
339 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text>_lucky `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
340 </xsl:otherwise>
341 </xsl:choose>
342 </xsl:element>
343 </xsl:template>
344 <xsl:template match='a[@method="google" and @query]'>
345 <xsl:element name="a">
346 <xsl:attribute name="href">http://www.google.com/search?q=<xsl:value-of select="encode-for-uri(@query)" /></xsl:attribute>
347 <xsl:choose>
348 <xsl:when test="node()">
349 <xsl:apply-templates />
350 </xsl:when>
351 <xsl:otherwise>
352 <xsl:text>[</xsl:text><xsl:call-template name="str-Google" /><xsl:text> `</xsl:text><xsl:value-of select="@query" /><xsl:text>´]</xsl:text>
353 </xsl:otherwise>
354 </xsl:choose>
355 </xsl:element>
356 </xsl:template>
357 <xsl:template match="a[@query]/query">
358 <xsl:value-of select="../@query" />
359 </xsl:template>
361 <xsl:template name="name-to-linked-type">
362 <xsl:param name="name" />
363 <xsl:element name="a">
364 <xsl:attribute name="class">discrete</xsl:attribute>
365 <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>
366 <xsl:call-template name="format-type-name">
367 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
368 </xsl:call-template>
369 </xsl:element>
370 </xsl:template>
371 <xsl:template name="name-to-linked-statetype">
372 <xsl:param name="name" />
373 <xsl:element name="a">
374 <xsl:attribute name="class">discrete</xsl:attribute>
375 <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>
376 <xsl:call-template name="format-type-name">
377 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
378 </xsl:call-template>
379 </xsl:element>
380 </xsl:template>
382 <xsl:template match="named-type[@name and not(@link)]">
383 <xsl:call-template name="name-to-linked-type">
384 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
385 </xsl:call-template>
386 </xsl:template>
387 <xsl:template match="named-type[@name and @link='no']">
388 <xsl:call-template name="format-type-name">
389 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
390 </xsl:call-template>
391 </xsl:template>
393 <xsl:template match="named-statetype[@name and not(@link)]">
394 <xsl:call-template name="name-to-linked-statetype">
395 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
396 </xsl:call-template>
397 </xsl:template>
398 <xsl:template match="named-statetype[@name and @link='no']">
399 <xsl:call-template name="format-statetype-name">
400 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
401 </xsl:call-template>
402 </xsl:template>
404 <xsl:template name="format-template-type-name">
405 <xsl:param name="name" />
406 <span class="typename template">§<xsl:value-of select="$name" /></span>
407 </xsl:template>
408 <xsl:template name="format-template-statetype-name">
409 <xsl:param name="name" />
410 <span class="typename template">§•<xsl:value-of select="$name" /></span>
411 </xsl:template>
413 <xsl:template match="template-type[@name]">
414 <xsl:call-template name="format-template-type-name">
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="template-statetype[@name]">
419 <xsl:call-template name="format-template-statetype-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 name="format-mutator-name">
425 <xsl:param name="name" />
426 <span class="varname"><xsl:value-of select="$name" /></span>
427 </xsl:template>
428 <xsl:template name="name-to-linked-mutator">
429 <xsl:param name="extension" />
430 <xsl:param name="extension-href" />
431 <xsl:param name="type" />
432 <xsl:param name="name" />
433 <xsl:element name="a">
434 <xsl:attribute name="class">discrete</xsl:attribute>
435 <xsl:attribute name="href">
436 <xsl:choose>
437 <xsl:when test="$extension">
438 <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" />
439 </xsl:when>
440 <xsl:when test="$extension-href">
441 <xsl:value-of select="$extension-href" />#mutator:<xsl:value-of select="$type" />:<xsl:value-of select="$name" />
442 </xsl:when>
443 <xsl:otherwise>
444 <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" />
445 </xsl:otherwise>
446 </xsl:choose>
447 </xsl:attribute>
448 <xsl:call-template name="format-statetype-name">
449 <xsl:with-param name="name"><xsl:value-of select="$type" /></xsl:with-param>
450 </xsl:call-template>
451 <span class="inline">/</span>
452 <xsl:call-template name="format-mutator-name">
453 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
454 </xsl:call-template>
455 </xsl:element>
456 </xsl:template>
457 <xsl:template match="mutator[@type and @name and not(@extension)]">
458 <xsl:call-template name="name-to-linked-mutator">
459 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
460 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
461 </xsl:call-template>
462 </xsl:template>
463 <xsl:template match="mutator[@type and @name and @extension]">
464 <xsl:call-template name="name-to-linked-mutator">
465 <xsl:with-param name="extension"><xsl:value-of select="@extension" /></xsl:with-param>
466 <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
467 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
468 </xsl:call-template>
469 </xsl:template>
471 <xsl:template name="name-to-tol-param">
472 <xsl:param name="name" />
473 <span class="tolparam"><xsl:value-of select="@name" /></span>
474 </xsl:template>
475 <xsl:template match="tol-param[@name and @link='no']">
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 match="tol-param[@name and not(@link)]">
481 <xsl:element name="a">
482 <xsl:attribute name="class">discrete</xsl:attribute>
483 <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>
484 <xsl:call-template name="name-to-operator">
485 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
486 </xsl:call-template>
487 </xsl:element>
488 </xsl:template>
490 <xsl:template name="name-to-operator">
491 <xsl:param name="name" />
492 <span class="inline"><xsl:value-of select="$name" /></span>
493 </xsl:template>
494 <xsl:template match="operator[@name]">
495 <xsl:call-template name="name-to-operator">
496 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
497 </xsl:call-template>
498 </xsl:template>
499 <xsl:template name="name-to-operator-unary-prefix">
500 <xsl:param name="name" />
501 <span class="inline"><xsl:value-of select="$name" /></span>
502 </xsl:template>
503 <xsl:template match="operator-unary-prefix[@name]">
504 <xsl:call-template name="name-to-operator-unary-prefix">
505 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
506 </xsl:call-template>
507 </xsl:template>
509 <xsl:template name="format-namespace-name">
510 <xsl:param name="name" />
511 <span class="inline"><xsl:value-of select="$name" /></span>
512 </xsl:template>
513 <xsl:template name="name-to-linked-namespace">
514 <xsl:param name="name" />
515 <xsl:element name="a">
516 <xsl:attribute name="class">discrete</xsl:attribute>
517 <xsl:attribute name="href">
518 <xsl:call-template name="namespace-to-href"><xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param></xsl:call-template>
519 </xsl:attribute>
520 <xsl:call-template name="format-namespace-name">
521 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
522 </xsl:call-template>
523 </xsl:element>
524 </xsl:template>
525 <xsl:template match="user-namespace[@name]">
526 <xsl:call-template name="format-namespace-name">
527 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
528 </xsl:call-template>
529 </xsl:template>
530 <xsl:template match="namespace[@name]">
531 <xsl:call-template name="name-to-linked-namespace">
532 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
533 </xsl:call-template>
534 </xsl:template>
535 <xsl:template match="namespace[@current and @relative]">
536 <xsl:element name="a">
537 <xsl:attribute name="class">discrete</xsl:attribute>
538 <xsl:attribute name="href">
539 <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>
540 </xsl:attribute>
541 <xsl:call-template name="format-namespace-name">
542 <xsl:with-param name="name"><xsl:value-of select="@relative" /></xsl:with-param>
543 </xsl:call-template>
544 </xsl:element>
545 </xsl:template>
546 <xsl:template match="/book[namespace]//namespace[@relative and not(@current)]">
547 <xsl:element name="a">
548 <xsl:attribute name="class">discrete</xsl:attribute>
549 <xsl:attribute name="href">
550 <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>
551 </xsl:attribute>
552 <xsl:call-template name="format-namespace-name">
553 <xsl:with-param name="name"><xsl:value-of select="@relative" /></xsl:with-param>
554 </xsl:call-template>
555 </xsl:element>
556 </xsl:template>
558 <xsl:template match="em"><em><xsl:apply-templates/></em></xsl:template>
559 <xsl:template match="b"><b><xsl:apply-templates/></b></xsl:template>
560 <xsl:template match="weak"><span class="weak"><xsl:apply-templates/></span></xsl:template>
561 <xsl:template match="inline"><span class="inline"><xsl:apply-templates/></span></xsl:template>
562 <xsl:template match="bnf"><span class="bnf"><xsl:apply-templates/></span></xsl:template>
563 <xsl:template match="union-type">
564 <span class="typename"><xsl:text>( </xsl:text></span>
565 <xsl:for-each select="./*">
566 <xsl:if test="position() > 1">
567 <span class="typename"><xsl:text>| </xsl:text></span>
568 </xsl:if>
569 <xsl:apply-templates select="." />
570 <xsl:text> </xsl:text>
571 </xsl:for-each>
572 <span class="typename">)</span>
573 </xsl:template>
574 <xsl:template match="structure-type">
575 <span class="typename"><xsl:text>(&gt; </xsl:text></span>
576 <xsl:for-each select="field">
577 <xsl:if test="@name">
578 <xsl:value-of select="@name" /><xsl:text>::</xsl:text>
579 </xsl:if>
580 <xsl:if test="not(@name)">
581 <xsl:value-of select="position( )" /><xsl:text>::</xsl:text>
582 </xsl:if>
583 <xsl:if test="not(type)">
584 <span class="typename">Any-Type</span>
585 </xsl:if>
586 <xsl:apply-templates select="type" />
587 <xsl:text> </xsl:text>
588 </xsl:for-each>
589 <span class="typename">&lt;)</span>
590 </xsl:template>
591 <xsl:template match="structure-type/field">
592 </xsl:template>
593 <xsl:template match="function-type">
594 <span class="typename"><xsl:text>( </xsl:text></span>
595 <xsl:apply-templates select="arguments" />
596 <xsl:text></xsl:text>
597 <xsl:apply-templates select="result" />
598 <span class="typename"><xsl:text> )</xsl:text></span>
599 </xsl:template>
600 <xsl:template match="typename"><span class="typename"><xsl:apply-templates/></span></xsl:template>
601 <xsl:template match="typename[@class='replacable']">
602 <span class="typename replacable"><xsl:apply-templates/></span>
603 </xsl:template>
604 <xsl:template match="replacable-text[@name]">
605 <span class="varname replacable"><xsl:value-of select="@name" /></span>
606 </xsl:template>
608 <xsl:template name="name-to-argument">
609 <xsl:param name="name" />
610 <xsl:param name="class" />
611 <xsl:element name="span">
612 <xsl:attribute name="class">varname <xsl:value-of select="$class" /></xsl:attribute>
613 <xsl:value-of select="$name" />
614 </xsl:element>
615 </xsl:template>
616 <xsl:template match="p/arg[@name] | td/arg[@name]">
617 <xsl:call-template name="name-to-argument">
618 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
619 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
620 </xsl:call-template>
621 </xsl:template>
623 <xsl:template name="name-to-state-argument">
624 <xsl:param name="name" />
625 <xsl:param name="class" />
626 <xsl:element name="span">
627 <xsl:attribute name="class">varname <xsl:value-of select="$class" /></xsl:attribute>
628 <xsl:call-template name="format-state-name">
629 <xsl:with-param name="name"><xsl:value-of select="$name" /></xsl:with-param>
630 </xsl:call-template>
631 </xsl:element>
632 </xsl:template>
633 <xsl:template match="state-arg[@name]">
634 <xsl:call-template name="name-to-state-argument">
635 <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
636 <xsl:with-param name="class"><xsl:value-of select="@class" /></xsl:with-param>
637 </xsl:call-template>
638 </xsl:template>
640 <xsl:template match="field[@name and not(@class)]">
641 <span class="varname"><xsl:value-of select="@name" /></span>
642 </xsl:template>
643 <xsl:template match="field[@name and @class='replacable']">
644 <span class="varname replacable"><xsl:value-of select="@name" /></span>
645 </xsl:template>
647 <xsl:template match="lexerregexp">
648 <span class="lexerregexp"><xsl:apply-templates/></span>
649 </xsl:template>
650 <xsl:template match="syntax[@name and @class='new']">
651 <xsl:element name="a">
652 <xsl:attribute name="name">stx-.<xsl:value-of select="@name" /></xsl:attribute>
653 <span class="syntaxname-new"><xsl:value-of select="@name"/></span>
654 </xsl:element>
655 </xsl:template>
656 <xsl:template match="syntax[@name and not(@class)]">
657 <xsl:element name="a">
658 <xsl:attribute name="class">discrete</xsl:attribute>
659 <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>
660 <span class="syntaxname"><xsl:value-of select="@name"/></span>
661 </xsl:element>
662 </xsl:template>
663 <xsl:template match="a[@href]">
664 <xsl:element name="a">
665 <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
666 <xsl:apply-templates/>
667 </xsl:element>
668 </xsl:template>
670 <xsl:template match="unit">
671 <xsl:element name="span">
672 <xsl:attribute name="class">
673 <xsl:text>unit</xsl:text>
674 <xsl:if test="@class"><xsl:text> </xsl:text><xsl:value-of select="@class" /></xsl:if>
675 </xsl:attribute>
676 <xsl:apply-templates/>
677 </xsl:element>
678 </xsl:template>
680 <xsl:template match="filename"><span class="filename"><xsl:value-of select="." /></span></xsl:template>
681 <xsl:template match="progname"><span class="terminal"><xsl:value-of select="." /></span></xsl:template>
682 <xsl:template match="command-line">
683 <pre class="terminal">
684 <xsl:apply-templates/>
685 </pre>
686 </xsl:template>
688 <xsl:template match="tight-table">
689 <table class="tight"><xsl:apply-templates select="head/tr | body/tr"/></table>
690 </xsl:template>
691 <xsl:template match="loose-table">
692 <table class="loose"><xsl:apply-templates select="head/tr | body/tr"/></table>
693 </xsl:template>
695 <xsl:template match="tr">
696 <tr><xsl:apply-templates/></tr>
697 </xsl:template>
698 <xsl:template match="tr[@align]">
699 <xsl:element name="tr">
700 <xsl:attribute name="align"><xsl:value-of select="./@align" /></xsl:attribute>
701 <xsl:apply-templates/>
702 </xsl:element>
703 </xsl:template>
704 <xsl:template match="head/tr/td">
705 <th><xsl:apply-templates/></th>
706 </xsl:template>
707 <xsl:template match="td">
708 <td><xsl:apply-templates/></td>
709 </xsl:template>
710 <xsl:template match="th">
711 <th><xsl:apply-templates/></th>
712 </xsl:template>
713 <xsl:template match="th[@colspan]">
714 <xsl:element name="th">
715 <xsl:attribute name="colspan"><xsl:value-of select="./@colspan" /></xsl:attribute>
716 <xsl:apply-templates/>
717 </xsl:element>
718 </xsl:template>
720 <xsl:template match="img">
721 <xsl:choose>
722 <xsl:when test="@target">
723 <xsl:element name="a">
724 <xsl:attribute name="href"><xsl:value-of select="iri-to-uri(replace(@src,'%','%25'))" /></xsl:attribute>
725 <xsl:attribute name="target"><xsl:value-of select="@target" /></xsl:attribute>
726 <xsl:element name="img">
727 <xsl:if test="@class">
728 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
729 </xsl:if>
730 <xsl:attribute name="src"><xsl:value-of select="iri-to-uri(replace(@src,'%','%25'))" /></xsl:attribute>
731 <xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute>
732 <xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width" /></xsl:attribute></xsl:if>
733 <xsl:if test="@height"><xsl:attribute name="height"><xsl:value-of select="@height" /></xsl:attribute></xsl:if>
734 </xsl:element>
735 </xsl:element>
736 </xsl:when>
737 <xsl:otherwise>
738 <xsl:element name="img">
739 <xsl:if test="@class">
740 <xsl:attribute name="class"><xsl:value-of select="@class" /></xsl:attribute>
741 </xsl:if>
742 <xsl:attribute name="src"><xsl:value-of select="iri-to-uri(replace(@src,'%','%25'))" /></xsl:attribute>
743 <xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute>
744 <xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width" /></xsl:attribute></xsl:if>
745 <xsl:if test="@height"><xsl:attribute name="height"><xsl:value-of select="@height" /></xsl:attribute></xsl:if>
746 </xsl:element>
747 </xsl:otherwise>
748 </xsl:choose>
749 </xsl:template>
750 <xsl:template match="figure[image]">
751 <div class="p">
752 <table class="figure">
753 <tr align="center"><td>
754 <xsl:if test="@id">
755 <xsl:element name="a">
756 <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>
757 </xsl:element>
758 </xsl:if>
759 <xsl:apply-templates select="image/*" />
760 </td></tr>
761 <tr><td class="here-caption">
762 <xsl:apply-templates select="caption/*" />
763 </td></tr>
764 </table>
765 </div>
766 </xsl:template>
769 <xsl:template match="arguments">
770 <xsl:apply-templates select="arg | state"/>
771 <xsl:apply-templates select="sink"/>
772 </xsl:template>
774 <xsl:template match="arguments/arg">
775 <xsl:if test="@identifier">
776 <xsl:call-template name="name-to-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
777 </xsl:if>
778 <xsl:apply-templates select="default"/>
779 <xsl:apply-templates select="type"/>
780 <xsl:text>   </xsl:text>
781 </xsl:template>
782 <xsl:template match="arguments/arg/default">:<xsl:apply-templates /></xsl:template>
783 <xsl:template match="arguments/arg/type"><xsl:text>::</xsl:text><xsl:apply-templates /></xsl:template>
785 <xsl:template match="arguments/state[@identifier]">
786 <xsl:call-template name="name-to-state-argument"><xsl:with-param name="name"><xsl:value-of select="@identifier" /></xsl:with-param></xsl:call-template>
787 <xsl:apply-templates select="type"/>
788 <xsl:text>   </xsl:text>
789 </xsl:template>
790 <xsl:template match="arguments/state[not(@identifier)]">
791 <xsl:apply-templates select="type"/>
792 <xsl:text>   </xsl:text>
793 </xsl:template>
794 <xsl:template match="arguments/state/type"><xsl:text>::</xsl:text><xsl:apply-templates /></xsl:template>
796 <xsl:template match="arguments/sink[@identifier]">
797 <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>
798 <xsl:apply-templates select="type"/>
799 <xsl:text>   </xsl:text>
800 </xsl:template>
801 <xsl:template match="arguments/sink[not(@identifier)]">
802 <xsl:text>&lt;&gt;</xsl:text>
803 <xsl:apply-templates select="type"/>
804 <xsl:text>   </xsl:text>
805 </xsl:template>
806 <xsl:template match="arguments/sink/type"><xsl:text>::{</xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text></xsl:template>
808 <xsl:template match="type-templates">
809 <table class="type-templates">
810 <xsl:apply-templates />
811 </table>
812 </xsl:template>
813 <xsl:template match="type-templates/template[@name]">
814 <tr>
815 <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>
816 <td>
817 <xsl:apply-templates select="description"/>
818 </td>
819 </tr>
820 </xsl:template>
821 <xsl:template match="type-templates/template-state[@name]">
822 <tr>
823 <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>
824 <td>
825 <xsl:apply-templates select="description"/>
826 </td>
827 </tr>
828 </xsl:template>
830 <xsl:template match="book[namespace and not(extension)]/title/self">
831 <xsl:value-of select="../../namespace" />
832 </xsl:template>
833 <xsl:template match="/book[namespace and not(extension)]/top/p/self">
834 <xsl:call-template name="format-namespace-name">
835 <xsl:with-param name="name"><xsl:value-of select="/book/namespace" /></xsl:with-param>
836 </xsl:call-template>
837 </xsl:template>
839 <xsl:template match="book[namespace and extension]/title/self">
840 <xsl:value-of select="../../extension" />
841 </xsl:template>
842 <xsl:template match="/book[namespace and extension]/top/p/self">
843 <span class="filename"><xsl:value-of select="ancestor::book/extension" /></span>
844 </xsl:template>
846 <xsl:template match="book[namespace and not(extension)]/meta-selflink/self-href">
847 <xsl:call-template name="namespace-to-href">
848 <xsl:with-param name="name"><xsl:value-of select="../../namespace" /></xsl:with-param>
849 </xsl:call-template>
850 </xsl:template>
851 <xsl:template match="book[namespace and extension]/meta-selflink/self-href">
852 <xsl:call-template name="extension-to-href">
853 <xsl:with-param name="namespace"><xsl:value-of select="../../namespace" /></xsl:with-param>
854 <xsl:with-param name="name"><xsl:value-of select="../../extension" /></xsl:with-param>
855 </xsl:call-template>
856 </xsl:template>
858 <xsl:template match="book[namespace and not(extension)]/up-link/parent-namespace">
859 <xsl:variable name="ns"><xsl:value-of select="../../namespace" /></xsl:variable>
860 <xsl:call-template name="name-to-linked-namespace">
861 <xsl:with-param name="name"><xsl:value-of select="replace($ns, '\.\.[^.]*$', '')" /></xsl:with-param>
862 </xsl:call-template>
863 </xsl:template>
864 <xsl:template match="book[namespace and extension]/up-link/parent-namespace">
865 <xsl:call-template name="name-to-linked-namespace">
866 <xsl:with-param name="name"><xsl:value-of select="../../namespace" /></xsl:with-param>
867 </xsl:call-template>
868 </xsl:template>
870 <xsl:template name="SF-placeholder" >
871 <xsl:comment>PUT-SF-LOGO-HERE</xsl:comment>
872 </xsl:template>
874 <xsl:template match="eq"><span class="eq"><xsl:apply-templates/></span></xsl:template>
875 <xsl:template match="eq//op"><span class="rm"><xsl:apply-templates/></span></xsl:template>
876 <xsl:template match="eq//rm"><span class="rm"><xsl:apply-templates/></span></xsl:template>
877 <xsl:template match="eq//text"><span class="text"><xsl:apply-templates/></span></xsl:template>
878 <xsl:template match="eq//sub"><sub><xsl:apply-templates/></sub></xsl:template>
879 <xsl:template match="eq//sup"><sup><xsl:apply-templates/></sup></xsl:template>
881 </xsl:stylesheet>