Hi Paddy,
The context element for the call to the
'header.content' template is the current chunk element. Since chapter is a
chunk element, you can add to your customization a condition to exclude chapter
(and appendix), something like this (not tested):
<xsl:if test="ancestor-self::d:part and
not(self::d:chapter) and not(self::d:appendix)">
etc.
----- Original Message -----
Sent: Monday, June 11, 2012 9:57 AM
Subject: Re: [docbook-apps] Part title in
chunks header
Hi Bob,
Thanks again for getting back and helping me with this, the part title,
using your code, is now appearing in the body pages.
The only problem I have now is that it is being duplicated in the header
of the tocs for each chapter as the part title was already appearing in
the chapter tocs, is there a way of suppressing this chapter toc
duplication?
Cheers:)
On 8 Jun 2012, at 18:07, Bob Stayton wrote:
Hi Paddy,
There is no <marker> element in XHMTL,
nor is there a <retrieve-marker> element. Those are part of the
XSL-FO vocabulary for paginated output.
You can put the content you want to generate
directly in the customized header.navigation template, in the location where
you currently have <retrieve-marker>. The context node for
when the header.navigation template is called is the element being
chunked, so you will have to select for an ancestor part element to get its
title. Something like this:
<xsl:if
test="ancestor-or-self::d:part">
<xsl:apply-templates
select="ancestor-or-self::d:part" mode="title.markup"/>
<xsl:text> -
</xsl:text>
</xsl:if>
----- Original Message -----
Sent: Wednesday, June 06, 2012 8:05
AM
Subject: [docbook-apps] Part title in
chunks header
Hi,
I'm trying to emulate a customisation Bob helped me with, I added the
part title from a docbook5 book project to the body pages of the pdf fo
output using the "part.titlepage.before.recto" template from
the titlepage.templates.xsl added to my custom layer:
<xsl:template name="part.titlepage.before.recto"> <fo:marker marker-class-name="part.head.marker">
<xsl:apply-templates select="d:title|d:info/d:title" mode="title.mode"/> </fo:marker> </xsl:template>
and then
using this in the header.content template in the pagesetup.xsl
file:
<fo:retrieve-marker retrieve-class-name="part.head.marker"
retrieve-position="first-including-carryover"
retrieve-boundary="document"/>
Which did
the job perfectly.
---------------------------------
I now
need to do the same for the xhtml chunks output.
I've added this to my xhtml chunks
custom layer:
<xsl:template name="part.titlepage.before.recto"> <marker marker-class-name="part.head.marker">
<xsl:apply-templates select="d:title|d:info/d:title" mode="title.mode"/> </marker> </xsl:template>
And also taken
the header.navigation template from the chunk-common.xsl file
and made the following customisation, I've also swapped the $row1 and
$row2 to allow the chapter title to display before the section
title.
<xsl:template name="header.navigation"> <xsl:param name="prev" select="/d:foo"/> <xsl:param name="next" select="/d: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">
<!-- poc alt, switched the $row to enable
the chapter title
to show before section title
-->
<xsl:choose>
<xsl:when test="count($up) > 0
and generate-id($up) !=
generate-id($home)
and $navig.showtitles !=
0">
<!-- add marker here -->
<retrieve-marker retrieve-class-name="part.head.marker"
retrieve-position="first-including-carryover"
retrieve-boundary="document"/>
<xsl:text> - </xsl:text>
<!-- end additional header marker
-->
<xsl:apply-templates select="$up" mode="object.title.markup"/>
</xsl:when>
<xsl:otherwise> </xsl:otherwise>
</xsl:choose>
<!-- end poc alt -->
</th>
</tr>
</xsl:if>
<xsl:if test="$row2">
<tr>
<td width="20%" align="{$direction.align.start}">
<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">
<!-- poc alt, switched the $row to enable
the chapter title
to show before section title
-->
<xsl:apply-templates select="." mode="object.title.markup"/>
<!-- end poc alt -->
</th>
<td width="20%" align="{$direction.align.end}">
<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>
I'm getting the additional " - " text
but no sign of the part title before it, I'm sure I'm missing something
fundamental due to my beginner status, can anyone point me in the right
direction.
---------------------------
Best Regards
Paddy O' Connell
Fife Design
Partnership
01334 828393
---------------------------
Best Regards
Paddy O' Connell
Fife Design
Partnership
01334 828393
|