Patch from Reece Dunn, to add new styles of header and nagivation

arrows.


[SVN r22508]
This commit is contained in:
Vladimir Prus 2004-03-17 08:43:19 +00:00
parent edd7e3dbba
commit e7c7710494
3 changed files with 486 additions and 141 deletions

169
xsl/docbook-layout.xsl Normal file
View File

@ -0,0 +1,169 @@
<?xml version = "1.0" encoding = "utf-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
>
<!-- needed for calsTable template -->
<xsl:import
href="http://docbook.sourceforge.net/release/xsl/current/html/formal.xsl"/>
<!--
Override the behaviour of some DocBook elements for better
integration with the new look & feel.
-->
<xsl:template match = "programlisting[ancestor::informaltable]">
<pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
</xsl:template>
<xsl:template match = "refsynopsisdiv">
<h2 class = "{name(.)}-title">Synopsis</h2>
<div class = "{name(.)}"><xsl:apply-templates/></div>
</xsl:template>
<!-- table: remove border = '1' -->
<xsl:template match = "table|informaltable">
<xsl:choose>
<xsl:when test = "self::table and tgroup|mediaobject|graphic">
<xsl:call-template name = "calsTable"/>
</xsl:when><xsl:when test = "self::informaltable and tgroup|mediaobject|graphic">
<xsl:call-template name = "informal.object">
<xsl:with-param name = "class"><xsl:choose>
<xsl:when test = "@tabstyle">
<xsl:value-of select = "@tabstyle"/>
</xsl:when><xsl:otherwise>
<xsl:value-of select = "local-name(.)"/>
</xsl:otherwise>
</xsl:choose></xsl:with-param>
</xsl:call-template>
</xsl:when><xsl:otherwise>
<table class = "table"><xsl:copy-of select = "@*[not(local-name(.)='border')]"/>
<xsl:call-template name = "htmlTable"/>
</table>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match = "tgroup" name = "tgroup">
<xsl:variable name="summary"><xsl:call-template name="dbhtml-attribute">
<xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
<xsl:with-param name="attribute" select="'table-summary'"/>
</xsl:call-template></xsl:variable>
<xsl:variable name="cellspacing"><xsl:call-template name="dbhtml-attribute">
<xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
<xsl:with-param name="attribute" select="'cellspacing'"/>
</xsl:call-template></xsl:variable>
<xsl:variable name="cellpadding"><xsl:call-template name="dbhtml-attribute">
<xsl:with-param name="pis" select="processing-instruction('dbhtml')[1]"/>
<xsl:with-param name="attribute" select="'cellpadding'"/>
</xsl:call-template></xsl:variable>
<table class = "table">
<xsl:choose>
<xsl:when test="../textobject/phrase">
<xsl:attribute name="summary">
<xsl:value-of select="../textobject/phrase"/>
</xsl:attribute>
</xsl:when><xsl:when test="$summary != ''">
<xsl:attribute name="summary">
<xsl:value-of select="$summary"/>
</xsl:attribute>
</xsl:when><xsl:when test="../title">
<xsl:attribute name="summary">
<xsl:value-of select="string(../title)"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise/>
</xsl:choose><xsl:if test="$cellspacing != '' or $html.cellspacing != ''">
<xsl:attribute name="cellspacing"><xsl:choose>
<xsl:when test="$cellspacing != ''"><xsl:value-of select="$cellspacing"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$html.cellspacing"/></xsl:otherwise>
</xsl:choose></xsl:attribute>
</xsl:if><xsl:if test="$cellpadding != '' or $html.cellpadding != ''">
<xsl:attribute name="cellpadding"><xsl:choose>
<xsl:when test="$cellpadding != ''"><xsl:value-of select="$cellpadding"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$html.cellpadding"/></xsl:otherwise>
</xsl:choose></xsl:attribute>
</xsl:if><xsl:if test="../@pgwide=1">
<xsl:attribute name="width">100%</xsl:attribute>
</xsl:if>
<xsl:variable name="colgroup">
<colgroup><xsl:call-template name="generate.colgroup">
<xsl:with-param name="cols" select="@cols"/>
</xsl:call-template></colgroup>
</xsl:variable>
<xsl:variable name="explicit.table.width"><xsl:call-template name="dbhtml-attribute">
<xsl:with-param name="pis" select="../processing-instruction('dbhtml')[1]"/>
<xsl:with-param name="attribute" select="'table-width'"/>
</xsl:call-template></xsl:variable>
<xsl:variable name="table.width"><xsl:choose>
<xsl:when test="$explicit.table.width != ''">
<xsl:value-of select="$explicit.table.width"/>
</xsl:when><xsl:when test="$default.table.width = ''">
<xsl:text>100%</xsl:text>
</xsl:when><xsl:otherwise>
<xsl:value-of select="$default.table.width"/>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:if test="$default.table.width != '' or $explicit.table.width != ''">
<xsl:attribute name="width"><xsl:choose>
<xsl:when test="contains($table.width, '%')">
<xsl:value-of select="$table.width"/>
</xsl:when><xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
<xsl:choose>
<xsl:when test="function-available('stbl:convertLength')">
<xsl:value-of select="stbl:convertLength($table.width)"/>
</xsl:when><xsl:when test="function-available('xtbl:convertLength')">
<xsl:value-of select="xtbl:convertLength($table.width)"/>
</xsl:when><xsl:otherwise>
<xsl:message terminate="yes">
<xsl:text>No convertLength function available.</xsl:text>
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:when><xsl:otherwise>
<xsl:value-of select="$table.width"/>
</xsl:otherwise>
</xsl:choose></xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
<xsl:choose>
<xsl:when test="function-available('stbl:adjustColumnWidths')">
<xsl:copy-of select="stbl:adjustColumnWidths($colgroup)"/>
</xsl:when><xsl:when test="function-available('xtbl:adjustColumnWidths')">
<xsl:copy-of select="xtbl:adjustColumnWidths($colgroup)"/>
</xsl:when><xsl:when test="function-available('ptbl:adjustColumnWidths')">
<xsl:copy-of select="ptbl:adjustColumnWidths($colgroup)"/>
</xsl:when><xsl:otherwise>
<xsl:message terminate="yes">
<xsl:text>No adjustColumnWidths function available.</xsl:text>
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:when><xsl:otherwise>
<xsl:copy-of select="$colgroup"/>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="thead"/>
<xsl:apply-templates select="tfoot"/>
<xsl:apply-templates select="tbody"/>
<xsl:if test=".//footnote"><tbody class="footnotes">
<tr><td colspan="{@cols}">
<xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
</td></tr>
</tbody></xsl:if>
</table>
</xsl:template>
</xsl:stylesheet>

