This is the mail archive of the docbook-apps@lists.oasis-open.org mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [docbook-apps] XSL custom chunk with navigation. e.g. legalnotice


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) &gt; 0
>                                     or (count($up) &gt; 0 and
local-name($up) != 'bookinfo')
>                                     or count($next) &gt; 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
>
>
>



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]