You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1013 lines
35 KiB
1013 lines
35 KiB
<?xml version="1.0"?>
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
version="1.0">
|
|
|
|
<!-- ********************************************************************
|
|
$Id$
|
|
********************************************************************
|
|
|
|
This file is part of the XSL DocBook Stylesheet distribution.
|
|
See ../README or http://nwalsh.com/docbook/xsl/ for copyright
|
|
and other information.
|
|
|
|
******************************************************************** -->
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<xsl:template name="chunk">
|
|
<xsl:param name="node" select="."/>
|
|
<!-- returns 1 if $node is a chunk -->
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- What's a chunk?
|
|
|
|
The root element
|
|
appendix
|
|
article
|
|
bibliography in article or part or book
|
|
book
|
|
chapter
|
|
colophon
|
|
glossary in article or part or book
|
|
index in article or part or book
|
|
part
|
|
preface
|
|
refentry
|
|
reference
|
|
sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth
|
|
section if position()>1 && depth < chunk.section.depth
|
|
set
|
|
setindex
|
|
-->
|
|
<!-- ==================================================================== -->
|
|
|
|
<!--
|
|
<xsl:message>
|
|
<xsl:text>chunk: </xsl:text>
|
|
<xsl:value-of select="name($node)"/>
|
|
<xsl:text>(</xsl:text>
|
|
<xsl:value-of select="$node/@id"/>
|
|
<xsl:text>)</xsl:text>
|
|
<xsl:text> csd: </xsl:text>
|
|
<xsl:value-of select="$chunk.section.depth"/>
|
|
<xsl:text> cfs: </xsl:text>
|
|
<xsl:value-of select="$chunk.first.sections"/>
|
|
<xsl:text> ps: </xsl:text>
|
|
<xsl:value-of select="count($node/parent::section)"/>
|
|
<xsl:text> prs: </xsl:text>
|
|
<xsl:value-of select="count($node/preceding-sibling::section)"/>
|
|
</xsl:message>
|
|
-->
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="not($node/parent::*)">1</xsl:when>
|
|
|
|
<xsl:when test="local-name($node) = 'sect1'
|
|
and $chunk.section.depth >= 1
|
|
and ($chunk.first.sections != 0
|
|
or count($node/preceding-sibling::sect1) > 0)">
|
|
<xsl:text>1</xsl:text>
|
|
</xsl:when>
|
|
<xsl:when test="local-name($node) = 'sect2'
|
|
and $chunk.section.depth >= 2
|
|
and ($chunk.first.sections != 0
|
|
or count($node/preceding-sibling::sect2) > 0)">
|
|
<xsl:call-template name="chunk">
|
|
<xsl:with-param name="node" select="$node/parent::*"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="local-name($node) = 'sect3'
|
|
and $chunk.section.depth >= 3
|
|
and ($chunk.first.sections != 0
|
|
or count($node/preceding-sibling::sect3) > 0)">
|
|
<xsl:call-template name="chunk">
|
|
<xsl:with-param name="node" select="$node/parent::*"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="local-name($node) = 'sect4'
|
|
and $chunk.section.depth >= 4
|
|
and ($chunk.first.sections != 0
|
|
or count($node/preceding-sibling::sect4) > 0)">
|
|
<xsl:call-template name="chunk">
|
|
<xsl:with-param name="node" select="$node/parent::*"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="local-name($node) = 'sect5'
|
|
and $chunk.section.depth >= 5
|
|
and ($chunk.first.sections != 0
|
|
or count($node/preceding-sibling::sect5) > 0)">
|
|
<xsl:call-template name="chunk">
|
|
<xsl:with-param name="node" select="$node/parent::*"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="local-name($node) = 'section'
|
|
and $chunk.section.depth >= count($node/ancestor::section)+1
|
|
and ($chunk.first.sections != 0
|
|
or count($node/preceding-sibling::section) > 0)">
|
|
<xsl:call-template name="chunk">
|
|
<xsl:with-param name="node" select="$node/parent::*"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="name($node)='preface'">1</xsl:when>
|
|
<xsl:when test="name($node)='chapter'">1</xsl:when>
|
|
<xsl:when test="name($node)='appendix'">1</xsl:when>
|
|
<xsl:when test="name($node)='article'">1</xsl:when>
|
|
<xsl:when test="name($node)='part'">1</xsl:when>
|
|
<xsl:when test="name($node)='reference'">1</xsl:when>
|
|
<xsl:when test="name($node)='refentry'">1</xsl:when>
|
|
<xsl:when test="name($node)='index' and $generate.index != 0
|
|
and (name($node/parent::*) = 'article'
|
|
or name($node/parent::*) = 'book'
|
|
or name($node/parent::*) = 'part'
|
|
)">1</xsl:when>
|
|
<xsl:when test="name($node)='bibliography'
|
|
and (name($node/parent::*) = 'article'
|
|
or name($node/parent::*) = 'book'
|
|
or name($node/parent::*) = 'part'
|
|
)">1</xsl:when>
|
|
<xsl:when test="name($node)='glossary'
|
|
and (name($node/parent::*) = 'article'
|
|
or name($node/parent::*) = 'book'
|
|
or name($node/parent::*) = 'part'
|
|
)">1</xsl:when>
|
|
<xsl:when test="name($node)='colophon'">1</xsl:when>
|
|
<xsl:when test="name($node)='book'">1</xsl:when>
|
|
<xsl:when test="name($node)='set'">1</xsl:when>
|
|
<xsl:when test="name($node)='setindex'">1</xsl:when>
|
|
<xsl:otherwise>0</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<xsl:template match="*" mode="chunk-filename">
|
|
<!-- returns the filename of a chunk -->
|
|
<xsl:variable name="ischunk">
|
|
<xsl:call-template name="chunk"/>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="fn">
|
|
<xsl:apply-templates select="." mode="recursive-chunk-filename"/>
|
|
</xsl:variable>
|
|
|
|
<!--
|
|
<xsl:message>
|
|
<xsl:value-of select="$ischunk"/>
|
|
<xsl:text> (</xsl:text>
|
|
<xsl:value-of select="local-name(.)"/>
|
|
<xsl:text>) </xsl:text>
|
|
<xsl:value-of select="$fn"/>
|
|
<xsl:text>, </xsl:text>
|
|
<xsl:call-template name="dbhtml-dir"/>
|
|
</xsl:message>
|
|
-->
|
|
|
|
<!-- 2003-11-25 by ndw:
|
|
The following test used to read test="$ischunk != 0 and $fn != ''"
|
|
I've removed the ischunk part of the test so that href.to.uri and
|
|
href.from.uri will be fully qualified even if the source or target
|
|
isn't a chunk. I *think* that if $fn != '' then it's appropriate
|
|
to put the directory on the front, even if the element isn't a
|
|
chunk. I could be wrong. -->
|
|
|
|
<xsl:if test="$fn != ''">
|
|
<xsl:call-template name="dbhtml-dir"/>
|
|
</xsl:if>
|
|
|
|
<xsl:value-of select="$fn"/>
|
|
<!-- You can't add the html.ext here because dbhtml filename= may already -->
|
|
<!-- have added it. It really does have to be handled in the recursive template -->
|
|
</xsl:template>
|
|
|
|
<xsl:template match="*" mode="recursive-chunk-filename">
|
|
<xsl:param name="recursive" select="false()"/>
|
|
|
|
<!-- returns the filename of a chunk -->
|
|
<xsl:variable name="ischunk">
|
|
<xsl:call-template name="chunk"/>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="dbhtml-filename">
|
|
<xsl:call-template name="dbhtml-filename"/>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="filename">
|
|
<xsl:choose>
|
|
<xsl:when test="$dbhtml-filename != ''">
|
|
<xsl:value-of select="$dbhtml-filename"/>
|
|
</xsl:when>
|
|
<!-- if this is the root element, use the root.filename -->
|
|
<xsl:when test="not(parent::*) and $root.filename != ''">
|
|
<xsl:value-of select="$root.filename"/>
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:when>
|
|
<!-- if there's no dbhtml filename, and if we're to use IDs as -->
|
|
<!-- filenames, then use the ID to generate the filename. -->
|
|
<xsl:when test="@id and $use.id.as.filename != 0">
|
|
<xsl:value-of select="@id"/>
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:when>
|
|
<xsl:otherwise></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$ischunk='0'">
|
|
<!-- if called on something that isn't a chunk, walk up... -->
|
|
<xsl:choose>
|
|
<xsl:when test="count(parent::*)>0">
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="$recursive"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<!-- unless there is no up, in which case return "" -->
|
|
<xsl:otherwise></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="not($recursive) and $filename != ''">
|
|
<!-- if this chunk has an explicit name, use it -->
|
|
<xsl:value-of select="$filename"/>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::set">
|
|
<xsl:value-of select="$root.filename"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::book">
|
|
<xsl:text>bk</xsl:text>
|
|
<xsl:number level="any" format="01"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::article">
|
|
<xsl:if test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:if>
|
|
|
|
<xsl:text>ar</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::preface">
|
|
<xsl:if test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:if>
|
|
|
|
<xsl:text>pr</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::chapter">
|
|
<xsl:if test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:if>
|
|
|
|
<xsl:text>ch</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::appendix">
|
|
<xsl:if test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:if>
|
|
|
|
<xsl:text>ap</xsl:text>
|
|
<xsl:number level="any" format="a" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::part">
|
|
<xsl:choose>
|
|
<xsl:when test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
<xsl:text>pt</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::reference">
|
|
<xsl:choose>
|
|
<xsl:when test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
<xsl:text>rn</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::refentry">
|
|
<xsl:choose>
|
|
<xsl:when test="parent::reference">
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
<xsl:text>re</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::colophon">
|
|
<xsl:choose>
|
|
<xsl:when test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
<xsl:text>co</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::sect1
|
|
or self::sect2
|
|
or self::sect3
|
|
or self::sect4
|
|
or self::sect5
|
|
or self::section">
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
<xsl:text>s</xsl:text>
|
|
<xsl:number format="01"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::bibliography">
|
|
<xsl:choose>
|
|
<xsl:when test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
<xsl:text>bi</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::glossary">
|
|
<xsl:choose>
|
|
<xsl:when test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
<xsl:text>go</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::index">
|
|
<xsl:choose>
|
|
<xsl:when test="/set">
|
|
<!-- in a set, make sure we inherit the right book info... -->
|
|
<xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
|
|
<xsl:with-param name="recursive" select="true()"/>
|
|
</xsl:apply-templates>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
<xsl:text>ix</xsl:text>
|
|
<xsl:number level="any" format="01" from="book"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="self::setindex">
|
|
<xsl:text>si</xsl:text>
|
|
<xsl:number level="any" format="01" from="set"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise>
|
|
<xsl:text>chunk-filename-error-</xsl:text>
|
|
<xsl:value-of select="name(.)"/>
|
|
<xsl:number level="any" format="01" from="set"/>
|
|
<xsl:if test="not($recursive)">
|
|
<xsl:value-of select="$html.ext"/>
|
|
</xsl:if>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<xsl:template name="href.target.uri">
|
|
<xsl:param name="object" select="."/>
|
|
<xsl:variable name="ischunk">
|
|
<xsl:call-template name="chunk">
|
|
<xsl:with-param name="node" select="$object"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<xsl:apply-templates mode="chunk-filename" select="$object"/>
|
|
|
|
<xsl:if test="$ischunk='0'">
|
|
<xsl:text>#</xsl:text>
|
|
<xsl:call-template name="object.id">
|
|
<xsl:with-param name="object" select="$object"/>
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="href.target">
|
|
<xsl:param name="context" select="."/>
|
|
<xsl:param name="object" select="."/>
|
|
|
|
<xsl:variable name="href.to.uri">
|
|
<xsl:call-template name="href.target.uri">
|
|
<xsl:with-param name="object" select="$object"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="href.from.uri">
|
|
<xsl:call-template name="href.target.uri">
|
|
<xsl:with-param name="object" select="$context"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<!--
|
|
<xsl:message>href.to.uri: <xsl:value-of select="$href.to.uri"/></xsl:message>
|
|
<xsl:message>href.from.uri: <xsl:value-of select="$href.from.uri"/></xsl:message>
|
|
-->
|
|
|
|
<xsl:variable name="href.to">
|
|
<xsl:call-template name="trim.common.uri.paths">
|
|
<xsl:with-param name="uriA" select="$href.to.uri"/>
|
|
<xsl:with-param name="uriB" select="$href.from.uri"/>
|
|
<xsl:with-param name="return" select="'A'"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="href.from">
|
|
<xsl:call-template name="trim.common.uri.paths">
|
|
<xsl:with-param name="uriA" select="$href.to.uri"/>
|
|
<xsl:with-param name="uriB" select="$href.from.uri"/>
|
|
<xsl:with-param name="return" select="'B'"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="depth">
|
|
<xsl:call-template name="count.uri.path.depth">
|
|
<xsl:with-param name="filename" select="$href.from"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="href">
|
|
<xsl:call-template name="copy-string">
|
|
<xsl:with-param name="string" select="'../'"/>
|
|
<xsl:with-param name="count" select="$depth"/>
|
|
</xsl:call-template>
|
|
<xsl:value-of select="$href.to"/>
|
|
</xsl:variable>
|
|
|
|
<!--
|
|
<xsl:message>
|
|
<xsl:text>In </xsl:text>
|
|
<xsl:value-of select="name(.)"/>
|
|
<xsl:text> (</xsl:text>
|
|
<xsl:value-of select="$href.from"/>
|
|
<xsl:text>,</xsl:text>
|
|
<xsl:value-of select="$depth"/>
|
|
<xsl:text>) </xsl:text>
|
|
<xsl:value-of select="name($object)"/>
|
|
<xsl:text> href=</xsl:text>
|
|
<xsl:value-of select="$href"/>
|
|
</xsl:message>
|
|
-->
|
|
|
|
<xsl:value-of select="$href"/>
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<xsl:template name="html.head">
|
|
<xsl:param name="prev" select="/foo"/>
|
|
<xsl:param name="next" select="/foo"/>
|
|
<xsl:variable name="this" select="."/>
|
|
<xsl:variable name="home" select="/*[1]"/>
|
|
<xsl:variable name="up" select="parent::*"/>
|
|
|
|
<head>
|
|
<xsl:call-template name="system.head.content"/>
|
|
<xsl:call-template name="head.content"/>
|
|
|
|
<xsl:if test="$home">
|
|
<link rel="start">
|
|
<xsl:attribute name="href">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="object" select="$home"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="title">
|
|
<xsl:apply-templates select="$home"
|
|
mode="object.title.markup.textonly"/>
|
|
</xsl:attribute>
|
|
</link>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="$up">
|
|
<link rel="up">
|
|
<xsl:attribute name="href">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="object" select="$up"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="title">
|
|
<xsl:apply-templates select="$up" mode="object.title.markup.textonly"/>
|
|
</xsl:attribute>
|
|
</link>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="$prev">
|
|
<link rel="prev">
|
|
<xsl:attribute name="href">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="object" select="$prev"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="title">
|
|
<xsl:apply-templates select="$prev" mode="object.title.markup.textonly"/>
|
|
</xsl:attribute>
|
|
</link>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="$next">
|
|
<link rel="next">
|
|
<xsl:attribute name="href">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="object" select="$next"/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="title">
|
|
<xsl:apply-templates select="$next" mode="object.title.markup.textonly"/>
|
|
</xsl:attribute>
|
|
</link>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="$html.extra.head.links != 0">
|
|
<xsl:for-each select="//part
|
|
|//reference
|
|
|//preface
|
|
|//chapter
|
|
|//article
|
|
|//refentry
|
|
|//appendix[not(parent::article)]|appendix
|
|
|//glossary[not(parent::article)]|glossary
|
|
|//index[not(parent::article)]|index">
|
|
<link rel="{local-name(.)}">
|
|
<xsl:attribute name="href">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="context" select="$this"/>
|
|
<xsl:with-param name="object" select="."/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="title">
|
|
<xsl:apply-templates select="." mode="object.title.markup.textonly"/>
|
|
</xsl:attribute>
|
|
</link>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="section|sect1|refsection|refsect1">
|
|
<link>
|
|
<xsl:attribute name="rel">
|
|
<xsl:choose>
|
|
<xsl:when test="local-name($this) = 'section'
|
|
or local-name($this) = 'refsection'">
|
|
<xsl:value-of select="'subsection'"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="'section'"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="href">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="context" select="$this"/>
|
|
<xsl:with-param name="object" select="."/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="title">
|
|
<xsl:apply-templates select="." mode="object.title.markup.textonly"/>
|
|
</xsl:attribute>
|
|
</link>
|
|
</xsl:for-each>
|
|
|
|
<xsl:for-each select="sect2|sect3|sect4|sect5|refsect2|refsect3">
|
|
<link rel="subsection">
|
|
<xsl:attribute name="href">
|
|
<xsl:call-template name="href.target">
|
|
<xsl:with-param name="context" select="$this"/>
|
|
<xsl:with-param name="object" select="."/>
|
|
</xsl:call-template>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="title">
|
|
<xsl:apply-templates select="." mode="object.title.markup.textonly"/>
|
|
</xsl:attribute>
|
|
</link>
|
|
</xsl:for-each>
|
|
</xsl:if>
|
|
|
|
<xsl:call-template name="user.head.content"/>
|
|
</head>
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<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::*"/>
|
|
|
|
<xsl:variable name="row1" select="$navig.showtitles != 0"/>
|
|
<xsl:variable name="row2" select="count($prev) > 0
|
|
or (count($up) > 0
|
|
and generate-id($up) != generate-id($home)
|
|
and $navig.showtitles != 0)
|
|
or count($next) > 0"/>
|
|
|
|
<xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'">
|
|
<div class="navheader">
|
|
<xsl:if test="$row1 or $row2">
|
|
<table width="100%" summary="Navigation header">
|
|
<xsl:if test="$row1">
|
|
<tr>
|
|
<th colspan="3" align="center">
|
|
<xsl:apply-templates select="." mode="object.title.markup"/>
|
|
</th>
|
|
</tr>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="$row2">
|
|
<tr>
|
|
<td width="20%" align="left">
|
|
<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> </xsl:text>
|
|
</td>
|
|
<th width="60%" align="center">
|
|
<xsl:choose>
|
|
<xsl:when test="count($up) > 0
|
|
and generate-id($up) != generate-id($home)
|
|
and $navig.showtitles != 0">
|
|
<xsl:apply-templates select="$up" mode="object.title.markup"/>
|
|
</xsl:when>
|
|
<xsl:otherwise> </xsl:otherwise>
|
|
</xsl:choose>
|
|
</th>
|
|
<td width="20%" align="right">
|
|
<xsl:text> </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>
|
|
</xsl:if>
|
|
</table>
|
|
</xsl:if>
|
|
<xsl:if test="$header.rule != 0">
|
|
<hr/>
|
|
</xsl:if>
|
|
</div>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<xsl:template name="footer.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::*"/>
|
|
|
|
<xsl:variable name="row1" select="count($prev) > 0
|
|
or count($up) > 0
|
|
or count($next) > 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.footer.navigation = '0'">
|
|
<div class="navfooter">
|
|
<xsl:if test="$footer.rule != 0">
|
|
<hr/>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="$row1 or $row2">
|
|
<table width="100%" summary="Navigation footer">
|
|
<xsl:if test="$row1">
|
|
<tr>
|
|
<td width="40%" align="left">
|
|
<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> </xsl:text>
|
|
</td>
|
|
<td width="20%" align="center">
|
|
<xsl:choose>
|
|
<xsl:when test="count($up)>0
|
|
and generate-id($up) != generate-id($home)">
|
|
<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> </xsl:otherwise>
|
|
</xsl:choose>
|
|
</td>
|
|
<td width="40%" align="right">
|
|
<xsl:text> </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>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="$row2">
|
|
<tr>
|
|
<td width="40%" align="left" valign="top">
|
|
<xsl:if test="$navig.showtitles != 0">
|
|
<xsl:apply-templates select="$prev" mode="object.title.markup"/>
|
|
</xsl:if>
|
|
<xsl:text> </xsl:text>
|
|
</td>
|
|
<td width="20%" align="center">
|
|
<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> | </xsl:text>
|
|
</xsl:if>
|
|
</xsl:when>
|
|
<xsl:otherwise> </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 width="40%" align="right" valign="top">
|
|
<xsl:text> </xsl:text>
|
|
<xsl:if test="$navig.showtitles != 0">
|
|
<xsl:apply-templates select="$next" mode="object.title.markup"/>
|
|
</xsl:if>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
</table>
|
|
</xsl:if>
|
|
</div>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<xsl:template name="navig.content">
|
|
<xsl:param name="direction" select="next"/>
|
|
<xsl:variable name="navtext">
|
|
<xsl:choose>
|
|
<xsl:when test="$direction = 'prev'">
|
|
<xsl:call-template name="gentext.nav.prev"/>
|
|
</xsl:when>
|
|
<xsl:when test="$direction = 'next'">
|
|
<xsl:call-template name="gentext.nav.next"/>
|
|
</xsl:when>
|
|
<xsl:when test="$direction = 'up'">
|
|
<xsl:call-template name="gentext.nav.up"/>
|
|
</xsl:when>
|
|
<xsl:when test="$direction = 'home'">
|
|
<xsl:call-template name="gentext.nav.home"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:text>xxx</xsl:text>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$navig.graphics != 0">
|
|
<img>
|
|
<xsl:attribute name="src">
|
|
<xsl:value-of select="$navig.graphics.path"/>
|
|
<xsl:value-of select="$direction"/>
|
|
<xsl:value-of select="$navig.graphics.extension"/>
|
|
</xsl:attribute>
|
|
<xsl:attribute name="alt">
|
|
<xsl:value-of select="$navtext"/>
|
|
</xsl:attribute>
|
|
</img>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$navtext"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<xsl:template match="processing-instruction('dbhtml')">
|
|
<!-- nop -->
|
|
</xsl:template>
|
|
|
|
<!-- ==================================================================== -->
|
|
|
|
<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:call-template name="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>
|
|
|
|
<xsl:call-template name="user.header.content"/>
|
|
|
|
<xsl:copy-of select="$content"/>
|
|
|
|
<xsl:call-template name="user.footer.content"/>
|
|
|
|
<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.footer.navigation"/>
|
|
</body>
|
|
</html>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|