[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] End pages
On 10/3/06, Elliotte Harold <elharo@metalab.unc.edu> wrote: > Currently the end of my book includes a colophon. Is there any way to > tell the DocBook XSL stylesheets to put additional material onto that > page such as an "About the Author" section (taken from a personblurb) or > some additional custom content? Here's a start (note, this is pretty ugly): First, make sure you don't duplicate the colophon: <xsl:template match="colophon"> <xsl:variable name="id"> <xsl:call-template name="object.id"/> </xsl:variable> <xsl:variable name="master-reference"> <xsl:call-template name="select.pagemaster"/> </xsl:variable> <fo:page-sequence hyphenate="{$hyphenate}" master-reference="{$master-reference}"> <!-- tons of attributes elided.. go and get them?!--> <fo:flow flow-name="xsl-region-body"> <xsl:call-template name="set.flow.properties"> <xsl:with-param name="element" select="local-name(.)"/> <xsl:with-param name="master-reference" select="$master-reference"/> </xsl:call-template> <fo:block id="{$id}"> <xsl:call-template name="colophon.titlepage"/> </fo:block> <!-- Don't repeat the colophon <fo:block> <xsl:apply-templates/> </fo:block> --> </fo:flow> </fo:page-sequence> </xsl:template> Since mine are so short, just grab the content I want and shove it all on the titlepage <xsl:template name="colophon.titlepage.recto"> <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="orm-colophon.title.properties"> <xsl:text>About the Author</xsl:text> <xsl:if test="count(/book/bookinfo/author) > 1"> <xsl:text>s</xsl:text> </xsl:if> </fo:block> <xsl:apply-templates select="/book/bookinfo/author/authorblurb" mode="orm-colophon"/> <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="orm-colophon.title.properties"> <xsl:text>Colophon</xsl:text> </fo:block> <xsl:apply-templates/> </xsl:template> <!-- don't repeat colophon --> <xsl:template name="colophon.titlepage"> <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:variable name="recto.content"> <xsl:call-template name="colophon.titlepage.before.recto"/> <xsl:call-template name="colophon.titlepage.recto"/> </xsl:variable> <xsl:variable name="recto.elements.count"> <xsl:choose> <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> <!-- Do it here... --> <fo:block><xsl:copy-of select="$recto.content"/></fo:block> </xsl:if> <!-- don't care about verso, mine are always on a recto... --> <xsl:variable name="verso.content"> <xsl:call-template name="colophon.titlepage.before.verso"/> <xsl:call-template name="colophon.titlepage.verso"/> </xsl:variable> <xsl:variable name="verso.elements.count"> <xsl:choose> <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> <fo:block><xsl:copy-of select="$verso.content"/></fo:block> </xsl:if> <xsl:call-template name="colophon.titlepage.separator"/> </fo:block> </xsl:template> <!-- grab the content here --> <xsl:template match="authorblurb" mode="orm-colophon"> <xsl:apply-templates/> </xsl:template> <!-- only want it in the colophon --> <xsl:template match="authorblurb"/> HTH, Keith
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]