View File

@ -7,6 +7,9 @@
<xsl:import <xsl:import
href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/> href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
<xsl:import href="docbook-layout.xsl"/>
<xsl:import href="navbar.xsl"/>
<xsl:param name="html.stylesheet" select="'boostbook.css'"/> <xsl:param name="html.stylesheet" select="'boostbook.css'"/>
<xsl:param name="navig.graphics" select="1"/> <xsl:param name="navig.graphics" select="1"/>
<xsl:param name="navig.graphics.extension" select="'.png'"/> <xsl:param name="navig.graphics.extension" select="'.png'"/>
@ -20,147 +23,6 @@
<xsl:param name="generate.section.toc.level" select="3"/> <xsl:param name="generate.section.toc.level" select="3"/>
<xsl:param name="doc.standalone">false</xsl:param> <xsl:param name="doc.standalone">false</xsl:param>
<xsl:template name="header.navigation">
<xsl:param name = "prev" select = "/foo"/>
<xsl:param name = "next" select = "/foo"/>
<xsl:param name = "nav.context"/>
<xsl:choose>
<xsl:when test = "$doc.standalone = 'true'">
<img src="../../c++boost.gif"
alt="c++boost.gif (8819 bytes)" width="277" height="86"
/>
</xsl:when><xsl:otherwise>
<table cellpadding = "2" width = "100%" class = "boost-head"><tr>
<td bgcolor = "#FFFFFF" width = "50%" class = "boost-headelem"><img src="../../c++boost.gif"
alt="c++boost.gif (8819 bytes)" width="277" height="86"
/></td>
<xsl:if test = "not($doc.standalone = 'true')">
<td align = "center" class = "boost-headtd">
<a href="../../index.htm" class = "boost-headelem">Home</a>
</td><td align = "center" class = "boost-headtd">
<a href="libraries.html" class = "boost-headelem">Libraries</a>
</td><td align = "center" class = "boost-headtd">
<a href="../../people/people.htm" class = "boost-headelem">People</a>
</td><td align = "center" class = "boost-headtd">
<a href="../../more/faq.htm" class = "boost-headelem">FAQ</a>
</td><td align = "center" class = "boost-headtd">
<a href="../../more/index.htm" class = "boost-headelem">More</a>
</td>
</xsl:if>
</tr></table>
</xsl:otherwise>
</xsl:choose>
<!-- top-level navigation: based on
docbook/html/chunk-common.xsl[footer.navigation] -->
<xsl:variable name="home" select="/*[1]"/>
<xsl:variable name="up" select="parent::*"/>
<xsl:variable name="row1" select="count($prev) &gt; 0
or count($up) &gt; 0
or count($next) &gt; 0"/>
<xsl:variable name="row2" select="($prev and $navig.showtitles != 0)
or (generate-id($home) != generate-id(.)
or $nav.context = 'toc')
or ($chunk.tocs.and.lots != 0
and $nav.context != 'toc')
or ($next and $navig.showtitles != 0)"/>
<xsl:if test="
$suppress.navigation = '0' and $suppress.header.navigation = '0'
"><table width = "100%" class = "navheader">
<tr>
<td align = "left" width = "40%">
<!-- prev:name -->
<xsl:if test="$navig.showtitles != 0">
<xsl:apply-templates select="$prev" mode="object.title.markup"/>
</xsl:if>
<xsl:text>&#160;</xsl:text>
</td><td align = "center" width = "20%">
<!-- home -->
<xsl:choose>
<xsl:when test="$home != . or $nav.context = 'toc'">
<a accesskey="h">
<xsl:attribute name="href"><xsl:call-template name="href.target">
<xsl:with-param name="object" select="$home"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name="navig.content">
<xsl:with-param name="direction" select="'home'"/>
</xsl:call-template>
</a>
<xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
<xsl:text>&#160;|&#160;</xsl:text>
</xsl:if>
</xsl:when>
<xsl:otherwise>&#160;</xsl:otherwise>
</xsl:choose>
<xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
<a accesskey="t">
<xsl:attribute name="href">
<xsl:apply-templates select="/*[1]"
mode="recursive-chunk-filename"/>
<xsl:text>-toc</xsl:text>
<xsl:value-of select="$html.ext"/>
</xsl:attribute>
<xsl:call-template name="gentext">
<xsl:with-param name="key" select="'nav-toc'"/>
</xsl:call-template>
</a>
</xsl:if>
</td><td align = "right" width = "40%">
<!-- next:name -->
<xsl:text>&#160;</xsl:text>
<xsl:if test="$navig.showtitles != 0">
<xsl:apply-templates select="$next" mode="object.title.markup"/>
</xsl:if>
</td>
</tr><tr>
<td align = "left" width = "40%">
<!-- prev -->
<xsl:if test="count($prev)>0"><a accesskey="p">
<xsl:attribute name="href"><xsl:call-template name="href.target">
<xsl:with-param name="object" select="$prev"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name="navig.content">
<xsl:with-param name="direction" select="'prev'"/>
</xsl:call-template>
</a></xsl:if>
<xsl:text>&#160;</xsl:text>
</td><td align = "center" width = "20%">
<!-- up -->
<xsl:choose>
<xsl:when test="count($up)>0">
<a accesskey="u">
<xsl:attribute name="href"><xsl:call-template name="href.target">
<xsl:with-param name="object" select="$up"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name="navig.content">
<xsl:with-param name="direction" select="'up'"/>
</xsl:call-template>
</a>
</xsl:when>
<xsl:otherwise>&#160;</xsl:otherwise>
</xsl:choose>
</td><td align = "right" width = "40%">
<!-- next -->
<xsl:text>&#160;</xsl:text>
<xsl:if test="count($next)>0"><a accesskey="n">
<xsl:attribute name="href"><xsl:call-template name="href.target">
<xsl:with-param name="object" select="$next"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name="navig.content">
<xsl:with-param name="direction" select="'next'"/>
</xsl:call-template>
</a></xsl:if>
</td>
</tr>
</table></xsl:if>
<hr/>
</xsl:template>
<xsl:template name="format.cvs.revision"> <xsl:template name="format.cvs.revision">
<xsl:param name="text"/> <xsl:param name="text"/>

