This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
Re: [docbook-apps] XSL custom chunk with navigation. e.g. legalnotice
- From: "Bob Stayton" <bobs at sagehill dot net>
- To: "TiP" <TiP at tut dot by>, <docbook-apps at lists dot oasis-open dot org>
- Date: Thu, 30 Sep 2004 12:28:30 -0700
- Subject: Re: [docbook-apps] XSL custom chunk with navigation. e.g. legalnotice
- References: <158168140.20040929145625@tut.by>
I think you pinpointed the problem:
<xsl:variable name="up" select="parent::*"/>
This assumes that the parent element is a chunk. Instead, it should confirm
that the parent is a chunk element, and, if not, then scan backwards through
the list of ancestors until it finds a chunk element.
Bob Stayton
Sagehill Enterprises
DocBook Consulting
bobs@sagehill.net
----- Original Message -----
From: "TiP" <TiP@tut.by>
To: <docbook-apps@lists.oasis-open.org>
Sent: Wednesday, September 29, 2004 5:56 AM
Subject: [docbook-apps] XSL custom chunk with navigation. e.g. legalnotice
> Hello docbook-apps,
>
> I need to chunk legalnotice with navigation headers with the
> following template.
> ---
> <xsl:template match="legalnotice" mode="titlepage.mode">
> <xsl:variable name="id"><xsl:call-template
name="object.id"/></xsl:variable>
> <xsl:variable name="filename">
> <xsl:call-template name="make-relative-filename">
> <xsl:with-param name="base.dir" select="$base.dir"/>
> <xsl:with-param name="base.name" select="concat($id,$html.ext)"/>
> </xsl:call-template>
> </xsl:variable>
>
> <xsl:variable name="title">
> <xsl:apply-templates select="." mode="title.markup"/>
> </xsl:variable>
>
> <xsl:call-template name="write.chunk">
> <xsl:with-param name="filename" select="$filename"/>
> <xsl:with-param name="quiet" select="$chunk.quietly"/>
> <xsl:with-param name="content">
> <xsl:call-template name="chunk-element-content">
> <xsl:with-param name="prev" select="/foo"/>
> <xsl:with-param name="next" select="/foo"/>
> <xsl:with-param name="content">
> <xsl:apply-templates mode="titlepage.mode"/>
> </xsl:with-param>
> </xsl:call-template>
> </xsl:with-param>
> </xsl:call-template>
> </xsl:template>
> ---
>
> But compiler generates a warning:
> ---
> No template for "/book/bookinfo" (or any of its leaves) exists
> in the context named "title" in the "en" localization.
> No template for "/book/bookinfo" (or any of its leaves) exists
> in the context named "title" in the "en" localization.
> ---
>
> The problem is from my point of view, that parent of <legalnotice>
> is <bookinfo> which is not a chunk and doesn't have <title> attribute
> to process in "header.navigation" and "html.head" templates from
> chunk-common.xsl by the
>
> <xsl:apply-templates select="$up" mode="object.title.markup"/>
>
> instruction.
> Though I could define such template solely for /book/bookinfo, this
> will not fix the problem with "UP" link in generated legalnotice
> point to the same chunk as "HOME". So, to make it correct I need to
> reproduce a whole "footer.navigation" template with a small addition
>
> <xsl:variable name="row1" select="count($prev) > 0
> or (count($up) > 0 and
local-name($up) != 'bookinfo')
> or count($next) > 0"/>
>
> I'd like to make my solution more universal and I can see it like make
> $up variable contain not parent, but correct first chunk element along
> ancestor axis. The problem is that I can't see a way to do this. Current
> $up value in 1.66.1 XSL is
>
> <xsl:variable name="up" select="parent::*"/>
>
> I wonder also if it will be possible to include such customization in
> XSL distribution? (if there is any, of course)
> --
> TiP
>
>
>