blob: 7224f6e03eef1d5d3c3bd199f3fb25db55553e52 [file] [log] [blame]
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:ng="http://docbook.org/docbook-ng"
xmlns:db="http://docbook.org/ns/docbook"
version="1.0" xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="exsl ng db">
<!-- ********************************************************************
$Id$
********************************************************************
This file is part customization layer on top of the XSL DocBook
Stylesheet distribution that generates webhelp output.
******************************************************************** -->
<xsl:param name="chunker.output.method">
<xsl:choose>
<xsl:when test="contains(system-property('xsl:vendor'), 'SAXON 6')">saxon:xhtml</xsl:when>
<xsl:otherwise>html</xsl:otherwise>
</xsl:choose>
</xsl:param>
<xsl:param name="doc.title">
<xsl:call-template name="get.doc.title"/>
</xsl:param>
<!-- Set some reasonable defaults for webhelp output -->
<xsl:param name="chunker.output.indent">yes</xsl:param>
<xsl:param name="navig.showtitles">0</xsl:param>
<xsl:param name="manifest.in.base.dir" select="0"/>
<xsl:param name="base.dir" select="concat($webhelp.base.dir,'/content/')"/>
<xsl:param name="suppress.navigation">0</xsl:param>
<!-- Generate the end-of-the-book index -->
<xsl:param name="generate.index" select="1"/>
<xsl:param name="inherit.keywords" select="'0'"/>
<xsl:param name="para.propagates.style" select="1"/>
<xsl:param name="phrase.propagates.style" select="1"/>
<xsl:param name="chunk.first.sections" select="1"/>
<xsl:param name="chunk.section.depth" select="3"/>
<xsl:param name="use.id.as.filename" select="1"/>
<xsl:param name="branding">not set</xsl:param>
<xsl:param name="brandname"> </xsl:param>
<xsl:param name="section.autolabel" select="0"/>
<xsl:param name="chapter.autolabel" select="0"/>
<xsl:param name="appendix.autolabel" select="0"/>
<xsl:param name="qandadiv.autolabel" select="0"/>
<xsl:param name="reference.autolabel" select="0"/>
<xsl:param name="part.autolabel" select="0"/>
<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="generate.section.toc.level" select="5"/>
<xsl:param name="component.label.includes.part.label" select="1"/>
<xsl:param name="suppress.footer.navigation">0</xsl:param>
<xsl:param name="callout.graphics.path"><xsl:value-of select="$webhelp.common.dir"/>images/callouts/</xsl:param>
<xsl:param name="callouts.extension">1</xsl:param>
<xsl:param name="admon.graphics.path"><xsl:value-of select="$webhelp.common.dir"/>images/admon/</xsl:param>
<xsl:param name="admon.graphics" select="0"/>
<!--xsl:param name="generate.toc">book toc</xsl:param-->
<xsl:param name="generate.toc">
appendix toc,title
article/appendix nop
article toc,title
book title,figure,table,example,equation
chapter toc,title
part toc,title
preface toc,title
qandadiv toc
qandaset toc
reference toc,title
sect1 toc
sect2 toc
sect3 toc
sect4 toc
sect5 toc
section toc
set toc,title
</xsl:param>
<!-- Localizations of webhelp specific words. Your contributions for other languages are appreciated.
Currently, only around 10 translations needed. -->
<!-- Moved to files under 'gentext/locale/', search for WebHelp -->
<xsl:template name="system.head.content">
<xsl:param name="node" select="."/>
<xsl:text>
</xsl:text>
<!--
This avoids two problems in IE 8. We should someday figure out why this is happening and tweak the JavaScript so this <meta/> tag is not necessary:
1. When you perform a search and click the Toggle Highlight button, IE 8 adds a line break before the highlighted word.
2. If you click the show/hide toc button, the tab crashes.
These problems go away when you add this IE=7 mode meta tag.
-->
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<xsl:text>
</xsl:text>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<xsl:text>
</xsl:text>
</xsl:template>
<!-- HTML <head> section customizations -->
<xsl:template name="user.head.content">
<!-- <xsl:message>
webhelp.tree.cookie.id = <xsl:value-of select="$webhelp.tree.cookie.id"/> +++ <xsl:value-of select="count(//node())"/>
$webhelp.indexer.language = <xsl:value-of select="$webhelp.indexer.language"/> +++ <xsl:value-of select="count(//node())"/>
</xsl:message>-->
<script type="text/javascript">
//The id for tree cookie
var treeCookieId = "<xsl:value-of select="$webhelp.tree.cookie.id"/>";
var language = "<xsl:value-of select="$webhelp.indexer.language"/>";
var w = new Object();
//Localization
txt_filesfound = '<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'txt_filesfound'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>';
txt_enter_at_least_1_char = "<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'txt_enter_at_least_1_char'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>";
txt_browser_not_supported = "<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'txt_browser_not_supported'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>";
txt_please_wait = "<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'txt_please_wait'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>";
txt_results_for = "<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'txt_results_for'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>";
</script>
<!-- kasunbg: Order is important between the in-html-file css and the linked css files. Some css declarations in jquery-ui-1.8.2.custom.css are over-ridden.
If that's a concern, just remove the additional css contents inside these default jquery css files. I thought of keeping them intact for easier maintenance! -->
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"/>
<link rel="stylesheet" type="text/css" href="{$webhelp.common.dir}css/positioning.css"/>
<link rel="stylesheet" type="text/css" href="{$webhelp.common.dir}jquery/theme-redmond/jquery-ui-1.8.2.custom.css"/>
<link rel="stylesheet" type="text/css" href="{$webhelp.common.dir}jquery/treeview/jquery.treeview.css"/>
<style type="text/css">
noscript{
font-weight:bold;
}
input {
margin-bottom: 5px;
margin-top: 2px;
}
.folder {
display: block;
height: 22px;
padding-left: 20px;
background: transparent url(<xsl:value-of select="$webhelp.common.dir"/>jquery/treeview/images/folder.gif) 0 0px no-repeat;
}
span.contentsTab {
padding-left: 20px;
background: url(<xsl:value-of select="$webhelp.common.dir"/>images/toc-icon.png) no-repeat 0 center;
}
span.searchTab {
padding-left: 20px;
background: url(<xsl:value-of select="$webhelp.common.dir"/>images/search-icon.png) no-repeat 0 center;
}
/* Overide jquery treeview's defaults for ul. */
.treeview ul {
background-color: transparent;
margin-top: 4px;
}
#webhelp-currentid {
background-color: #D8D8D8 !important;
}
.treeview .hover { color: black; }
.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
.ui-widget-content {
border: 0px;
background: none;
color: none;
}
.ui-widget-header {
color: #e9e8e9;
border-left: 1px solid #e5e5e5;
border-right: 1px solid #e5e5e5;
border-bottom: 1px solid #bbc4c5;
border-top: 4px solid #e5e5e5;
border: medium none;
background: #F4F4F4; /* old browsers */
background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
font-weight: none;
}
.ui-widget-header a { color: none; }
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
border: none; background: none; font-weight: none; color: none; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
color: black; text-decoration: none;
background: #C6C6C6; /* old browsers */
background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
-webkit-border-radius:15px; -moz-border-radius:10px;
border: 1px solid #f1f1f1;
}
.ui-corner-all { border-radius: 0 0 0 0; }
.ui-tabs { padding: .2em;}
.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
</style>
<!--
browserDetect is an Oxygen addition to warn the user if they're using chrome from the file system.
This breaks the Oxygen search highlighting.
-->
<script type="text/javascript" src="{$webhelp.common.dir}browserDetect.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery-1.4.2.min.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery-ui-1.8.2.custom.min.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery.cookie.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="{$webhelp.common.dir}jquery/treeview/jquery.treeview.min.js">
<xsl:comment> </xsl:comment>
</script>
<xsl:if test="$webhelp.include.search.tab = 'true'">
<!--Scripts/css stylesheets for Search-->
<!-- TODO: Why THREE files? There's absolutely no need for having separate files.
These should have been identified at the optimization phase! -->
<script type="text/javascript" src="search/l10n.js">
<xsl:comment></xsl:comment>
</script>
<script type="text/javascript" src="search/htmlFileInfoList.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="search/nwSearchFnt.js">
<xsl:comment> </xsl:comment>
</script>
<!--
NOTE: Stemmer javascript files should be in format <language>_stemmer.js.
For example, for English(en), source should be: "search/stemmers/en_stemmer.js"
For country codes, see: http://www.uspto.gov/patft/help/helpctry.htm
-->
<!--<xsl:message><xsl:value-of select="concat('search/stemmers/',$webhelp.indexer.language,'_stemmer.js')"/></xsl:message>-->
<script type="text/javascript" src="{concat('search/stemmers/',$webhelp.indexer.language,'_stemmer.js')}">
<xsl:comment>//make this scalable to other languages as well.</xsl:comment>
</script>
<!--Index Files:
Index is broken in to three equal sized(number of index items) files. This is to help parallel downloading
of files to make it faster.
TODO: Generate webhelp index for largest docbook document that can be find, and analyze the file sizes.
IF the file size is still around ~50KB for a given file, we should consider merging these files together. again.
-->
<script type="text/javascript" src="search/index-1.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="search/index-2.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="search/index-3.js">
<xsl:comment> </xsl:comment>
</script>
<!--End of index files -->
</xsl:if>
<xsl:call-template name="user.webhelp.head.content"/>
</xsl:template>
<!-- This is for the USERS. Users who want to customize webhelp may over-ride this template to add content to <head>. -->
<xsl:template name="user.webhelp.head.content"/>
<xsl:template name="user.header.navigation">
<xsl:param name="prev"/>
<xsl:param name="next"/>
<xsl:param name="nav.context"/>
<xsl:call-template name="webhelpheader">
<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="webhelptoc"/-->
<!--testing toc in the content page>
<xsl:call-template name="webhelptoctoc"/>
<xsl:if test="$webhelp.include.search.tab != 'false'">
<xsl:call-template name="search"/>
</xsl:if-->
</xsl:template>
<xsl:template name="user.header.content">
<xsl:comment> <!-- KEEP this code. --> </xsl:comment>
</xsl:template>
<xsl:template name="user.footer.navigation">
<xsl:call-template name="webhelptoc">
<xsl:with-param name="currentid" select="generate-id(.)"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="/">
<xsl:message>language: <xsl:value-of select="$webhelp.indexer.language"/> </xsl:message>
<!-- * Get a title for current doc so that we let the user -->
<!-- * know what document we are processing at this point. -->
<xsl:choose>
<!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
toss the namespace and continue. Use the docbook5 namespaced
stylesheets for DocBook5 if you don't want to use this feature.-->
<!-- include extra test for Xalan quirk -->
<xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
<xsl:call-template name="log.message">
<xsl:with-param name="level">Note</xsl:with-param>
<xsl:with-param name="source" select="$doc.title"/>
<xsl:with-param name="context-desc">
<xsl:text>namesp. cut</xsl:text>
</xsl:with-param>
<xsl:with-param name="message">
<xsl:text>stripped namespace before processing</xsl:text>
</xsl:with-param>
</xsl:call-template>
<xsl:variable name="nons">
<xsl:apply-templates mode="stripNS"/>
</xsl:variable>
<!--
<xsl:message>Saving stripped document.</xsl:message>
<xsl:call-template name="write.chunk">
<xsl:with-param name="filename" select="'/tmp/stripped.xml'"/>
<xsl:with-param name="method" select="'xml'"/>
<xsl:with-param name="content">
<xsl:copy-of select="exsl:node-set($nons)"/>
</xsl:with-param>
</xsl:call-template>
-->
<xsl:call-template name="log.message">
<xsl:with-param name="level">Note</xsl:with-param>
<xsl:with-param name="source" select="$doc.title"/>
<xsl:with-param name="context-desc">
<xsl:text>namesp. cut</xsl:text>
</xsl:with-param>
<xsl:with-param name="message">
<xsl:text>processing stripped document</xsl:text>
</xsl:with-param>
</xsl:call-template>
<xsl:apply-templates select="exsl:node-set($nons)"/>
</xsl:when>
<!-- Can't process unless namespace removed -->
<xsl:when test="*/self::ng:* or */self::db:*">
<xsl:message terminate="yes">
<xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
<xsl:text> cannot proceed.</xsl:text>
</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
<xsl:when test="count(key('id',$rootid)) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
<xsl:text>' not found in document.</xsl:text>
</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
<xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
<xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
</xsl:if>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
<xsl:apply-templates select="/" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
<xsl:apply-templates select="/" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
<xsl:apply-templates select="/" mode="collect.tex.math"/>
</xsl:if>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="index.html"/>
<xsl:call-template name="l10n.js"/>
</xsl:template>
<!-- The WebHelp output structure. similar to main() method.
basic format:
<html>
<head> calls-appropriate-template </head>
<body>
some-generic-content
<div id="content">
All your docbook document content goes here
....
</div>
some-other-generic-content-at-footer
</body>
</html>
-->
<xsl:template name="chunk-element-content">
<xsl:param name="prev"/>
<xsl:param name="next"/>
<xsl:param name="nav.context"/>
<xsl:param name="content">
<xsl:apply-imports/>
</xsl:param>
<xsl:call-template name="user.preroot"/>
<html>
<xsl:call-template name="html.head">
<xsl:with-param name="prev" select="$prev"/>
<xsl:with-param name="next" select="$next"/>
</xsl:call-template>
<body>
<xsl:call-template name="body.attributes"/>
<xsl:call-template name="user.header.navigation">
<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>
<div id="content">
<noscript>
<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'txt_browser_not_supported'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>
</noscript>
<xsl:call-template name="user.header.content"/>
<xsl:copy-of select="$content"/>
<xsl:call-template name="user.footer.content"/>
<!-- Redundant since the upper navigation bar always visible -->
<xsl:call-template name="footer.navigation">
<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="user.webhelp.content.footer"/>
</div>
<xsl:call-template name="user.footer.navigation"/>
</body>
</html>
<xsl:value-of select="$chunk.append"/>
</xsl:template>
<!-- This is for the USERS. Users who want to customize webhelp may over-ride this template to add content to the footer of the content DIV.
i.e. within <div id="content"> ... </div> -->
<xsl:template name="user.webhelp.content.footer"/>
<!-- The Header with the company logo -->
<xsl:template name="webhelpheader">
<xsl:param name="prev"/>
<xsl:param name="next"/>
<xsl:param name="nav.context"/>
<xsl:variable name="home" select="/*[1]"/>
<xsl:variable name="up" select="parent::*"/>
<div id="header">
<xsl:call-template name="webhelpheader.logo"/>
<!-- Display the page title and the main heading(parent) of it-->
<h1>
<xsl:apply-templates select="/*[1]" mode="title.markup"/>
<br/>
<xsl:choose>
<xsl:when
test="count($up) &gt; 0 and generate-id($up) != generate-id($home)">
<xsl:apply-templates select="$up" mode="object.title.markup"/>
</xsl:when>
<xsl:when test="not(generate-id(.) = generate-id(/*))">
<xsl:apply-templates select="." mode="object.title.markup"/>
</xsl:when>
<xsl:otherwise>&#160;</xsl:otherwise>
</xsl:choose>
</h1>
<!-- Prev and Next links generation-->
<div id="navheader">
<xsl:call-template name="user.webhelp.navheader.content"/>
<xsl:comment>
<!-- KEEP this code. In case of neither prev nor next links are available, this will help to
keep the integrity of the DOM tree-->
</xsl:comment>
<!--xsl:with-param name="prev" select="$prev"/>
<xsl:with-param name="next" select="$next"/>
<xsl:with-param name="nav.context" select="$nav.context"/-->
<table class="navLinks">
<tr>
<td>
<a id="showHideButton" href="javascript:showHideToc();"
class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
</a>
</td>
<xsl:if test="count($prev) &gt; 0
or (count($up) &gt; 0
and generate-id($up) != generate-id($home)
and $navig.showtitles != 0)
or count($next) &gt; 0">
<td>
<xsl:if test="count($prev)>0">
<a accesskey="p" class="navLinkPrevious" tabindex="5">
<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" link-->
<xsl:choose>
<xsl:when test="count($up)&gt;0
and generate-id($up) != generate-id($home)">
|
<a accesskey="u" class="navLinkUp" tabindex="5">
<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>
<xsl:if test="count($next)>0">
|
<a accesskey="n" class="navLinkNext" tabindex="5">
<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>
</xsl:if>
</tr>
</table>
</div>
</div>
</xsl:template>
<xsl:template name="webhelpheader.logo">
<a target="_blank">
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="$branding = 'docbook'">http://docbook.org/</xsl:when>
<xsl:otherwise>#</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<img style='margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px' align="right"
src='{$webhelp.common.dir}images/logo.png' alt="{$brandname} Documentation"/>
</a>
</xsl:template>
<xsl:template name="user.webhelp.navheader.content"/>
<xsl:template name="webhelptoc">
<xsl:param name="currentid"/>
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:variable name="title">
<xsl:if test="$webhelp.autolabel=1">
<xsl:variable name="label.markup">
<xsl:apply-templates select="key('id',$rootid)" mode="label.markup"/>
</xsl:variable>
<xsl:if test="normalize-space($label.markup)">
<xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
</xsl:if>
</xsl:if>
<xsl:apply-templates select="key('id',$rootid)" mode="titleabbrev.markup"/>
</xsl:variable>
<xsl:variable name="href">
<xsl:choose>
<xsl:when test="$manifest.in.base.dir != 0">
<xsl:call-template name="href.target">
<xsl:with-param name="object" select="key('id',$rootid)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="href.target.with.base.dir">
<xsl:with-param name="object" select="key('id',$rootid)"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="title">
<xsl:if test="$webhelp.autolabel=1">
<xsl:variable name="label.markup">
<xsl:apply-templates select="/*" mode="label.markup"/>
</xsl:variable>
<xsl:if test="normalize-space($label.markup)">
<xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
</xsl:if>
</xsl:if>
<xsl:apply-templates select="/*" mode="titleabbrev.markup"/>
</xsl:variable>
<xsl:variable name="href">
<xsl:choose>
<xsl:when test="$manifest.in.base.dir != 0">
<xsl:call-template name="href.target">
<xsl:with-param name="object" select="/"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="href.target.with.base.dir">
<xsl:with-param name="object" select="/"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<div id="sidebar"> <!--#sidebar id is used for showing and hiding the side bar -->
<div id="leftnavigation" style="padding-top:3px;">
<div id="tabs">
<ul>
<li>
<a href="#treeDiv" style="outline:0;" tabindex="1">
<span class="contentsTab">
<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'TableofContents'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>
</span>
</a>
</li>
<xsl:if test="$webhelp.include.search.tab != 'false'">
<li>
<a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()">
<span class="searchTab">
<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'Search'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>
</span>
</a>
</li>
</xsl:if>
<xsl:call-template name="user.webhelp.tabs.title"/>
</ul>
<div id="treeDiv">
<img src="{$webhelp.common.dir}images/loading.gif" alt="loading table of contents..."
id="tocLoading" style="display:block;"/>
<div id="ulTreeDiv" style="display:none">
<ul id="tree" class="filetree">
<xsl:apply-templates select="/*/*" mode="webhelptoc">
<xsl:with-param name="currentid" select="$currentid"/>
</xsl:apply-templates>
</ul>
</div>
</div>
<xsl:if test="$webhelp.include.search.tab != 'false'">
<div id="searchDiv">
<div id="search">
<form onsubmit="Verifie(searchForm);return false"
name="searchForm"
class="searchForm">
<fieldset class="searchFieldSet">
<legend>
<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'Search'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>
</legend>
<center>
<input id="textToSearch" name="textToSearch" type="search"
class="searchText" tabindex="1"/>
<xsl:text disable-output-escaping="yes"> <![CDATA[&nbsp;]]> </xsl:text>
<input onclick="Verifie(searchForm)" type="button"
class="searchButton"
value="Go" id="doSearch" tabindex="1"/>
</center>
</fieldset>
</form>
</div>
<div id="searchResults">
<center> </center>
</div>
<p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p>
</div>
</xsl:if>
<xsl:call-template name="user.webhelp.tabs.content"/>
</div>
</div>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Hooks for adding customs tabs -->
<xsl:template name="user.webhelp.tabs.title"/>
<xsl:template name="user.webhelp.tabs.content"/>
<!-- Generates the webhelp table-of-contents (TOC). -->
<xsl:template
match="book|part|reference|preface|chapter|bibliography|appendix|article|topic|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index|setindex"
mode="webhelptoc">
<xsl:param name="currentid"/>
<xsl:variable name="title">
<xsl:if test="$webhelp.autolabel=1">
<xsl:variable name="label.markup">
<xsl:apply-templates select="." mode="label.markup"/>
</xsl:variable>
<xsl:if test="normalize-space($label.markup)">
<xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
</xsl:if>
</xsl:if>
<xsl:apply-templates select="." mode="titleabbrev.markup"/>
</xsl:variable>
<xsl:variable name="href">
<xsl:choose>
<xsl:when test="$manifest.in.base.dir != 0">
<xsl:call-template name="href.target"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="href.target.with.base.dir"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="id" select="generate-id(.)"/>
<xsl:if test="not(self::index) or (self::index and not($generate.index = 0))">
<!--li style="white-space: pre; line-height: 0em;"-->
<li>
<xsl:if test="$id = $currentid">
<xsl:attribute name="id">webhelp-currentid</xsl:attribute>
</xsl:if>
<span class="file">
<a href="{substring-after($href, $base.dir)}" tabindex="1">
<xsl:value-of select="$title"/>
</a>
</span>
<xsl:if test="part|reference|preface|chapter|bibliography|appendix|article|topic|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv">
<ul>
<xsl:apply-templates
select="part|reference|preface|chapter|bibliography|appendix|article|topic|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv"
mode="webhelptoc">
<xsl:with-param name="currentid" select="$currentid"/>
</xsl:apply-templates>
</ul>
</xsl:if>
</li>
</xsl:if>
</xsl:template>
<xsl:template match="text()" mode="webhelptoc"/>
<xsl:template name="user.footer.content">
<script type="text/javascript" src="{$webhelp.common.dir}main.js">
<xsl:comment> </xsl:comment>
</script>
</xsl:template>
<!-- Generates index.html file at docs/. This is simply a redirection to content/$default.topic -->
<xsl:template name="index.html">
<xsl:variable name="default.topic">
<xsl:choose>
<xsl:when test="$webhelp.default.topic != ''">
<xsl:value-of select="$webhelp.default.topic"/>
</xsl:when>
<xsl:when test="$htmlhelp.default.topic != ''">
<xsl:value-of select="$htmlhelp.default.topic"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="make-relative-filename">
<xsl:with-param name="base.dir"/>
<xsl:with-param name="base.name">
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:apply-templates select="key('id',$rootid)" mode="chunk-filename"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates
select="*/*[self::preface|self::chapter|self::appendix|self::part][1]"
mode="chunk-filename"/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="write.chunk">
<xsl:with-param name="filename">
<!-- <xsl:if test="$manifest.in.base.dir != 0"> -->
<!-- <xsl:value-of select="$base.dir"/> -->
<!-- </xsl:if> -->
<xsl:choose>
<xsl:when test="$webhelp.start.filename">
<xsl:value-of select="concat($webhelp.base.dir,'/',$webhelp.start.filename)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'index.html'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="method" select="'xml'"/>
<xsl:with-param name="encoding" select="'utf-8'"/>
<xsl:with-param name="indent" select="'yes'"/>
<xsl:with-param name="content">
<html>
<head>
<link rel="shortcut icon" href="favicon.ico"/>
<meta http-equiv="Refresh" content="1; URL=content/{$default.topic}"/>
<title><xsl:value-of select="//title[1]"/>&#160;</title>
</head>
<body>
If not automatically redirected, click <a href="content/{$default.topic}">content/<xsl:value-of select="$default.topic"/></a>
</body>
</html>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="l10n.js">
<xsl:call-template name="write.chunk">
<xsl:with-param name="filename">
<xsl:value-of select="concat($base.dir,'search/l10n.js')"/>
</xsl:with-param>
<xsl:with-param name="method" select="'text'"/>
<xsl:with-param name="encoding" select="'utf-8'"/>
<xsl:with-param name="indent" select="'no'"/>
<xsl:with-param name="content">
//Resource strings for localization
var localeresource = new Object;
localeresource["search_no_results"]="<xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'Your_search_returned_no_results'"/>
<xsl:with-param name="context" select="'webhelp'"/>
</xsl:call-template>";
</xsl:with-param>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>