314
xsl/navbar.xsl Normal file
View File

@ -0,0 +1,314 @@
<?xml version = "1.0" encoding = "utf-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
>
<!--
how to render the Home | Libraries | ... | More contents
none - do not display ("standalone" mode)
*horizontal - display in old-Boost style format
vertical - like the new Getting Started layout
-->
<xsl:param name = "nav.layout" select = "'horizontal'"/>
<!--
header border layout
Boost - place the old-Boost border around the header
*none - do not place a border around the header
-->
<xsl:param name = "nav.border" select = "'none'" />
<!--
nav.flow:
none - do not display navigation at the header
DocBook - display the navigation after the header
*Spirit - display "mini" navigation on the right
-->
<xsl:param name = "nav.flow" select = "'Spirit'"/>
<!-- location of the various Boost elements -->
<xsl:param name = "boost.image.src" select = "'../../c++boost.gif'"/>
<xsl:param name = "boost.image.alt" select = "'c++boost.gif (8819 bytes)'"/>
<xsl:param name = "boost.image.w" select = "277"/>
<xsl:param name = "boost.image.h" select = "86"/>
<xsl:param name = "boost.root" select = "'../..'"/>
<xsl:param name = "boost.libraries" select = "'libraries.html'"/>
<!-- header -->
<xsl:template name = "header.navigation">
<xsl:param name = "prev" select = "/foo"/>
<xsl:param name = "next" select = "/foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "home" select = "/*[1]"/>
<xsl:variable name = "up" select = "parent::*"/>
<table cellpadding = "2" width = "100%">
<xsl:if test = "$nav.border = 'Boost'">
<xsl:attribute name = "class">boost-head</xsl:attribute>
</xsl:if>
<td valign = "top">
<xsl:if test = "$nav.border = 'Boost'">
<xsl:attribute name = "style">background-color: white; width: 50%;</xsl:attribute>
</xsl:if>
<img src = "{$boost.image.src}" alt = "{$boost.image.alt}"
width = "{$boost.image.w}" height = "{$boost.image.h}"
/>
</td><xsl:choose>
<xsl:when test = "$nav.layout = 'horizontal'">
<xsl:call-template name = "header.navdata-horiz"/>
</xsl:when><xsl:when test = "$nav.layout = 'vertical'">
<xsl:call-template name = "header.navdata-vert"/>
</xsl:when>
</xsl:choose>
</table>
<hr/>
<xsl:choose>
<xsl:when test = "$nav.flow = 'DocBook'">
<table width = "100%" class = "navheader">
<xsl:call-template name = "navbar.docbook-homeinfo">
<xsl:with-param name = "prev" select = "$prev"/>
<xsl:with-param name = "next" select = "$next"/>
<xsl:with-param name = "nav.context" select = "$nav.context"/>
</xsl:call-template>
<xsl:call-template name = "navbar.docbook-prevnext">
<xsl:with-param name = "prev" select = "$prev"/>
<xsl:with-param name = "next" select = "$next"/>
<xsl:with-param name = "nav.context" select = "$nav.context"/>
</xsl:call-template>
</table>
</xsl:when><xsl:when test = "$nav.flow = 'Spirit'">
<xsl:call-template name = "navbar.spirit">
<xsl:with-param name = "prev" select = "$prev"/>
<xsl:with-param name = "next" select = "$next"/>
<xsl:with-param name = "nav.context" select = "$nav.context"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name = "header.navdata-horiz">
<xsl:choose>
<xsl:when test = "$nav.border = 'Boost'">
<td align = "center" class = "boost-headtd">
<a href = "{$boost.root}/index.htm" class = "boost-headelem">Home</a>
</td><td align = "center" class = "boost-headtd">
<a href = "{$boost.libraries}" class = "boost-headelem">Libraries</a>
</td><td align = "center" class = "boost-headtd">
<a href = "{$boost.root}/people/people.htm" class = "boost-headelem">People</a>
</td><td align = "center" class = "boost-headtd">
<a href = "{$boost.root}/more/faq.htm" class = "boost-headelem">FAQ</a>
</td><td align = "center" class = "boost-headtd">
<a href = "{$boost.root}/more/index.htm" class = "boost-headelem">More</a>
</td>
</xsl:when><xsl:otherwise>
<td align = "center">
<a href = "{$boost.root}/index.htm">Home</a>
</td><td align = "center">
<a href = "{$boost.libraries}">Libraries</a>
</td><td align = "center">
<a href = "{$boost.root}/people/people.htm">People</a>
</td><td align = "center">
<a href = "{$boost.root}/more/faq.htm">FAQ</a>
</td><td align = "center">
<a href = "{$boost.root}/more/index.htm">More</a>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name = "header.navdata-vert">
<td><div>
<xsl:if test = "$nav.border != 'Boost'">
<xsl:attribute name = "class">boost-toc</xsl:attribute>
</xsl:if>
<div><a href = "{$boost.root}/index.htm">Home</a></div>
<div><a href = "{$boost.libraries}">Libraries</a></div>
<div><a href = "{$boost.root}/people/people.htm">People</a></div>
<div><a href = "{$boost.root}/more/faq.htm">FAQ</a></div>
<div><a href = "{$boost.root}/more/index.htm">More</a></div>
</div></td>
</xsl:template>
<!-- footer -->
<xsl:template name = "footer.navigation">
<xsl:param name = "prev" select = "/foo"/>
<xsl:param name = "next" select = "/foo"/>
<xsl:param name = "nav.context"/>
<hr/>
<xsl:choose>
<xsl:when test = "$nav.flow = 'DocBook'">
<table width = "100%" class = "navheader">
<xsl:call-template name = "navbar.docbook-prevnext">
<xsl:with-param name = "prev" select = "$prev"/>
<xsl:with-param name = "next" select = "$next"/>
<xsl:with-param name = "nav.context" select = "$nav.context"/>
</xsl:call-template>
<xsl:call-template name = "navbar.docbook-homeinfo">
<xsl:with-param name = "prev" select = "$prev"/>
<xsl:with-param name = "next" select = "$next"/>
<xsl:with-param name = "nav.context" select = "$nav.context"/>
</xsl:call-template>
</table>
</xsl:when><xsl:when test = "$nav.flow = 'Spirit'">
<xsl:call-template name = "navbar.spirit">
<xsl:with-param name = "prev" select = "$prev"/>
<xsl:with-param name = "next" select = "$next"/>
<xsl:with-param name = "nav.context" select = "$nav.context"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<!-- navbar -->
<xsl:template name = "navbar.docbook-homeinfo">
<xsl:param name = "prev" select = "/foo"/>
<xsl:param name = "next" select = "/foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "home" select = "/*[1]"/>
<tr>
<td align = "left" width = "40%">
<xsl:if test = "$navig.showtitles != 0"> <!-- prev:name -->
<xsl:apply-templates select = "$prev" mode = "object.title.markup"/>
</xsl:if>
</td><td align = "center" width = "20%">
<!-- home -->
<xsl:if test = "$home != . or $nav.context = 'toc'">
<a accesskey = "h">
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$home"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'home'"/>
</xsl:call-template>
</a>
<xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
<xsl:text>|</xsl:text>
</xsl:if>
</xsl:if>
<xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"><a accesskey = "t">
<xsl:attribute name = "href">
<xsl:apply-templates select = "/*[1]" mode = "recursive-chunk-filename"/>
<xsl:text>-toc</xsl:text>
<xsl:value-of select = "$html.ext"/>
</xsl:attribute>
<xsl:call-template name = "gentext">
<xsl:with-param name = "key" select = "'nav-toc'"/>
</xsl:call-template>
</a></xsl:if>
</td><td align = "right" width = "40%">
<xsl:if test = "$navig.showtitles != 0"> <!-- next:name -->
<xsl:apply-templates select = "$next" mode = "object.title.markup"/>
</xsl:if>
</td>
</tr>
</xsl:template>
<xsl:template name = "navbar.docbook-prevnext">
<xsl:param name = "prev" select = "/foo"/>
<xsl:param name = "next" select = "/foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "up" select = "parent::*"/>
<tr>
<td align = "left" width = "40%">
<xsl:if test = "count($prev)>0"><a accesskey = "p"> <!-- prev -->
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$prev"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'prev'"/>
</xsl:call-template>
</a></xsl:if>
</td><td align = "center" width = "20%">
<xsl:if test = "count($up)>0"><a accesskey = "u"> <!-- up -->
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$up"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'up'"/>
</xsl:call-template>
</a></xsl:if>
</td><td align = "right" width = "40%">
<xsl:if test = "count($next)>0"><a accesskey = "n"> <!-- next -->
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$next"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'next'"/>
</xsl:call-template>
</a></xsl:if>
</td>
</tr>
</xsl:template>
<xsl:template name = "navbar.spirit">
<xsl:param name = "prev" select = "/foo"/>
<xsl:param name = "next" select = "/foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "home" select = "/*[1]"/>
<xsl:variable name = "up" select = "parent::*"/>
<div class = "spirit-nav">
<!-- prev -->
<xsl:if test = "count($prev)>0"><a accesskey = "p">
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$prev"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'prev'"/>
</xsl:call-template>
</a></xsl:if>
<!-- up -->
<xsl:if test = "count($up)>0"><a accesskey = "u">
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$up"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'up'"/>
</xsl:call-template>
</a></xsl:if>
<!-- home -->
<xsl:if test = "$home != . or $nav.context = 'toc'">
<a accesskey = "h">
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$home"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'home'"/>
</xsl:call-template>
</a>
<xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
<xsl:text>|</xsl:text>
</xsl:if>
</xsl:if>
<xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"><a accesskey = "t">
<xsl:attribute name = "href">
<xsl:apply-templates select = "/*[1]" mode = "recursive-chunk-filename"/>
<xsl:text>-toc</xsl:text>
<xsl:value-of select = "$html.ext"/>
</xsl:attribute>
<xsl:call-template name = "gentext">
<xsl:with-param name = "key" select = "'nav-toc'"/>
</xsl:call-template>
</a></xsl:if>
<!-- next -->
<xsl:if test = "count($next)>0"><a accesskey = "n">
<xsl:attribute name = "href"><xsl:call-template name = "href.target">
<xsl:with-param name = "object" select = "$next"/>
</xsl:call-template></xsl:attribute>
<xsl:call-template name = "navig.content">
<xsl:with-param name = "direction" select = "'next'"/>
</xsl:call-template>
</a></xsl:if>
</div>
</xsl:template>
</xsl:stylesheet>