source: clfs-embedded/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/xref.xsl @ 3ca2208

Last change on this file since 3ca2208 was 9882b55, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Added the new lfs-xsl stylesheets.

  • Property mode set to 100644
File size: 45.7 KB
Line 
1<?xml version="1.0" encoding="ASCII"?>
2<!--This file was created automatically by html2xhtml-->
3<!--from the HTML stylesheets.-->
4<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="suwl exsl xlink" version="1.0">
5
6<!-- ********************************************************************
7     $Id$
8     ********************************************************************
9
10     This file is part of the XSL DocBook Stylesheet distribution.
11     See ../README or http://docbook.sf.net/release/xsl/current/ for
12     copyright and other information.
13
14     ******************************************************************** -->
15
16<!-- Use internal variable for olink xlink role for consistency -->
17<xsl:variable name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable>
18
19<!-- ==================================================================== -->
20
21<xsl:template match="anchor">
22  <xsl:call-template name="anchor"/>
23</xsl:template>
24
25<!-- ==================================================================== -->
26
27<xsl:template match="xref" name="xref">
28  <xsl:param name="xhref" select="@xlink:href"/>
29  <!-- is the @xlink:href a local idref link? -->
30  <xsl:param name="xlink.idref">
31    <xsl:if test="starts-with($xhref,'#')                   and (not(contains($xhref,'('))                   or starts-with($xhref, '#xpointer(id('))">
32      <xsl:call-template name="xpointer.idref">
33        <xsl:with-param name="xpointer" select="$xhref"/>
34      </xsl:call-template>
35   </xsl:if>
36  </xsl:param>
37  <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/>
38  <xsl:param name="linkend.targets" select="key('id',@linkend)"/>
39  <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/>
40
41  <xsl:variable name="xrefstyle">
42    <xsl:choose>
43      <xsl:when test="@role and not(@xrefstyle)                        and $use.role.as.xrefstyle != 0">
44        <xsl:value-of select="@role"/>
45      </xsl:when>
46      <xsl:otherwise>
47        <xsl:value-of select="@xrefstyle"/>
48      </xsl:otherwise>
49    </xsl:choose>
50  </xsl:variable>
51
52  <xsl:call-template name="anchor"/>
53
54  <xsl:variable name="content">
55    <xsl:choose>
56 
57      <xsl:when test="@endterm">
58        <xsl:variable name="etargets" select="key('id',@endterm)"/>
59        <xsl:variable name="etarget" select="$etargets[1]"/>
60        <xsl:choose>
61          <xsl:when test="count($etarget) = 0">
62            <xsl:message>
63              <xsl:value-of select="count($etargets)"/>
64              <xsl:text>Endterm points to nonexistent ID: </xsl:text>
65              <xsl:value-of select="@endterm"/>
66            </xsl:message>
67            <xsl:text>???</xsl:text>
68          </xsl:when>
69          <xsl:otherwise>
70            <xsl:apply-templates select="$etarget" mode="endterm"/>
71          </xsl:otherwise>
72        </xsl:choose>
73      </xsl:when>
74 
75      <xsl:when test="$target/@xreflabel">
76        <xsl:call-template name="xref.xreflabel">
77          <xsl:with-param name="target" select="$target"/>
78        </xsl:call-template>
79      </xsl:when>
80 
81      <xsl:when test="$target">
82        <xsl:if test="not(parent::citation)">
83          <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
84        </xsl:if>
85 
86        <xsl:apply-templates select="$target" mode="xref-to">
87          <xsl:with-param name="referrer" select="."/>
88          <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
89        </xsl:apply-templates>
90 
91        <xsl:if test="not(parent::citation)">
92          <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
93        </xsl:if>
94      </xsl:when>
95
96      <xsl:otherwise>
97        <xsl:message>
98          <xsl:text>ERROR: xref linking to </xsl:text>
99          <xsl:value-of select="@linkend|@xlink:href"/>
100          <xsl:text> has no generated link text.</xsl:text>
101        </xsl:message>
102        <xsl:text>???</xsl:text>
103      </xsl:otherwise>
104    </xsl:choose>
105  </xsl:variable>
106
107  <xsl:call-template name="simple.xlink">
108    <xsl:with-param name="content" select="$content"/>
109  </xsl:call-template>
110
111</xsl:template>
112
113<!-- ==================================================================== -->
114
115<!-- biblioref handled largely like an xref -->
116<!-- To be done: add support for begin, end, and units attributes -->
117<xsl:template match="biblioref">
118  <xsl:variable name="targets" select="key('id',@linkend)"/>
119  <xsl:variable name="target" select="$targets[1]"/>
120  <xsl:variable name="refelem" select="local-name($target)"/>
121
122  <xsl:call-template name="check.id.unique">
123    <xsl:with-param name="linkend" select="@linkend"/>
124  </xsl:call-template>
125
126  <xsl:call-template name="anchor"/>
127
128  <xsl:choose>
129    <xsl:when test="count($target) = 0">
130      <xsl:message>
131        <xsl:text>XRef to nonexistent id: </xsl:text>
132        <xsl:value-of select="@linkend"/>
133      </xsl:message>
134      <xsl:text>???</xsl:text>
135    </xsl:when>
136
137    <xsl:when test="@endterm">
138      <xsl:variable name="href">
139        <xsl:call-template name="href.target">
140          <xsl:with-param name="object" select="$target"/>
141        </xsl:call-template>
142      </xsl:variable>
143
144      <xsl:variable name="etargets" select="key('id',@endterm)"/>
145      <xsl:variable name="etarget" select="$etargets[1]"/>
146      <xsl:choose>
147        <xsl:when test="count($etarget) = 0">
148          <xsl:message>
149            <xsl:value-of select="count($etargets)"/>
150            <xsl:text>Endterm points to nonexistent ID: </xsl:text>
151            <xsl:value-of select="@endterm"/>
152          </xsl:message>
153          <a href="{$href}">
154            <xsl:apply-templates select="." mode="class.attribute"/>
155            <xsl:text>???</xsl:text>
156          </a>
157        </xsl:when>
158        <xsl:otherwise>
159          <a href="{$href}">
160            <xsl:apply-templates select="." mode="class.attribute"/>
161            <xsl:apply-templates select="$etarget" mode="endterm"/>
162          </a>
163        </xsl:otherwise>
164      </xsl:choose>
165    </xsl:when>
166
167    <xsl:when test="$target/@xreflabel">
168      <a>
169        <xsl:apply-templates select="." mode="class.attribute"/>
170        <xsl:attribute name="href">
171          <xsl:call-template name="href.target">
172            <xsl:with-param name="object" select="$target"/>
173          </xsl:call-template>
174        </xsl:attribute>
175        <xsl:call-template name="xref.xreflabel">
176          <xsl:with-param name="target" select="$target"/>
177        </xsl:call-template>
178      </a>
179    </xsl:when>
180
181    <xsl:otherwise>
182      <xsl:variable name="href">
183        <xsl:call-template name="href.target">
184          <xsl:with-param name="object" select="$target"/>
185        </xsl:call-template>
186      </xsl:variable>
187
188      <xsl:if test="not(parent::citation)">
189        <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
190      </xsl:if>
191
192      <a href="{$href}">
193        <xsl:apply-templates select="." mode="class.attribute"/>
194        <xsl:if test="$target/title or $target/*/title">
195          <xsl:attribute name="title">
196            <xsl:apply-templates select="$target" mode="xref-title"/>
197          </xsl:attribute>
198        </xsl:if>
199        <xsl:apply-templates select="$target" mode="xref-to">
200          <xsl:with-param name="referrer" select="."/>
201          <xsl:with-param name="xrefstyle">
202            <xsl:choose>
203              <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0">
204                <xsl:value-of select="@role"/>
205              </xsl:when>
206              <xsl:otherwise>
207                <xsl:value-of select="@xrefstyle"/>
208              </xsl:otherwise>
209            </xsl:choose>
210          </xsl:with-param>
211        </xsl:apply-templates>
212      </a>
213
214      <xsl:if test="not(parent::citation)">
215        <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
216      </xsl:if>
217    </xsl:otherwise>
218  </xsl:choose>
219</xsl:template>
220
221<!-- ==================================================================== -->
222
223<xsl:template match="*" mode="endterm">
224  <!-- Process the children of the endterm element -->
225  <xsl:variable name="endterm">
226    <xsl:apply-templates select="child::node()"/>
227  </xsl:variable>
228
229  <xsl:choose>
230    <xsl:when test="function-available('exsl:node-set')">
231      <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/>
232    </xsl:when>
233    <xsl:otherwise>
234      <xsl:copy-of select="$endterm"/>
235    </xsl:otherwise>
236  </xsl:choose>
237</xsl:template>
238
239<xsl:template match="*" mode="remove-ids">
240  <xsl:choose>
241    <!-- handle html or xhtml -->
242    <xsl:when test="local-name(.) = 'a'                     and (namespace-uri(.) = ''                          or namespace-uri(.) = 'http://www.w3.org/1999/xhtml')">
243      <xsl:choose>
244        <xsl:when test="(@name and count(@*) = 1)                         or (@id and count(@*) = 1)                         or (@xml:id and count(@*) = 1)                         or (@xml:id and @name and count(@*) = 2)                         or (@id and @name and count(@*) = 2)">
245          <xsl:message>suppress anchor</xsl:message>
246          <!-- suppress the whole thing -->
247        </xsl:when>
248        <xsl:otherwise>
249          <xsl:copy>
250            <xsl:for-each select="@*">
251              <xsl:choose>
252                <xsl:when test="local-name(.) != 'name' and local-name(.) != 'id'">
253                  <xsl:copy/>
254                </xsl:when>
255                <xsl:otherwise>
256                  <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message>
257                </xsl:otherwise>
258              </xsl:choose>
259            </xsl:for-each>
260          </xsl:copy>
261          <xsl:apply-templates mode="remove-ids"/>
262        </xsl:otherwise>
263      </xsl:choose>
264    </xsl:when>
265    <xsl:otherwise>
266      <xsl:copy>
267        <xsl:for-each select="@*">
268          <xsl:choose>
269            <xsl:when test="local-name(.) != 'id'">
270              <xsl:copy/>
271            </xsl:when>
272            <xsl:otherwise>
273              <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message>
274            </xsl:otherwise>
275          </xsl:choose>
276        </xsl:for-each>
277        <xsl:apply-templates mode="remove-ids"/>
278      </xsl:copy>
279    </xsl:otherwise>
280  </xsl:choose>
281</xsl:template>
282
283<!-- ==================================================================== -->
284
285<xsl:template match="*" mode="xref-to-prefix"/>
286<xsl:template match="*" mode="xref-to-suffix"/>
287
288<xsl:template match="*" mode="xref-to">
289  <xsl:param name="referrer"/>
290  <xsl:param name="xrefstyle"/>
291  <xsl:param name="verbose" select="1"/>
292
293  <xsl:if test="$verbose">
294    <xsl:message>
295      <xsl:text>Don't know what gentext to create for xref to: "</xsl:text>
296      <xsl:value-of select="name(.)"/>
297      <xsl:text>", ("</xsl:text>
298      <xsl:value-of select="(@id|@xml:id)[1]"/>
299      <xsl:text>")</xsl:text>
300    </xsl:message>
301  </xsl:if>
302  <xsl:text>???</xsl:text>
303</xsl:template>
304
305<xsl:template match="title" mode="xref-to">
306  <xsl:param name="referrer"/>
307  <xsl:param name="xrefstyle"/>
308  <xsl:param name="verbose" select="1"/>
309
310  <!-- if you xref to a title, xref to the parent... -->
311  <xsl:choose>
312    <!-- FIXME: how reliable is this? -->
313    <xsl:when test="contains(local-name(parent::*), 'info')">
314      <xsl:apply-templates select="parent::*[2]" mode="xref-to">
315        <xsl:with-param name="referrer" select="$referrer"/>
316        <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
317        <xsl:with-param name="verbose" select="$verbose"/>
318      </xsl:apply-templates>
319    </xsl:when>
320    <xsl:otherwise>
321      <xsl:apply-templates select="parent::*" mode="xref-to">
322        <xsl:with-param name="referrer" select="$referrer"/>
323        <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
324        <xsl:with-param name="verbose" select="$verbose"/>
325      </xsl:apply-templates>
326    </xsl:otherwise>
327  </xsl:choose>
328</xsl:template>
329
330<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset                      |biblioset|blockquote|calloutlist|caution|colophon                      |constraintdef|formalpara|glossdiv|important|indexdiv                      |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain                      |msgrel|msgset|msgsub|note|orderedlist|partintro                      |productionset|qandadiv|refsynopsisdiv|segmentedlist                      |set|setindex|sidebar|tip|toc|variablelist|warning" mode="xref-to">
331  <xsl:param name="referrer"/>
332  <xsl:param name="xrefstyle"/>
333  <xsl:param name="verbose" select="1"/>
334
335  <!-- catch-all for things with (possibly optional) titles -->
336  <xsl:apply-templates select="." mode="object.xref.markup">
337    <xsl:with-param name="purpose" select="'xref'"/>
338    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
339    <xsl:with-param name="referrer" select="$referrer"/>
340    <xsl:with-param name="verbose" select="$verbose"/>
341  </xsl:apply-templates>
342</xsl:template>
343
344<xsl:template match="author|editor|othercredit|personname" mode="xref-to">
345  <xsl:param name="referrer"/>
346  <xsl:param name="xrefstyle"/>
347
348  <xsl:call-template name="person.name"/>
349</xsl:template>
350
351<xsl:template match="authorgroup" mode="xref-to">
352  <xsl:param name="referrer"/>
353  <xsl:param name="xrefstyle"/>
354
355  <xsl:call-template name="person.name.list"/>
356</xsl:template>
357
358<xsl:template match="figure|example|table|equation" mode="xref-to">
359  <xsl:param name="referrer"/>
360  <xsl:param name="xrefstyle"/>
361  <xsl:param name="verbose" select="1"/>
362
363  <xsl:apply-templates select="." mode="object.xref.markup">
364    <xsl:with-param name="purpose" select="'xref'"/>
365    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
366    <xsl:with-param name="referrer" select="$referrer"/>
367    <xsl:with-param name="verbose" select="$verbose"/>
368  </xsl:apply-templates>
369</xsl:template>
370
371<xsl:template match="procedure" mode="xref-to">
372  <xsl:param name="referrer"/>
373  <xsl:param name="xrefstyle"/>
374  <xsl:param name="verbose"/>
375
376  <xsl:apply-templates select="." mode="object.xref.markup">
377    <xsl:with-param name="purpose" select="'xref'"/>
378    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
379    <xsl:with-param name="referrer" select="$referrer"/>
380    <xsl:with-param name="verbose" select="$verbose"/>
381  </xsl:apply-templates>
382</xsl:template>
383
384<xsl:template match="task" mode="xref-to">
385  <xsl:param name="referrer"/>
386  <xsl:param name="xrefstyle"/>
387  <xsl:param name="verbose"/>
388
389  <xsl:apply-templates select="." mode="object.xref.markup">
390    <xsl:with-param name="purpose" select="'xref'"/>
391    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
392    <xsl:with-param name="referrer" select="$referrer"/>
393    <xsl:with-param name="verbose" select="$verbose"/>
394  </xsl:apply-templates>
395</xsl:template>
396
397<xsl:template match="cmdsynopsis" mode="xref-to">
398  <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
399</xsl:template>
400
401<xsl:template match="funcsynopsis" mode="xref-to">
402  <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
403</xsl:template>
404
405<xsl:template match="dedication|preface|chapter|appendix|article" mode="xref-to">
406  <xsl:param name="referrer"/>
407  <xsl:param name="xrefstyle"/>
408  <xsl:param name="verbose" select="1"/>
409
410  <xsl:apply-templates select="." mode="object.xref.markup">
411    <xsl:with-param name="purpose" select="'xref'"/>
412    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
413    <xsl:with-param name="referrer" select="$referrer"/>
414    <xsl:with-param name="verbose" select="$verbose"/>
415  </xsl:apply-templates>
416</xsl:template>
417
418<xsl:template match="bibliography" mode="xref-to">
419  <xsl:param name="referrer"/>
420  <xsl:param name="xrefstyle"/>
421  <xsl:param name="verbose" select="1"/>
422
423  <xsl:apply-templates select="." mode="object.xref.markup">
424    <xsl:with-param name="purpose" select="'xref'"/>
425    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
426    <xsl:with-param name="referrer" select="$referrer"/>
427    <xsl:with-param name="verbose" select="$verbose"/>
428  </xsl:apply-templates>
429</xsl:template>
430
431<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix">
432  <xsl:text>[</xsl:text>
433</xsl:template>
434
435<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix">
436  <xsl:text>]</xsl:text>
437</xsl:template>
438
439<xsl:template match="biblioentry|bibliomixed" mode="xref-to">
440  <xsl:param name="referrer"/>
441  <xsl:param name="xrefstyle"/>
442  <xsl:param name="verbose" select="1"/>
443
444  <!-- handles both biblioentry and bibliomixed -->
445  <xsl:choose>
446    <xsl:when test="string(.) = ''">
447      <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
448      <xsl:variable name="id" select="(@id|@xml:id)[1]"/>
449      <xsl:variable name="entry" select="$bib/bibliography/                                     *[@id=$id or @xml:id=$id][1]"/>
450      <xsl:choose>
451        <xsl:when test="$entry">
452          <xsl:choose>
453            <xsl:when test="$bibliography.numbered != 0">
454              <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
455            </xsl:when>
456            <xsl:when test="local-name($entry/*[1]) = 'abbrev'">
457              <xsl:apply-templates select="$entry/*[1]"/>
458            </xsl:when>
459            <xsl:otherwise>
460              <xsl:value-of select="(@id|@xml:id)[1]"/>
461            </xsl:otherwise>
462          </xsl:choose>
463        </xsl:when>
464        <xsl:otherwise>
465          <xsl:message>
466            <xsl:text>No bibliography entry: </xsl:text>
467            <xsl:value-of select="$id"/>
468            <xsl:text> found in </xsl:text>
469            <xsl:value-of select="$bibliography.collection"/>
470          </xsl:message>
471          <xsl:value-of select="(@id|@xml:id)[1]"/>
472        </xsl:otherwise>
473      </xsl:choose>
474    </xsl:when>
475    <xsl:otherwise>
476      <xsl:choose>
477        <xsl:when test="$bibliography.numbered != 0">
478          <xsl:number from="bibliography" count="biblioentry|bibliomixed" level="any" format="1"/>
479        </xsl:when>
480        <xsl:when test="local-name(*[1]) = 'abbrev'">
481          <xsl:apply-templates select="*[1]"/>
482        </xsl:when>
483        <xsl:otherwise>
484          <xsl:value-of select="(@id|@xml:id)[1]"/>
485        </xsl:otherwise>
486      </xsl:choose>
487    </xsl:otherwise>
488  </xsl:choose>
489</xsl:template>
490
491<xsl:template match="glossary" mode="xref-to">
492  <xsl:param name="referrer"/>
493  <xsl:param name="xrefstyle"/>
494  <xsl:param name="verbose" select="1"/>
495
496  <xsl:apply-templates select="." mode="object.xref.markup">
497    <xsl:with-param name="purpose" select="'xref'"/>
498    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
499    <xsl:with-param name="referrer" select="$referrer"/>
500    <xsl:with-param name="verbose" select="$verbose"/>
501  </xsl:apply-templates>
502</xsl:template>
503
504<xsl:template match="glossentry" mode="xref-to">
505  <xsl:param name="referrer"/>
506  <xsl:param name="xrefstyle"/>
507  <xsl:param name="verbose" select="1"/>
508  <xsl:choose>
509    <xsl:when test="$glossentry.show.acronym = 'primary'">
510      <xsl:choose>
511        <xsl:when test="acronym|abbrev">
512          <xsl:apply-templates select="(acronym|abbrev)[1]"/>
513        </xsl:when>
514        <xsl:otherwise>
515          <xsl:apply-templates select="glossterm[1]" mode="xref-to">
516            <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
517            <xsl:with-param name="referrer" select="$referrer"/>
518            <xsl:with-param name="verbose" select="$verbose"/>
519          </xsl:apply-templates>
520        </xsl:otherwise>
521      </xsl:choose>
522    </xsl:when>
523    <xsl:otherwise>
524      <xsl:apply-templates select="glossterm[1]" mode="xref-to">
525        <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
526        <xsl:with-param name="referrer" select="$referrer"/>
527        <xsl:with-param name="verbose" select="$verbose"/>
528      </xsl:apply-templates>
529    </xsl:otherwise>
530  </xsl:choose>
531</xsl:template>
532
533<xsl:template match="glossterm" mode="xref-to">
534  <xsl:apply-templates/>
535</xsl:template>
536
537<xsl:template match="index" mode="xref-to">
538  <xsl:param name="referrer"/>
539  <xsl:param name="xrefstyle"/>
540  <xsl:param name="verbose" select="1"/>
541
542  <xsl:apply-templates select="." mode="object.xref.markup">
543    <xsl:with-param name="purpose" select="'xref'"/>
544    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
545    <xsl:with-param name="referrer" select="$referrer"/>
546    <xsl:with-param name="verbose" select="$verbose"/>
547  </xsl:apply-templates>
548</xsl:template>
549
550<xsl:template match="listitem" mode="xref-to">
551  <xsl:param name="referrer"/>
552  <xsl:param name="xrefstyle"/>
553  <xsl:param name="verbose"/>
554
555  <xsl:apply-templates select="." mode="object.xref.markup">
556    <xsl:with-param name="purpose" select="'xref'"/>
557    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
558    <xsl:with-param name="referrer" select="$referrer"/>
559    <xsl:with-param name="verbose" select="$verbose"/>
560  </xsl:apply-templates>
561</xsl:template>
562
563<xsl:template match="section|simplesect                      |sect1|sect2|sect3|sect4|sect5                      |refsect1|refsect2|refsect3|refsection" mode="xref-to">
564  <xsl:param name="referrer"/>
565  <xsl:param name="xrefstyle"/>
566  <xsl:param name="verbose" select="1"/>
567
568  <xsl:apply-templates select="." mode="object.xref.markup">
569    <xsl:with-param name="purpose" select="'xref'"/>
570    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
571    <xsl:with-param name="referrer" select="$referrer"/>
572    <xsl:with-param name="verbose" select="$verbose"/>
573  </xsl:apply-templates>
574  <!-- FIXME: What about "in Chapter X"? -->
575</xsl:template>
576
577<xsl:template match="bridgehead" mode="xref-to">
578  <xsl:param name="referrer"/>
579  <xsl:param name="xrefstyle"/>
580  <xsl:param name="verbose" select="1"/>
581
582  <xsl:apply-templates select="." mode="object.xref.markup">
583    <xsl:with-param name="purpose" select="'xref'"/>
584    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
585    <xsl:with-param name="referrer" select="$referrer"/>
586    <xsl:with-param name="verbose" select="$verbose"/>
587  </xsl:apply-templates>
588  <!-- FIXME: What about "in Chapter X"? -->
589</xsl:template>
590
591<xsl:template match="qandaset" mode="xref-to">
592  <xsl:param name="referrer"/>
593  <xsl:param name="xrefstyle"/>
594  <xsl:param name="verbose" select="1"/>
595
596  <xsl:apply-templates select="." mode="object.xref.markup">
597    <xsl:with-param name="purpose" select="'xref'"/>
598    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
599    <xsl:with-param name="referrer" select="$referrer"/>
600    <xsl:with-param name="verbose" select="$verbose"/>
601  </xsl:apply-templates>
602</xsl:template>
603
604<xsl:template match="qandadiv" mode="xref-to">
605  <xsl:param name="referrer"/>
606  <xsl:param name="xrefstyle"/>
607  <xsl:param name="verbose" select="1"/>
608
609  <xsl:apply-templates select="." mode="object.xref.markup">
610    <xsl:with-param name="purpose" select="'xref'"/>
611    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
612    <xsl:with-param name="referrer" select="$referrer"/>
613    <xsl:with-param name="verbose" select="$verbose"/>
614  </xsl:apply-templates>
615</xsl:template>
616
617<xsl:template match="qandaentry" mode="xref-to">
618  <xsl:param name="referrer"/>
619  <xsl:param name="xrefstyle"/>
620  <xsl:param name="verbose" select="1"/>
621
622  <xsl:apply-templates select="question[1]" mode="object.xref.markup">
623    <xsl:with-param name="purpose" select="'xref'"/>
624    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
625    <xsl:with-param name="referrer" select="$referrer"/>
626    <xsl:with-param name="verbose" select="$verbose"/>
627  </xsl:apply-templates>
628</xsl:template>
629
630<xsl:template match="question|answer" mode="xref-to">
631  <xsl:param name="referrer"/>
632  <xsl:param name="xrefstyle"/>
633  <xsl:param name="verbose" select="1"/>
634
635  <xsl:apply-templates select="." mode="object.xref.markup">
636    <xsl:with-param name="purpose" select="'xref'"/>
637    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
638    <xsl:with-param name="referrer" select="$referrer"/>
639    <xsl:with-param name="verbose" select="$verbose"/>
640  </xsl:apply-templates>
641</xsl:template>
642
643<xsl:template match="part|reference" mode="xref-to">
644  <xsl:param name="referrer"/>
645  <xsl:param name="xrefstyle"/>
646  <xsl:param name="verbose" select="1"/>
647
648  <xsl:apply-templates select="." mode="object.xref.markup">
649    <xsl:with-param name="purpose" select="'xref'"/>
650    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
651    <xsl:with-param name="referrer" select="$referrer"/>
652    <xsl:with-param name="verbose" select="$verbose"/>
653  </xsl:apply-templates>
654</xsl:template>
655
656<xsl:template match="refentry" mode="xref-to">
657  <xsl:param name="referrer"/>
658  <xsl:param name="xrefstyle"/>
659
660  <xsl:choose>
661    <xsl:when test="refmeta/refentrytitle">
662      <xsl:apply-templates select="refmeta/refentrytitle"/>
663    </xsl:when>
664    <xsl:otherwise>
665      <xsl:apply-templates select="refnamediv/refname[1]"/>
666    </xsl:otherwise>
667  </xsl:choose>
668  <xsl:apply-templates select="refmeta/manvolnum"/>
669</xsl:template>
670
671<xsl:template match="refnamediv" mode="xref-to">
672  <xsl:param name="referrer"/>
673  <xsl:param name="xrefstyle"/>
674  <xsl:param name="verbose" select="1"/>
675
676  <xsl:apply-templates select="refname[1]" mode="xref-to">
677    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
678    <xsl:with-param name="referrer" select="$referrer"/>
679    <xsl:with-param name="verbose" select="$verbose"/>
680  </xsl:apply-templates>
681</xsl:template>
682
683<xsl:template match="refname" mode="xref-to">
684  <xsl:param name="referrer"/>
685  <xsl:param name="xrefstyle"/>
686  <xsl:param name="verbose" select="1"/>
687
688  <xsl:apply-templates mode="xref-to"/>
689</xsl:template>
690
691<xsl:template match="step" mode="xref-to">
692  <xsl:param name="referrer"/>
693  <xsl:param name="xrefstyle"/>
694
695  <xsl:call-template name="gentext">
696    <xsl:with-param name="key" select="'Step'"/>
697  </xsl:call-template>
698  <xsl:text> </xsl:text>
699  <xsl:apply-templates select="." mode="number"/>
700</xsl:template>
701
702<xsl:template match="varlistentry" mode="xref-to">
703  <xsl:param name="referrer"/>
704  <xsl:param name="xrefstyle"/>
705  <xsl:param name="verbose" select="1"/>
706
707  <xsl:apply-templates select="term[1]" mode="xref-to">
708    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
709    <xsl:with-param name="referrer" select="$referrer"/>
710    <xsl:with-param name="verbose" select="$verbose"/>
711  </xsl:apply-templates>
712</xsl:template>
713
714<xsl:template match="varlistentry/term" mode="xref-to">
715  <xsl:param name="referrer"/>
716  <xsl:param name="xrefstyle"/>
717
718  <!-- to avoid the comma that will be generated if there are several terms -->
719  <xsl:apply-templates/>
720</xsl:template>
721
722<xsl:template match="co" mode="xref-to">
723  <xsl:param name="referrer"/>
724  <xsl:param name="xrefstyle"/>
725
726  <xsl:apply-templates select="." mode="callout-bug"/>
727</xsl:template>
728
729<!-- This is currently not working, because there is no corresponding ID generated by Java extensions for processing callouts
730<xsl:template match="area|areaset" mode="xref-to">
731  <xsl:param name="referrer"/>
732  <xsl:param name="xrefstyle"/>
733
734  <xsl:call-template name="callout-bug">
735    <xsl:with-param name="conum">
736      <xsl:apply-templates select="." mode="conumber"/>
737    </xsl:with-param>
738  </xsl:call-template>
739</xsl:template>
740-->
741
742<xsl:template match="book" mode="xref-to">
743  <xsl:param name="referrer"/>
744  <xsl:param name="xrefstyle"/>
745  <xsl:param name="verbose" select="1"/>
746
747  <xsl:apply-templates select="." mode="object.xref.markup">
748    <xsl:with-param name="purpose" select="'xref'"/>
749    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
750    <xsl:with-param name="referrer" select="$referrer"/>
751    <xsl:with-param name="verbose" select="$verbose"/>
752  </xsl:apply-templates>
753</xsl:template>
754
755<xsl:template match="para" mode="xref-to">
756  <xsl:param name="referrer"/>
757  <xsl:param name="xrefstyle"/>
758  <xsl:param name="verbose" select="1"/>
759
760  <xsl:variable name="context" select="(ancestor::simplesect                                        |ancestor::section                                        |ancestor::sect1                                        |ancestor::sect2                                        |ancestor::sect3                                        |ancestor::sect4                                        |ancestor::sect5                                        |ancestor::refsection                                        |ancestor::refsect1                                        |ancestor::refsect2                                        |ancestor::refsect3                                        |ancestor::chapter                                        |ancestor::appendix                                        |ancestor::preface                                        |ancestor::partintro                                        |ancestor::dedication                                        |ancestor::colophon                                        |ancestor::bibliography                                        |ancestor::index                                        |ancestor::glossary                                        |ancestor::glossentry                                        |ancestor::listitem                                        |ancestor::varlistentry)[last()]"/>
761
762  <xsl:apply-templates select="$context" mode="xref-to">
763    <xsl:with-param name="purpose" select="'xref'"/>
764    <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
765    <xsl:with-param name="referrer" select="$referrer"/>
766    <xsl:with-param name="verbose" select="$verbose"/>
767  </xsl:apply-templates>
768</xsl:template>
769
770<!-- ==================================================================== -->
771
772<xsl:template match="*" mode="xref-title">
773  <xsl:variable name="title">
774    <xsl:apply-templates select="." mode="object.title.markup"/>
775  </xsl:variable>
776
777  <xsl:value-of select="$title"/>
778</xsl:template>
779
780<xsl:template match="author" mode="xref-title">
781  <xsl:variable name="title">
782    <xsl:call-template name="person.name"/>
783  </xsl:variable>
784
785  <xsl:value-of select="$title"/>
786</xsl:template>
787
788<xsl:template match="authorgroup" mode="xref-title">
789  <xsl:variable name="title">
790    <xsl:call-template name="person.name.list"/>
791  </xsl:variable>
792
793  <xsl:value-of select="$title"/>
794</xsl:template>
795
796<xsl:template match="cmdsynopsis" mode="xref-title">
797  <xsl:variable name="title">
798    <xsl:apply-templates select="(.//command)[1]" mode="xref"/>
799  </xsl:variable>
800
801  <xsl:value-of select="$title"/>
802</xsl:template>
803
804<xsl:template match="funcsynopsis" mode="xref-title">
805  <xsl:variable name="title">
806    <xsl:apply-templates select="(.//function)[1]" mode="xref"/>
807  </xsl:variable>
808
809  <xsl:value-of select="$title"/>
810</xsl:template>
811
812<xsl:template match="biblioentry|bibliomixed" mode="xref-title">
813  <!-- handles both biblioentry and bibliomixed -->
814  <xsl:variable name="title">
815    <xsl:text>[</xsl:text>
816    <xsl:choose>
817      <xsl:when test="local-name(*[1]) = 'abbrev'">
818        <xsl:apply-templates select="*[1]"/>
819      </xsl:when>
820      <xsl:otherwise>
821        <xsl:value-of select="(@id|@xml:id)[1]"/>
822      </xsl:otherwise>
823    </xsl:choose>
824    <xsl:text>]</xsl:text>
825  </xsl:variable>
826
827  <xsl:value-of select="$title"/>
828</xsl:template>
829
830<xsl:template match="step" mode="xref-title">
831  <xsl:call-template name="gentext">
832    <xsl:with-param name="key" select="'Step'"/>
833  </xsl:call-template>
834  <xsl:text> </xsl:text>
835  <xsl:apply-templates select="." mode="number"/>
836</xsl:template>
837
838<xsl:template match="step[not(./title)]" mode="title.markup">
839  <xsl:call-template name="gentext">
840    <xsl:with-param name="key" select="'Step'"/>
841  </xsl:call-template>
842  <xsl:text> </xsl:text>
843  <xsl:apply-templates select="." mode="number"/>
844</xsl:template>
845
846<xsl:template match="co" mode="xref-title">
847  <xsl:variable name="title">
848    <xsl:apply-templates select="." mode="callout-bug"/>
849  </xsl:variable>
850
851  <xsl:value-of select="$title"/>
852</xsl:template>
853
854<!-- ==================================================================== -->
855
856<xsl:template match="link" name="link">
857  <xsl:param name="linkend" select="@linkend"/>
858  <xsl:param name="a.target"/>
859
860  <xsl:variable name="content">
861    <xsl:call-template name="anchor"/>
862    <xsl:choose>
863      <xsl:when test="count(child::node()) &gt; 0">
864        <!-- If it has content, use it -->
865        <xsl:apply-templates/>
866      </xsl:when>
867      <!-- else look for an endterm -->
868      <xsl:when test="@endterm">
869        <xsl:variable name="etargets" select="key('id',@endterm)"/>
870        <xsl:variable name="etarget" select="$etargets[1]"/>
871        <xsl:choose>
872          <xsl:when test="count($etarget) = 0">
873            <xsl:message>
874              <xsl:value-of select="count($etargets)"/>
875              <xsl:text>Endterm points to nonexistent ID: </xsl:text>
876              <xsl:value-of select="@endterm"/>
877            </xsl:message>
878            <xsl:text>???</xsl:text>
879          </xsl:when>
880          <xsl:otherwise>
881              <xsl:apply-templates select="$etarget" mode="endterm"/>
882          </xsl:otherwise>
883        </xsl:choose>
884      </xsl:when>
885      <!-- Use the xlink:href if no other text -->
886      <xsl:when test="@xlink:href">
887        <xsl:value-of select="@xlink:href"/>
888      </xsl:when>
889      <xsl:otherwise>
890        <xsl:message>
891          <xsl:text>Link element has no content and no Endterm. </xsl:text>
892          <xsl:text>Nothing to show in the link to </xsl:text>
893          <xsl:value-of select="(@xlink:href|@linkend)[1]"/>
894        </xsl:message>
895        <xsl:text>???</xsl:text>
896      </xsl:otherwise>
897    </xsl:choose>
898  </xsl:variable>
899
900  <xsl:call-template name="simple.xlink">
901    <xsl:with-param name="node" select="."/>
902    <xsl:with-param name="linkend" select="$linkend"/>
903    <xsl:with-param name="content" select="$content"/>
904    <xsl:with-param name="a.target" select="$a.target"/>
905  </xsl:call-template>
906
907</xsl:template>
908
909<xsl:template match="ulink" name="ulink">
910  <xsl:param name="url" select="@url"/>
911  <xsl:variable name="link">
912    <a>
913      <xsl:apply-templates select="." mode="class.attribute"/>
914      <xsl:if test="@id or @xml:id">
915        <xsl:attribute name="id">
916          <xsl:value-of select="(@id|@xml:id)[1]"/>
917        </xsl:attribute>
918      </xsl:if>
919      <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute>
920      <xsl:if test="$ulink.target != ''">
921        <xsl:attribute name="target">
922          <xsl:value-of select="$ulink.target"/>
923        </xsl:attribute>
924      </xsl:if>
925      <xsl:choose>
926        <xsl:when test="count(child::node())=0">
927          <xsl:value-of select="$url"/>
928        </xsl:when>
929        <xsl:otherwise>
930          <xsl:apply-templates/>
931        </xsl:otherwise>
932      </xsl:choose>
933    </a>
934  </xsl:variable>
935
936  <xsl:choose>
937    <xsl:when test="function-available('suwl:unwrapLinks')">
938      <xsl:copy-of select="suwl:unwrapLinks($link)"/>
939    </xsl:when>
940    <xsl:otherwise>
941      <xsl:copy-of select="$link"/>
942    </xsl:otherwise>
943  </xsl:choose>
944</xsl:template>
945
946<xsl:template match="olink" name="olink">
947  <!-- olink content may be passed in from xlink olink -->
948  <xsl:param name="content" select="NOTANELEMENT"/>
949
950  <xsl:call-template name="anchor"/>
951
952  <xsl:variable name="localinfo" select="@localinfo"/>
953
954  <xsl:choose>
955    <!-- olinks resolved by stylesheet and target database -->
956    <xsl:when test="@targetdoc or @targetptr or                     (@xlink:role=$xolink.role and                      contains(@xlink:href, '#') )">
957
958      <xsl:variable name="targetdoc.att">
959        <xsl:choose>
960          <xsl:when test="@targetdoc != ''">
961            <xsl:value-of select="@targetdoc"/>
962          </xsl:when>
963          <xsl:when test="@xlink:role=$xolink.role and                        contains(@xlink:href, '#')">
964            <xsl:value-of select="substring-before(@xlink:href, '#')"/>
965          </xsl:when>
966        </xsl:choose>
967      </xsl:variable>
968
969      <xsl:variable name="targetptr.att">
970        <xsl:choose>
971          <xsl:when test="@targetptr != ''">
972            <xsl:value-of select="@targetptr"/>
973          </xsl:when>
974          <xsl:when test="@xlink:role=$xolink.role and                        contains(@xlink:href, '#')">
975            <xsl:value-of select="substring-after(@xlink:href, '#')"/>
976          </xsl:when>
977        </xsl:choose>
978      </xsl:variable>
979
980      <xsl:variable name="olink.lang">
981        <xsl:call-template name="l10n.language">
982          <xsl:with-param name="xref-context" select="true()"/>
983        </xsl:call-template>
984      </xsl:variable>
985   
986      <xsl:variable name="target.database.filename">
987        <xsl:call-template name="select.target.database">
988          <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
989          <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
990          <xsl:with-param name="olink.lang" select="$olink.lang"/>
991        </xsl:call-template>
992      </xsl:variable>
993   
994      <xsl:variable name="target.database" select="document($target.database.filename,/)"/>
995   
996      <xsl:if test="$olink.debug != 0">
997        <xsl:message>
998          <xsl:text>Olink debug: root element of target.database '</xsl:text>
999          <xsl:value-of select="$target.database.filename"/>
1000          <xsl:text>' is '</xsl:text>
1001          <xsl:value-of select="local-name($target.database/*[1])"/>
1002          <xsl:text>'.</xsl:text>
1003        </xsl:message>
1004      </xsl:if>
1005   
1006      <xsl:variable name="olink.key">
1007        <xsl:call-template name="select.olink.key">
1008          <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
1009          <xsl:with-param name="targetptr.att" select="$targetptr.att"/>
1010          <xsl:with-param name="olink.lang" select="$olink.lang"/>
1011          <xsl:with-param name="target.database" select="$target.database"/>
1012        </xsl:call-template>
1013      </xsl:variable>
1014   
1015      <xsl:if test="string-length($olink.key) = 0">
1016        <xsl:message>
1017          <xsl:text>Error: unresolved olink: </xsl:text>
1018          <xsl:text>targetdoc/targetptr = '</xsl:text>
1019          <xsl:value-of select="$targetdoc.att"/>
1020          <xsl:text>/</xsl:text>
1021          <xsl:value-of select="$targetptr.att"/>
1022          <xsl:text>'.</xsl:text>
1023        </xsl:message>
1024      </xsl:if>
1025
1026      <xsl:variable name="href">
1027        <xsl:call-template name="make.olink.href">
1028          <xsl:with-param name="olink.key" select="$olink.key"/>
1029          <xsl:with-param name="target.database" select="$target.database"/>
1030        </xsl:call-template>
1031      </xsl:variable>
1032
1033      <xsl:variable name="hottext">
1034        <xsl:choose>
1035          <xsl:when test="$content">
1036            <xsl:copy-of select="$content"/>
1037          </xsl:when>
1038          <xsl:otherwise>
1039            <xsl:call-template name="olink.hottext">
1040              <xsl:with-param name="olink.key" select="$olink.key"/>
1041              <xsl:with-param name="olink.lang" select="$olink.lang"/>
1042              <xsl:with-param name="target.database" select="$target.database"/>
1043            </xsl:call-template>
1044          </xsl:otherwise>
1045        </xsl:choose>
1046      </xsl:variable>
1047
1048      <xsl:variable name="olink.docname.citation">
1049        <xsl:call-template name="olink.document.citation">
1050          <xsl:with-param name="olink.key" select="$olink.key"/>
1051          <xsl:with-param name="target.database" select="$target.database"/>
1052          <xsl:with-param name="olink.lang" select="$olink.lang"/>
1053        </xsl:call-template>
1054      </xsl:variable>
1055
1056      <xsl:variable name="olink.page.citation">
1057        <xsl:call-template name="olink.page.citation">
1058          <xsl:with-param name="olink.key" select="$olink.key"/>
1059          <xsl:with-param name="target.database" select="$target.database"/>
1060          <xsl:with-param name="olink.lang" select="$olink.lang"/>
1061        </xsl:call-template>
1062      </xsl:variable>
1063
1064      <xsl:choose>
1065        <xsl:when test="$href != ''">
1066          <a href="{$href}">
1067            <xsl:apply-templates select="." mode="class.attribute"/>
1068            <xsl:copy-of select="$hottext"/>
1069          </a>
1070          <xsl:copy-of select="$olink.page.citation"/>
1071          <xsl:copy-of select="$olink.docname.citation"/>
1072        </xsl:when>
1073        <xsl:otherwise>
1074          <span class="olink"><xsl:copy-of select="$hottext"/></span>
1075          <xsl:copy-of select="$olink.page.citation"/>
1076          <xsl:copy-of select="$olink.docname.citation"/>
1077        </xsl:otherwise>
1078      </xsl:choose>
1079
1080    </xsl:when>
1081
1082    <!-- Or use old olink mechanism -->
1083    <xsl:otherwise>
1084      <xsl:variable name="href">
1085        <xsl:choose>
1086          <xsl:when test="@linkmode">
1087            <!-- use the linkmode to get the base URI, use localinfo as fragid -->
1088            <xsl:variable name="modespec" select="key('id',@linkmode)"/>
1089            <xsl:if test="count($modespec) != 1                           or local-name($modespec) != 'modespec'">
1090              <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
1091            </xsl:if>
1092            <xsl:value-of select="$modespec"/>
1093            <xsl:if test="@localinfo">
1094              <xsl:text>#</xsl:text>
1095              <xsl:value-of select="@localinfo"/>
1096            </xsl:if>
1097          </xsl:when>
1098          <xsl:when test="@type = 'href'">
1099            <xsl:call-template name="olink.outline">
1100              <xsl:with-param name="outline.base.uri" select="unparsed-entity-uri(@targetdocent)"/>
1101              <xsl:with-param name="localinfo" select="@localinfo"/>
1102              <xsl:with-param name="return" select="'href'"/>
1103            </xsl:call-template>
1104          </xsl:when>
1105          <xsl:otherwise>
1106            <xsl:value-of select="$olink.resolver"/>
1107            <xsl:text>?</xsl:text>
1108            <xsl:value-of select="$olink.sysid"/>
1109            <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
1110            <!-- XSL gives no access to the public identifier (grumble...) -->
1111            <xsl:if test="@localinfo">
1112              <xsl:text>&amp;</xsl:text>
1113              <xsl:value-of select="$olink.fragid"/>
1114              <xsl:value-of select="@localinfo"/>
1115            </xsl:if>
1116          </xsl:otherwise>
1117        </xsl:choose>
1118      </xsl:variable>
1119   
1120      <xsl:choose>
1121        <xsl:when test="$href != ''">
1122          <a href="{$href}">
1123            <xsl:apply-templates select="." mode="class.attribute"/>
1124            <xsl:call-template name="olink.hottext"/>
1125          </a>
1126        </xsl:when>
1127        <xsl:otherwise>
1128          <xsl:call-template name="olink.hottext"/>
1129        </xsl:otherwise>
1130      </xsl:choose>
1131    </xsl:otherwise>
1132  </xsl:choose>
1133</xsl:template>
1134
1135<xsl:template match="*" mode="pagenumber.markup">
1136  <!-- no-op in HTML -->
1137</xsl:template>
1138
1139
1140<xsl:template name="olink.outline">
1141  <xsl:param name="outline.base.uri"/>
1142  <xsl:param name="localinfo"/>
1143  <xsl:param name="return" select="href"/>
1144
1145  <xsl:variable name="outline-file" select="concat($outline.base.uri,                                $olink.outline.ext)"/>
1146
1147  <xsl:variable name="outline" select="document($outline-file,.)/div"/>
1148
1149  <xsl:variable name="node-href">
1150    <xsl:choose>
1151      <xsl:when test="$localinfo != ''">
1152        <xsl:variable name="node" select="$outline//                                    *[@id=$localinfo or @xml:id=$localinfo]"/>
1153        <xsl:value-of select="$node/@href"/>
1154      </xsl:when>
1155      <xsl:otherwise>
1156        <xsl:value-of select="$outline/@href"/>
1157      </xsl:otherwise>
1158    </xsl:choose>
1159  </xsl:variable>
1160
1161  <xsl:variable name="node-xref">
1162    <xsl:choose>
1163      <xsl:when test="$localinfo != ''">
1164        <xsl:variable name="node" select="$outline//                                *[@id=$localinfo or @xml:id=$localinfo]"/>
1165        <xsl:copy-of select="$node/xref"/>
1166      </xsl:when>
1167      <xsl:otherwise>
1168        <xsl:value-of select="$outline/xref"/>
1169      </xsl:otherwise>
1170    </xsl:choose>
1171  </xsl:variable>
1172
1173  <xsl:choose>
1174    <xsl:when test="$return = 'href'">
1175      <xsl:value-of select="$node-href"/>
1176    </xsl:when>
1177    <xsl:when test="$return = 'xref'">
1178      <xsl:value-of select="$node-xref"/>
1179    </xsl:when>
1180    <xsl:otherwise>
1181      <xsl:copy-of select="$node-xref"/>
1182    </xsl:otherwise>
1183  </xsl:choose>
1184</xsl:template>
1185
1186<!-- ==================================================================== -->
1187
1188<xsl:template name="xref.xreflabel">
1189  <!-- called to process an xreflabel...you might use this to make  -->
1190  <!-- xreflabels come out in the right font for different targets, -->
1191  <!-- for example. -->
1192  <xsl:param name="target" select="."/>
1193  <xsl:value-of select="$target/@xreflabel"/>
1194</xsl:template>
1195
1196<!-- ==================================================================== -->
1197
1198<xsl:template match="title" mode="xref">
1199  <xsl:apply-templates/>
1200</xsl:template>
1201
1202<xsl:template match="command" mode="xref">
1203  <xsl:call-template name="inline.boldseq"/>
1204</xsl:template>
1205
1206<xsl:template match="function" mode="xref">
1207  <xsl:call-template name="inline.monoseq"/>
1208</xsl:template>
1209
1210<!-- ==================================================================== -->
1211
1212<xsl:template match="*" mode="insert.title.markup">
1213  <xsl:param name="purpose"/>
1214  <xsl:param name="xrefstyle"/>
1215  <xsl:param name="title"/>
1216
1217  <xsl:choose>
1218    <!-- FIXME: what about the case where titleabbrev is inside the info? -->
1219    <xsl:when test="$purpose = 'xref' and titleabbrev">
1220      <xsl:apply-templates select="." mode="titleabbrev.markup"/>
1221    </xsl:when>
1222    <xsl:otherwise>
1223      <xsl:copy-of select="$title"/>
1224    </xsl:otherwise>
1225  </xsl:choose>
1226</xsl:template>
1227
1228<xsl:template match="chapter|appendix" mode="insert.title.markup">
1229  <xsl:param name="purpose"/>
1230  <xsl:param name="xrefstyle"/>
1231  <xsl:param name="title"/>
1232
1233  <xsl:choose>
1234    <xsl:when test="$purpose = 'xref'">
1235      <i>
1236        <xsl:copy-of select="$title"/>
1237      </i>
1238    </xsl:when>
1239    <xsl:otherwise>
1240      <xsl:copy-of select="$title"/>
1241    </xsl:otherwise>
1242  </xsl:choose>
1243</xsl:template>
1244
1245<xsl:template match="*" mode="insert.subtitle.markup">
1246  <xsl:param name="purpose"/>
1247  <xsl:param name="xrefstyle"/>
1248  <xsl:param name="subtitle"/>
1249
1250  <xsl:copy-of select="$subtitle"/>
1251</xsl:template>
1252
1253<xsl:template match="*" mode="insert.label.markup">
1254  <xsl:param name="purpose"/>
1255  <xsl:param name="xrefstyle"/>
1256  <xsl:param name="label"/>
1257
1258  <xsl:copy-of select="$label"/>
1259</xsl:template>
1260
1261<xsl:template match="*" mode="insert.pagenumber.markup">
1262  <xsl:param name="purpose"/>
1263  <xsl:param name="xrefstyle"/>
1264  <xsl:param name="pagenumber"/>
1265
1266  <xsl:copy-of select="$pagenumber"/>
1267</xsl:template>
1268
1269<xsl:template match="*" mode="insert.direction.markup">
1270  <xsl:param name="purpose"/>
1271  <xsl:param name="xrefstyle"/>
1272  <xsl:param name="direction"/>
1273
1274  <xsl:copy-of select="$direction"/>
1275</xsl:template>
1276
1277<xsl:template match="*" mode="insert.olink.docname.markup">
1278  <xsl:param name="purpose"/>
1279  <xsl:param name="xrefstyle"/>
1280  <xsl:param name="docname"/>
1281
1282  <span class="olinkdocname">
1283    <xsl:copy-of select="$docname"/>
1284  </span>
1285
1286</xsl:template>
1287
1288</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.