Updated Spanish translation
[gtk-doc.git] / gtk-doc.xsl
blob3ab76d0e4e322b6321cbc0a3d7086ed50b659d0d
1 <?xml version='1.0'?> <!--*- mode: xml -*-->
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
4 exclude-result-prefixes="l"
5 version="1.0">
7 <!-- import the chunked XSL stylesheet -->
8 <!-- http://www.sagehill.net/docbookxsl/Chunking.html says we should use
9 "chunkfast.xsl", but I can see a difference -->
10 <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
11 <xsl:include href="devhelp2.xsl"/>
12 <xsl:include href="version-greater-or-equal.xsl"/>
14 <xsl:key name="acronym.key"
15 match="glossentry/glossterm"
16 use="."/>
17 <xsl:key name="gallery.key"
18 match="para[@role='gallery']/link"
19 use="@linkend"/>
21 <!-- change some parameters -->
22 <!-- http://docbook.sourceforge.net/release/xsl/current/doc/html/index.html -->
23 <xsl:param name="admon.style"/>
24 <xsl:param name="toc.section.depth">2</xsl:param>
25 <xsl:param name="generate.toc">
26 book toc
27 chapter toc
28 glossary toc
29 index toc
30 part toc
31 reference toc
32 </xsl:param>
34 <xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
35 <xsl:param name="chunker.output.indent" select="'yes'"/>
36 <xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD HTML 4.01 Transitional//EN'"/>
37 <xsl:param name="chunk.fast" select="1"/>
39 <xsl:param name="default.encoding" select="'UTF-8'"/>
40 <xsl:param name="chapter.autolabel" select="0"/>
41 <xsl:param name="use.id.as.filename" select="1"/>
42 <xsl:param name="generate.consistent.ids" select="1"/>
43 <xsl:param name="html.ext" select="'.html'"/>
44 <xsl:param name="refentry.generate.name" select="0"/>
45 <xsl:param name="refentry.generate.title" select="1"/>
46 <!-- don't generate all those link tags (very slow and hardly used)
47 it does not show much effect as we have a user.head.content template
48 <xsl:param name="html.extra.head.links" select="0" />
49 -->
51 <!-- use index filtering (if available) -->
52 <xsl:param name="index.on.role" select="1"/>
54 <!-- display variablelists as tables -->
55 <xsl:param name="variablelist.as.table" select="1"/>
57 <!-- new things to consider
58 <xsl:param name="glossterm.auto.link" select="0"></xsl:param>
59 -->
61 <!-- this gets set on the command line ... -->
62 <xsl:param name="gtkdoc.version" select="''"/>
63 <xsl:param name="gtkdoc.bookname" select="''"/>
65 <!-- Override the typical template to prevent showing titles -->
66 <xsl:param name="admon.textlabel" select="0"/>
68 <!-- ========================================================= -->
70 <!-- l10n is slow, we don't ue it, so we'd like to turn it off
71 this atleast avoid the re-evaluation -->
72 <xsl:template name="l10n.language">en</xsl:template>
74 <xsl:param name="gtkdoc.l10n.xml" select="document('http://docbook.sourceforge.net/release/xsl/current/common/en.xml')"/>
76 <xsl:key name="gtkdoc.gentext.key"
77 match="l:gentext[@key]"
78 use="@key"/>
79 <xsl:key name="gtkdoc.context.key"
80 match="l:context[@name]"
81 use="@name"/>
83 <xsl:template name="gentext">
84 <xsl:param name="key" select="local-name(.)"/>
86 <xsl:for-each select="$gtkdoc.l10n.xml">
87 <xsl:variable name="l10n.gentext" select="key('gtkdoc.gentext.key', $key)"/>
89 <xsl:choose>
90 <xsl:when test="$l10n.gentext">
91 <xsl:value-of select="$l10n.gentext/@text"/>
92 </xsl:when>
93 <xsl:otherwise>
94 <xsl:message>
95 <xsl:text>No "en" localization of "</xsl:text>
96 <xsl:value-of select="$key"/>
97 <xsl:text>" exists.</xsl:text>
98 </xsl:message>
99 </xsl:otherwise>
100 </xsl:choose>
101 </xsl:for-each>
102 </xsl:template>
104 <xsl:template name="gentext.dingbat">
105 <xsl:param name="dingbat">bullet</xsl:param>
107 <xsl:variable name="l10n.dingbat"
108 select="($gtkdoc.l10n.xml/l:l10n/l:dingbat[@key=$dingbat])[1]"/>
110 <xsl:choose>
111 <xsl:when test="$l10n.dingbat">
112 <xsl:value-of select="$l10n.dingbat/@text"/>
113 </xsl:when>
114 <xsl:otherwise>
115 <xsl:message>
116 <xsl:text>No "en" localization of dingbat </xsl:text>
117 <xsl:value-of select="$dingbat"/>
118 <xsl:text> exists; using "en".</xsl:text>
119 </xsl:message>
120 </xsl:otherwise>
121 </xsl:choose>
122 </xsl:template>
124 <xsl:template name="gentext.template">
125 <xsl:param name="context" select="'default'"/>
126 <xsl:param name="name" select="'default'"/>
127 <xsl:param name="origname" select="$name"/>
129 <!-- cut leading / if any to avoid one recursion -->
130 <xsl:variable name="rname">
131 <xsl:choose>
132 <xsl:when test="starts-with($name, '/')">
133 <xsl:value-of select="substring-after($name, '/')"/>
134 </xsl:when>
135 <xsl:otherwise>
136 <xsl:value-of select="$name"/>
137 </xsl:otherwise>
138 </xsl:choose>
139 </xsl:variable>
141 <!-- this is called with context="title|title-numbered|title-unnumbered>
142 <xsl:message>
143 <xsl:text>context:</xsl:text><xsl:value-of select="$context"/>
144 <xsl:text>;name:</xsl:text><xsl:value-of select="$rname"/>
145 <xsl:text>;origname:</xsl:text><xsl:value-of select="$origname"/>
146 </xsl:message>
148 see html/html.xsl:<xsl:template match="*" mode="html.title.attribute">
151 <xsl:for-each select="$gtkdoc.l10n.xml">
152 <xsl:variable name="context.node" select="key('gtkdoc.context.key', $context)"/>
153 <xsl:variable name="template.node"
154 select="($context.node/l:template[@name=$rname])[1]"/>
156 <xsl:choose>
157 <xsl:when test="$template.node/@text">
158 <xsl:value-of select="$template.node/@text"/>
159 <!-- debug
160 <xsl:message>
161 <xsl:text>=</xsl:text><xsl:value-of select="$template.node/@text"/>
162 </xsl:message>
164 </xsl:when>
165 <xsl:otherwise>
166 <xsl:choose>
167 <xsl:when test="contains($rname, '/')">
168 <xsl:call-template name="gentext.template">
169 <xsl:with-param name="context" select="$context"/>
170 <xsl:with-param name="name" select="substring-after($rname, '/')"/>
171 <xsl:with-param name="origname" select="$origname"/>
172 </xsl:call-template>
173 </xsl:when>
174 </xsl:choose>
175 </xsl:otherwise>
176 </xsl:choose>
177 </xsl:for-each>
178 </xsl:template>
180 <!-- silently test whether a gentext template exists -->
181 <xsl:template name="gentext.template.exists">
182 <xsl:param name="context" select="'default'"/>
183 <xsl:param name="name" select="'default'"/>
184 <xsl:param name="origname" select="$name"/>
186 <xsl:variable name="template">
187 <xsl:call-template name="gentext.template">
188 <xsl:with-param name="context" select="$context"/>
189 <xsl:with-param name="name" select="$name"/>
190 <xsl:with-param name="origname" select="$origname"/>
191 </xsl:call-template>
192 </xsl:variable>
194 <xsl:choose>
195 <xsl:when test="string-length($template) != 0">1</xsl:when>
196 <xsl:otherwise>0</xsl:otherwise>
197 </xsl:choose>
198 </xsl:template>
200 <!-- shortcut version -->
201 <!-- @bug: https://bugzilla.gnome.org/show_bug.cgi?id=617478 -->
202 <xsl:template name="generate.html.title"/>
203 <!--xsl:template name="generate.html.title">
204 <xsl:variable name="has.title.markup">
205 <xsl:apply-templates select="." mode="title.markup">
206 <xsl:with-param name="verbose" select="0"/>
207 </xsl:apply-templates>
208 </xsl:variable>
209 <xsl:if test="$has.title.markup != '???TITLE???'">
210 <xsl:variable name="gentext.title">
211 <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
212 </xsl:variable>
213 <xsl:choose>
214 <xsl:when test="string-length($gentext.title) != 0">
215 <xsl:attribute name="title">
216 <xsl:value-of select="$gentext.title"/>
217 </xsl:attribute>
218 </xsl:when>
219 <xsl:when test="alt">
220 <xsl:attribute name="title">
221 <xsl:value-of select="normalize-space(alt)"/>
222 </xsl:attribute>
223 </xsl:when>
224 </xsl:choose>
225 </xsl:if>
226 </xsl:template-->
228 <!-- Generate a title attribute for the context node (e.g. links) -->
229 <xsl:template match="*" mode="html.title.attribute">
230 <xsl:variable name="has.title.markup">
231 <xsl:apply-templates select="." mode="title.markup">
232 <xsl:with-param name="verbose" select="0"/>
233 </xsl:apply-templates>
234 </xsl:variable>
235 <xsl:if test="$has.title.markup != '???TITLE???'">
236 <xsl:variable name="is.title">
237 <xsl:call-template name="gentext.template.exists">
238 <xsl:with-param name="context" select="'title'"/>
239 <xsl:with-param name="name" select="local-name(.)"/>
240 <xsl:with-param name="lang">
241 <xsl:call-template name="l10n.language"/>
242 </xsl:with-param>
243 </xsl:call-template>
244 </xsl:variable>
246 <xsl:variable name="is.title-numbered">
247 <xsl:if test="$is.title = 0">
248 <xsl:call-template name="gentext.template.exists">
249 <xsl:with-param name="context" select="'title-numbered'"/>
250 <xsl:with-param name="name" select="local-name(.)"/>
251 <xsl:with-param name="lang">
252 <xsl:call-template name="l10n.language"/>
253 </xsl:with-param>
254 </xsl:call-template>
255 </xsl:if>
256 </xsl:variable>
259 <xsl:variable name="is.title-unnumbered">
260 <xsl:if test="$is.title = 0 and $is.title-numbered = 0">
261 <xsl:call-template name="gentext.template.exists">
262 <xsl:with-param name="context" select="'title-unnumbered'"/>
263 <xsl:with-param name="name" select="local-name(.)"/>
264 <xsl:with-param name="lang">
265 <xsl:call-template name="l10n.language"/>
266 </xsl:with-param>
267 </xsl:call-template>
268 </xsl:if>
269 </xsl:variable>
271 <xsl:variable name="gentext.title">
272 <xsl:if test="$is.title != 0 or
273 $is.title-numbered != 0 or
274 $is.title-unnumbered != 0">
275 <xsl:apply-templates select="."
276 mode="object.title.markup.textonly"/>
277 </xsl:if>
278 </xsl:variable>
280 <xsl:choose>
281 <xsl:when test="string-length($gentext.title) != 0">
282 <xsl:attribute name="title">
283 <xsl:value-of select="$gentext.title"/>
284 </xsl:attribute>
285 </xsl:when>
286 <xsl:when test="alt">
287 <xsl:attribute name="title">
288 <xsl:value-of select="normalize-space(alt)"/>
289 </xsl:attribute>
290 </xsl:when>
291 </xsl:choose>
292 </xsl:if>
293 </xsl:template>
298 <!-- ========================================================= -->
299 <!-- template to create the index.sgml anchor index -->
301 <xsl:template match="book|article">
302 <xsl:variable name="tooldver">
303 <xsl:call-template name="version-greater-or-equal">
304 <xsl:with-param name="ver1" select="$VERSION" />
305 <xsl:with-param name="ver2">1.36</xsl:with-param>
306 </xsl:call-template>
307 </xsl:variable>
308 <xsl:if test="$tooldver = 0">
309 <xsl:message terminate="yes">
310 FATAL-ERROR: You need the DocBook XSL Stylesheets version 1.36 or higher
311 to build the documentation.
312 Get a newer version at http://docbook.sourceforge.net/projects/xsl/
313 </xsl:message>
314 </xsl:if>
315 <xsl:apply-imports/>
317 <!-- generate the index.sgml href index -->
318 <xsl:call-template name="generate.index"/>
319 <!-- generate $book.devhelp2 -->
320 <xsl:call-template name="generate.devhelp2"/>
321 </xsl:template>
323 <xsl:template name="generate.index">
324 <xsl:call-template name="write.text.chunk">
325 <xsl:with-param name="filename" select="'index.sgml'"/>
326 <xsl:with-param name="content">
327 <xsl:apply-templates select="/book/bookinfo/releaseinfo/ulink"
328 mode="generate.index.mode"/>
329 <!-- check all anchor and refentry elements -->
330 <!--
331 The obvious way to write this is //anchor|//refentry|etc...
332 The obvious way is slow because it causes multiple traversals
333 in libxslt. This take about half the time.
335 <xsl:apply-templates select="//*[name()='anchor' or name()='refentry' or name()='refsect1' or
336 name() = 'refsect2' or name()='refsynopsisdiv' or
337 name()='varlistentry' or name()='para']"
338 mode="generate.index.mode"/>
339 </xsl:with-param>
340 <xsl:with-param name="default.encoding" select="'UTF-8'"/>
341 <xsl:with-param name="chunker.output.indent" select="'no'"/>
342 </xsl:call-template>
343 </xsl:template>
345 <xsl:template match="*" mode="generate.index.mode">
346 <xsl:if test="not(@href) and count(@id) > 0">
347 <xsl:text>&lt;ANCHOR id=&quot;</xsl:text>
348 <xsl:value-of select="@id"/>
349 <xsl:text>&quot; href=&quot;</xsl:text>
350 <xsl:if test="$gtkdoc.bookname">
351 <xsl:value-of select="$gtkdoc.bookname"/>
352 <xsl:text>/</xsl:text>
353 </xsl:if>
354 <xsl:call-template name="href.target"/>
355 <xsl:text>&quot;&gt;&#10;</xsl:text>
356 </xsl:if>
357 </xsl:template>
359 <xsl:template match="/book/bookinfo/releaseinfo/ulink" mode="generate.index.mode">
360 <xsl:if test="@role='online-location'">
361 <xsl:text>&lt;ONLINE href=&quot;</xsl:text>
362 <xsl:value-of select="@url"/>
363 <xsl:text>&quot;&gt;&#10;</xsl:text>
364 </xsl:if>
365 </xsl:template>
367 <!-- ========================================================= -->
368 <!-- template to output gtkdoclink elements for the unknown targets -->
370 <xsl:template match="link">
371 <xsl:choose>
372 <xsl:when test="id(@linkend)">
373 <xsl:apply-imports/>
374 </xsl:when>
375 <xsl:otherwise>
376 <GTKDOCLINK HREF="{@linkend}">
377 <xsl:apply-templates/>
378 </GTKDOCLINK>
379 </xsl:otherwise>
380 </xsl:choose>
381 </xsl:template>
383 <!-- ========================================================= -->
384 <!-- Below are the visual portions of the stylesheet. They provide
385 the normal gtk-doc output style. -->
387 <xsl:param name="shade.verbatim" select="0"/>
388 <xsl:param name="refentry.separator" select="0"/>
390 <xsl:template match="refsect2">
391 <xsl:if test="preceding-sibling::refsect2">
392 <hr/>
393 </xsl:if>
394 <xsl:apply-imports/>
395 </xsl:template>
397 <xsl:template name="user.head.title">
398 <xsl:param name="node" select="."/>
399 <xsl:param name="title"/>
400 <xsl:variable name="home" select="/*[1]"/>
401 <title>
402 <xsl:copy-of select="$title"/>: <xsl:apply-templates select="$home" mode="object.title.markup"/>
403 </title>
404 </xsl:template>
406 <xsl:template name="user.head.content">
407 <xsl:if test="$gtkdoc.version">
408 <meta name="generator" content="GTK-Doc V{$gtkdoc.version} (XML mode)"/>
409 </xsl:if>
410 <link rel="stylesheet" href="style.css" type="text/css"/>
411 </xsl:template>
413 <xsl:template name="user.footer.content">
414 <div class="footer">
415 <hr />
416 <xsl:choose>
417 <xsl:when test="$gtkdoc.version">
418 Generated by GTK-Doc V<xsl:copy-of select="$gtkdoc.version" />
419 </xsl:when>
420 <xsl:otherwise>
421 Generated by GTK-Doc
422 </xsl:otherwise>
423 </xsl:choose>
424 </div>
425 </xsl:template>
427 <xsl:template match="title" mode="book.titlepage.recto.mode">
428 <table class="navigation" id="top" width="100%"
429 cellpadding="2" cellspacing="0">
430 <tr>
431 <th valign="middle">
432 <p class="{name(.)}">
433 <xsl:value-of select="."/>
434 </p>
435 </th>
436 </tr>
437 </table>
438 </xsl:template>
440 <xsl:template name="header.navigation">
441 <xsl:param name="prev" select="/foo"/>
442 <xsl:param name="next" select="/foo"/>
443 <xsl:variable name="home" select="/*[1]"/>
444 <xsl:variable name="up" select="parent::*"/>
445 <xsl:variable name="refsections" select="./refsect1[@role]"/>
446 <xsl:variable name="glssections" select="./glossdiv/title"/>
447 <xsl:variable name="idxsections" select="./indexdiv/indexdiv/title"/>
448 <xsl:variable name="section_id" select="./@id"/>
449 <xsl:variable name="sect_object_hierarchy" select="./refsect1[@role='object_hierarchy']"/>
450 <xsl:variable name="sect_impl_interfaces" select="./refsect1[@role='impl_interfaces']"/>
451 <xsl:variable name="sect_prerequisites" select="./refsect1[@role='prerequisites']"/>
452 <xsl:variable name="sect_derived_interfaces" select="./refsect1[@role='derived_interfaces']"/>
453 <xsl:variable name="sect_implementations" select="./refsect1[@role='implementations']"/>
454 <xsl:variable name="sect_properties" select="./refsect1[@role='properties']"/>
455 <xsl:variable name="sect_child_properties" select="./refsect1[@role='child_properties']"/>
456 <xsl:variable name="sect_style_properties" select="./refsect1[@role='style_properties']"/>
457 <xsl:variable name="sect_signal_proto" select="./refsect1[@role='signal_proto']"/>
458 <xsl:variable name="sect_desc" select="./refsect1[@role='desc']"/>
459 <xsl:variable name="sect_synopsis" select="./refsynopsisdiv[@role='synopsis']"/>
460 <!--
461 <xsl:variable name="sect_details" select="./refsect1[@id='details']"/>
462 <xsl:variable name="sect_property_details" select="./refsect1[@id='property_details']"/>
463 <xsl:variable name="sect_child_property_details" select="./refsect1[@id='child_property_details']"/>
464 <xsl:variable name="sect_style_property_details" select="./refsect1[@id='style_property_details']"/>
465 <xsl:variable name="sect_signals" select="./refsect1[@id='signals']"/>
468 <xsl:if test="$suppress.navigation = '0' and $home != .">
469 <table class="navigation" id="top" width="100%"
470 summary = "Navigation header" cellpadding="2" cellspacing="5">
471 <tr valign="middle">
472 <td width="100%" align="left" class="shortcuts">
473 <!--<xsl:if test="name()='refentry'"-->
474 <xsl:choose>
475 <xsl:when test="count($refsections) > 0">
476 <a href="#" class="shortcut">Top</a>
477 <xsl:if test="count($sect_desc) > 0">
478 <span id="nav_description">&#160;&#160;<span class="dim">|</span>&#160;
479 <a href="#{$section_id}.description" class="shortcut">
480 <xsl:value-of select="./refsect1[@role='desc']/title"/>
481 </a></span>
482 </xsl:if>
483 <xsl:if test="count($sect_object_hierarchy) > 0">
484 <span id="nav_hierarchy">&#160;&#160;<span class="dim">|</span>&#160;
485 <a href="#{$section_id}.object-hierarchy" class="shortcut">
486 <xsl:value-of select="./refsect1[@role='object_hierarchy']/title"/>
487 </a></span>
488 </xsl:if>
489 <xsl:if test="count($sect_impl_interfaces) > 0">
490 <span id="nav_interfaces">&#160;&#160;<span class="dim">|</span>&#160;
491 <a href="#{$section_id}.implemented-interfaces" class="shortcut">
492 <xsl:value-of select="./refsect1[@role='impl_interfaces']/title"/>
493 </a></span>
494 </xsl:if>
495 <xsl:if test="count($sect_prerequisites) > 0">
496 <span id="nav_prerequisites">&#160;&#160;<span class="dim">|</span>&#160;
497 <a href="#{$section_id}.prerequisites" class="shortcut">
498 <xsl:value-of select="./refsect1[@role='prerequisites']/title"/>
499 </a></span>
500 </xsl:if>
501 <xsl:if test="count($sect_derived_interfaces) > 0">
502 <span id="nav_derived_interfaces">&#160;&#160;<span class="dim">|</span>&#160;
503 <a href="#{$section_id}.derived-interfaces" class="shortcut">
504 <xsl:value-of select="./refsect1[@role='derived_interfaces']/title"/>
505 </a></span>
506 </xsl:if>
507 <xsl:if test="count($sect_implementations) > 0">
508 <span id="nav_implementations">&#160;&#160;<span class="dim">|</span>&#160;
509 <a href="#{$section_id}.implementations" class="shortcut">
510 <xsl:value-of select="./refsect1[@role='implementations']/title"/>
511 </a></span>
512 </xsl:if>
513 <xsl:if test="count($sect_properties) > 0">
514 <span id="nav_properties">&#160;&#160;<span class="dim">|</span>&#160;
515 <a href="#{$section_id}.properties" class="shortcut">
516 <xsl:value-of select="./refsect1[@role='properties']/title"/>
517 </a></span>
518 </xsl:if>
519 <xsl:if test="count($sect_child_properties) > 0">
520 <span id="nav_child_properties">&#160;&#160;<span class="dim">|</span>&#160;
521 <a href="#{$section_id}.child-properties" class="shortcut">
522 <xsl:value-of select="./refsect1[@role='child_properties']/title"/>
523 </a></span>
524 </xsl:if>
525 <xsl:if test="count($sect_style_properties) > 0">
526 <span id="nav_style_properties">&#160;&#160;<span class="dim">|</span>&#160;
527 <a href="#{$section_id}.style-properties" class="shortcut">
528 <xsl:value-of select="./refsect1[@role='style_properties']/title"/>
529 </a></span>
530 </xsl:if>
531 <xsl:if test="count($sect_signal_proto) > 0">
532 <span id="nav_signals">&#160;&#160;<span class="dim">|</span>&#160;
533 <a href="#{$section_id}.signals" class="shortcut">
534 <xsl:value-of select="./refsect1[@role='signal_proto']/title"/>
535 </a></span>
536 </xsl:if>
537 </xsl:when>
538 <!-- this is not yet very nice, as it requires all glossdic/indexdiv
539 elements having a anchor element. maybe we can customize the xsl
540 to automaticaly create local anchors
542 <xsl:when test="count($glssections) > 0">
543 <span id="nav_glossary">
544 <xsl:for-each select="./glossdiv">
545 <xsl:if test="position() > 1">
546 &#160;<span class="dim">|</span>&#160;
547 </xsl:if>
548 <a class="shortcut">
549 <xsl:attribute name="href">#gls<xsl:value-of select="./title"/></xsl:attribute>
550 <xsl:value-of select="./title"/>
551 </a>
552 </xsl:for-each>
553 </span>
554 </xsl:when>
555 <xsl:when test="count($idxsections) > 0">
556 <span id="nav_index">
557 <xsl:for-each select="./indexdiv/indexdiv">
558 <xsl:if test="position() > 1">
559 &#160;<span class="dim">|</span>&#160;
560 </xsl:if>
561 <a class="shortcut">
562 <xsl:attribute name="href">#idx<xsl:value-of select="./title"/></xsl:attribute>
563 <xsl:value-of select="./title"/>
564 </a>
565 </xsl:for-each>
566 </span>
567 </xsl:when>
568 </xsl:choose>
569 </td>
570 <xsl:choose>
571 <xsl:when test="$home != .">
572 <td>
573 <a accesskey="h">
574 <xsl:attribute name="href">
575 <xsl:call-template name="href.target">
576 <xsl:with-param name="object" select="$home"/>
577 </xsl:call-template>
578 </xsl:attribute>
579 <img src="home.png" width="16" height="16" border="0">
580 <xsl:attribute name="alt">
581 <xsl:call-template name="gentext">
582 <xsl:with-param name="key">nav-home</xsl:with-param>
583 </xsl:call-template>
584 </xsl:attribute>
585 </img>
586 </a>
587 </td>
588 </xsl:when>
589 <xsl:otherwise>
590 <td>&#160;</td>
591 </xsl:otherwise>
592 </xsl:choose>
593 <xsl:choose>
594 <xsl:when test="count($up) > 0 and $up != $home">
595 <td>
596 <a accesskey="u">
597 <xsl:attribute name="href">
598 <xsl:call-template name="href.target">
599 <xsl:with-param name="object" select="$up"/>
600 </xsl:call-template>
601 </xsl:attribute>
602 <img src="up.png" width="16" height="16" border="0">
603 <xsl:attribute name="alt">
604 <xsl:call-template name="gentext">
605 <xsl:with-param name="key">nav-up</xsl:with-param>
606 </xsl:call-template>
607 </xsl:attribute>
608 </img>
609 </a>
610 </td>
611 </xsl:when>
612 <xsl:otherwise>
613 <td><img src="up-insensitive.png" width="16" height="16" border="0"/></td>
614 </xsl:otherwise>
615 </xsl:choose>
616 <xsl:choose>
617 <xsl:when test="count($prev) > 0">
618 <td>
619 <a accesskey="p">
620 <xsl:attribute name="href">
621 <xsl:call-template name="href.target">
622 <xsl:with-param name="object" select="$prev"/>
623 </xsl:call-template>
624 </xsl:attribute>
625 <img src="left.png" width="16" height="16" border="0">
626 <xsl:attribute name="alt">
627 <xsl:call-template name="gentext">
628 <xsl:with-param name="key">nav-prev</xsl:with-param>
629 </xsl:call-template>
630 </xsl:attribute>
631 </img>
632 </a>
633 </td>
634 </xsl:when>
635 <xsl:otherwise>
636 <td><img src="left-insensitive.png" width="16" height="16" border="0"/></td>
637 </xsl:otherwise>
638 </xsl:choose>
639 <xsl:choose>
640 <xsl:when test="count($next) > 0">
641 <td>
642 <a accesskey="n">
643 <xsl:attribute name="href">
644 <xsl:call-template name="href.target">
645 <xsl:with-param name="object" select="$next"/>
646 </xsl:call-template>
647 </xsl:attribute>
648 <img src="right.png" width="16" height="16" border="0">
649 <xsl:attribute name="alt">
650 <xsl:call-template name="gentext">
651 <xsl:with-param name="key">nav-next</xsl:with-param>
652 </xsl:call-template>
653 </xsl:attribute>
654 </img>
655 </a>
656 </td>
657 </xsl:when>
658 <xsl:otherwise>
659 <td><img src="right-insensitive.png" width="16" height="16" border="0"/></td>
660 </xsl:otherwise>
661 </xsl:choose>
662 </tr>
663 </table>
664 </xsl:if>
665 </xsl:template>
667 <xsl:template name="footer.navigation">
668 </xsl:template>
670 <!-- avoid creating multiple identical indices
671 if the stylesheets don't support filtered indices
673 <xsl:template match="index">
674 <xsl:variable name="has-filtered-index">
675 <xsl:call-template name="version-greater-or-equal">
676 <xsl:with-param name="ver1" select="$VERSION" />
677 <xsl:with-param name="ver2">1.66</xsl:with-param>
678 </xsl:call-template>
679 </xsl:variable>
680 <xsl:if test="($has-filtered-index = 1) or (count(@role) = 0)">
681 <xsl:apply-imports/>
682 </xsl:if>
683 </xsl:template>
685 <xsl:template match="index" mode="toc">
686 <xsl:variable name="has-filtered-index">
687 <xsl:call-template name="version-greater-or-equal">
688 <xsl:with-param name="ver1" select="$VERSION" />
689 <xsl:with-param name="ver2">1.66</xsl:with-param>
690 </xsl:call-template>
691 </xsl:variable>
692 <xsl:if test="($has-filtered-index = 1) or (count(@role) = 0)">
693 <xsl:apply-imports/>
694 </xsl:if>
695 </xsl:template>
697 <xsl:template match="para">
698 <xsl:choose>
699 <xsl:when test="@role = 'gallery'">
700 <div class="container">
701 <div class="gallery-spacer"> </div>
702 <xsl:apply-templates mode="gallery.mode"/>
703 <div class="gallery-spacer"> </div>
704 </div>
705 </xsl:when>
706 <xsl:otherwise>
707 <xsl:apply-imports/>
708 </xsl:otherwise>
709 </xsl:choose>
710 </xsl:template>
711 <!-- FIXME: try if that works too -->
712 <!--xsl:template match="para[@role='gallery']">
713 <div class="container">
714 <div class="gallery-spacer"> </div>
715 <xsl:apply-templates mode="gallery.mode"/>
716 <div class="gallery-spacer"> </div>
717 </div>
718 </xsl:template-->
722 <xsl:template match="link" mode="gallery.mode">
723 <div class="gallery-float">
724 <xsl:apply-templates select="."/>
725 </div>
726 </xsl:template>
728 <!-- add gallery handling to refnamediv template -->
729 <xsl:template match="refnamediv">
730 <div class="{name(.)}">
731 <table width="100%">
732 <tr><td valign="top">
733 <xsl:call-template name="anchor"/>
734 <xsl:choose>
735 <xsl:when test="$refentry.generate.name != 0">
736 <h2>
737 <xsl:call-template name="gentext">
738 <xsl:with-param name="key" select="'RefName'"/>
739 </xsl:call-template>
740 </h2>
741 </xsl:when>
742 <xsl:when test="$refentry.generate.title != 0">
743 <h2>
744 <xsl:choose>
745 <xsl:when test="../refmeta/refentrytitle">
746 <xsl:apply-templates select="../refmeta/refentrytitle"/>
747 </xsl:when>
748 <xsl:otherwise>
749 <xsl:apply-templates select="refname[1]"/>
750 </xsl:otherwise>
751 </xsl:choose>
752 </h2>
753 </xsl:when>
754 </xsl:choose>
756 <xsl:apply-templates/>
757 </p>
758 </td>
759 <td class="gallery_image" valign="top" align="right">
760 <xsl:choose>
761 <xsl:when test="../refmeta/refmiscinfo/inlinegraphic">
762 <xsl:apply-templates select="../refmeta/refmiscinfo/inlinegraphic"/>
763 </xsl:when>
764 <xsl:otherwise>
765 <!-- find the gallery image to use here
766 - determine the id of the enclosing refentry
767 - look for an inlinegraphic inside a link with linkend == refentryid inside a para with role == gallery
768 - use it here
770 <xsl:variable name="refentryid" select="../@id"/>
771 <xsl:apply-templates select="key('gallery.key', $refentryid)/inlinegraphic"/>
772 </xsl:otherwise>
773 </xsl:choose>
774 </td></tr>
775 </table>
776 </div>
777 </xsl:template>
779 <!-- add anchors for index sections -->
780 <xsl:template match="indexdiv">
781 <a><xsl:attribute name="name">idx<xsl:value-of select="./title"/></xsl:attribute></a>
782 <xsl:apply-templates/>
783 </xsl:template>
785 <!-- add anchors for glossary sections -->
786 <xsl:template match="glossdiv">
787 <a><xsl:attribute name="name">gls<xsl:value-of select="./title"/></xsl:attribute></a>
788 <xsl:apply-templates/>
789 </xsl:template>
791 <!-- Exterminate any trace of indexterms in the main flow -->
792 <xsl:template match="indexterm">
793 </xsl:template>
795 <!-- Extra link on the right side of doc-blobs -->
796 <xsl:template name="user.format.extralinks">
797 <xsl:if test="../ulink[@role='extralinks']">
798 <span class="extralinks">
799 <xsl:for-each select="../ulink[@role='extralinks']">
800 <xsl:if test="position() = 1">[&#160;</xsl:if>
801 <xsl:if test="position() > 1">&#160;&#160;<span class="dim">|</span>&#160;</xsl:if>
803 <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
804 <xsl:copy-of select="text()" />
805 </a>
806 <xsl:if test="position() = last()">&#160;&#160;]</xsl:if>
807 </xsl:for-each>
808 </span>
809 </xsl:if>
810 <!--xsl:copy-of select="text()" /-->
811 <xsl:apply-templates/>
812 </xsl:template>
814 <!-- this is not in use yet (see gtkdoc-mkdb
815 <xsl:template match="//refsect2/ulink[@role='extralinks']"/>
816 <xsl:template match="//refsect1/ulink[@role='extralinks']"/>
818 <xsl:template match="//refsect2/title">
819 <h3><xsl:call-template name="user.format.extralinks"/></h3>
820 </xsl:template>
822 <xsl:template match="//refsect1/title">
823 <h2><xsl:call-template name="user.format.extralinks"/></h2>
824 </xsl:template>
827 <!-- ==================================================================== -->
829 <xsl:template match="acronym">
830 <xsl:call-template name="generate.acronym.link"/>
831 </xsl:template>
833 <xsl:template name="generate.acronym.link">
834 <xsl:param name="acronym">
835 <xsl:apply-templates/>
836 </xsl:param>
837 <!--
838 We use for-each to change context to the database document because key()
839 only locates elements in the same document as the context node!
842 <xsl:param name="value" >
843 <xsl:value-of select="key('acronym.key', $acronym)/../glossdef/para[1]" />
844 </xsl:param>
845 <xsl:choose>
846 <xsl:when test="$value=''">
847 <!-- debug -->
848 <xsl:message>
849 In gtk-doc.xsl: For acronym (<xsl:value-of select="$acronym"/>) no value found!
850 </xsl:message>
852 <xsl:attribute name="href">
853 <xsl:text>http://foldoc.org/</xsl:text>
854 <xsl:value-of select="$acronym"/>
855 </xsl:attribute>
856 <xsl:call-template name="inline.charseq"/>
857 </a>
858 </xsl:when>
859 <xsl:otherwise>
860 <!-- found -->
861 <acronym>
862 <xsl:attribute name="title">
863 <xsl:value-of select="$value"/>
864 </xsl:attribute>
865 <xsl:call-template name="inline.charseq"/>
866 </acronym>
867 </xsl:otherwise>
868 </xsl:choose>
869 </xsl:template>
871 </xsl:stylesheet>