Douglas Gregor wrote:

> > What I get at
> >
> >     http://zigzag.cs.msu.su:7813/program_options2/
> >
> > is rather fine.
>
> Looks fine to me as well.

Cool.

> > Would anybody object if I commit Reece's changes?
>
> No, but I'd like to check out the diffs at some point so I know what's
> going on.

I attach the diff I have here. It's CVS HEAD vs. previous version from Reece 
-- one that includes new nagivation on top and bottom, but does not fix empty 
TOC. Okay to commit?

- Volodya
? A.diff
? html.xsl.diff
? log
? navigation.diff
Index: docbook-layout.xsl
===================================================================
RCS file: docbook-layout.xsl
diff -N docbook-layout.xsl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ docbook-layout.xsl	16 Mar 2004 06:26:51 -0000
@@ -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="[EMAIL PROTECTED]">
+              <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
+           </td></tr>
+        </tbody></xsl:if>
+     </table>
+  </xsl:template>
+</xsl:stylesheet>
Index: html.xsl
===================================================================
RCS file: /cvsroot/boost/boost/tools/boostbook/xsl/html.xsl,v
retrieving revision 1.13
diff -u -r1.13 html.xsl
--- html.xsl	9 Feb 2004 15:36:13 -0000	1.13
+++ html.xsl	16 Mar 2004 06:26:51 -0000
@@ -7,6 +7,9 @@
   <xsl:import
     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="navig.graphics" select="1"/>
   <xsl:param name="navig.graphics.extension" select="'.png'"/>
@@ -20,147 +23,6 @@
   <xsl:param name="generate.section.toc.level" select="3"/>
   <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:param name="text"/>
 
@@ -208,7 +70,7 @@
   </xsl:template>
 
   <xsl:template match="copyright" mode="boost.footer">
-    <xsl:if test="position() &gt; 1">
+    <xsl:if test="position() > 1">
       <br/>
     </xsl:if>
     <xsl:call-template name="gentext">
@@ -236,14 +98,14 @@
           <xsl:variable name="revision-nodes" 
             select="ancestor-or-self::*
                     [not (attribute::rev:last-revision='')]"/>
-          <xsl:if test="count($revision-nodes) &gt; 0">
+          <xsl:if test="count($revision-nodes) > 0">
             <xsl:variable name="revision-node"
               select="$revision-nodes[last()]"/>
             <xsl:variable name="revision-text">
               <xsl:value-of 
                 select="normalize-space($revision-node/attribute::rev:last-revision)"/>
             </xsl:variable>
-            <xsl:if test="string-length($revision-text) &gt; 0">
+            <xsl:if test="string-length($revision-text) > 0">
               <small>
                 <p>
                   <xsl:text>Last revised: </xsl:text>
@@ -277,7 +139,7 @@
   </xsl:template>
 
   <xsl:template match="varlistentry" mode="boost.variablelist">
-    <xsl:if test="position() &gt; 1">
+    <xsl:if test="position() > 1">
       <br/>
     </xsl:if>
     <b><xsl:apply-templates select="term"/></b>:
@@ -287,7 +149,7 @@
                       local-name(listitem/*[1])='para'">
         <xsl:apply-templates 
           select="listitem/*[1]/*|listitem/*[1]/text()"/>
-        <xsl:apply-templates select="(listitem/*|listitem/text())[position() &gt; 1]"/>
+        <xsl:apply-templates select="(listitem/*|listitem/text())[position() > 1]"/>
       </xsl:when>
       <xsl:otherwise>
         <xsl:apply-templates select="listitem/*|listitem/text()"/>        
Index: navbar.xsl
===================================================================
RCS file: navbar.xsl
diff -N navbar.xsl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ navbar.xsl	16 Mar 2004 06:26:51 -0000
@@ -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>
\ No newline at end of file

Reply via email to