Thanks for the feedback Bob,
I think, with this particular project we are ok since it
contains no <xref>
tags that we would use in other projects. So this object.id
solution seems
to work for linking the TOC to the correct language article
inside our book.
However, I will have to study your response further so that
when we do in
fact use <xref> we will be prepared for what might
occur.
Thanks again,
David White
-----Original Message-----
From: Bob Stayton [mailto:bobs sagehill.net]
Sent: Tuesday, February 21, 2006 10:52 AM
To: David White; docbook-apps lists.oasis-open.org
Subject: Re: [docbook-apps] generate.toc and scope parameter
Hi David,
That could work. You might want to scan through the
stylesheet files for
templates that use the id value directly without going through
object.id.
I know there are several in fo/block.xsl, but I'm not sure
why those
template don't use object.id.
Do you use xref or link? If so, I think you will need to
look at the
xsl:key named 'id' in fo/docbook.xsl. It is used in the
template for xrefs
to find the element with the id that matches a linkend. I
don't think there
is a way for the xsl:key element to process a template like
object.id for
each element to fill in its 'use=' attribute. You may
have to modify the
xref template to skip using that key.
Bob Stayton
Sagehill Enterprises
DocBook Consulting
bobs sagehill.net
----- Original Message -----
From: "David White" <davidw kencook.com>
To: "'Bob Stayton'" <bobs sagehill.net>; <docbook-apps lists.oasis-open.org>
Sent: Tuesday, February 21, 2006 6:18 AM
Subject: RE: [docbook-apps] generate.toc and scope parameter
> Hi Bob,
>
> The solution we found was to modify the object.id
template directly.
Having
> it append language code information to the ID.
>
> <xsl:template name="object.id">
> <xsl:param name="object"
select="."/>
> <xsl:variable name="lang">
> <xsl:call-template
name="l10n.language"/>
> </xsl:variable>
> <xsl:choose>
> <xsl:when test="$object/ id">
> <xsl:value-of select="$lang"/>
> <xsl:value-of select="$object/ id"/>
> <!-- <xsl:value-of select="$object/ id"/>-->
> </xsl:when>
> <xsl:when test="$object/ xml:id">
> <xsl:value-of select="$lang"/>
> <xsl:value-of select="$object/ xml:id"/>
> <!--<xsl:value-of
> select="$object/ xml:id"/>-->
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of
> select="generate-id($object)"/>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
>
> David White
>
> -----Original Message-----
> From: Bob Stayton [mailto:bobs sagehill.net]
> Sent: Monday, February 20, 2006 4:53 PM
> To: David White; docbook-apps lists.oasis-open.org
> Subject: Re: [docbook-apps] generate.toc and scope
parameter
>
> Hi David,
> It is possible to add a scope to a table of contents,
but it isn't that
> easy. But even if you do, you are still faced with the
problem of
multiple
> identical IDs in the output. Using a scope in the
stylesheet will
satisfy
> the stylesheet's need to find the right text to put in
the reference, but
> when it writes out the link, it is still referring to
an ID value that is
> going to appear in multiple places in the FO or HTML
output. If your FO
> processor doesn't complain about that (it should),
then the PDF reader
will
> be confused, or probably just link with the first
instance. You don't
have
> that problem with index scope because each indexterm
has a uniquely
> generated id.
>
> The stylesheets rely heavily on the content having
unique ids. Trying to
> get the stylesheets to work with duplicate IDs will
force you to modify a
> lot of templates. When you think you have it all
working, something will
> still bite you. You will be much better off making
the IDs unique
before
> they are processed. Believe me.
>
> If you can't do it in the source, then consider doing
it with a
> preprocessing step that appends the lang value to the
id value in the
source
> before it is processed. If you must do it in one pass,
then take a look
at
> fo/profile-docbook.xsl for the general method of doing
two-step
processing
> with one stylesheet pass. You basically preprocess the
root element "/"
in
> a certain mode ("profile" mode in that
stylesheet), save the result in a
> variable, use EXSLT to convert that variable to a
node-set, and then
process
> the node-set with the regular stylesheet.
>
> Bob Stayton
> Sagehill Enterprises
> DocBook Consulting
> bobs sagehill.net
>
>
> ----- Original Message -----
> From: "David White" <davidw kencook.com>
> To: <docbook-apps lists.oasis-open.org>
> Sent: Monday, February 20, 2006 11:53 AM
> Subject: [docbook-apps] generate.toc and scope
parameter
>
>
> > Hello everyone!
> >
> > I'm still working on my issues with our
multi-lingual book which
contains
> > articles with matching id's. This causes are
TOCs rendered in each
> article
> > to be wrong. So, I'm looking at how our index's
are done since they
are
> > being rendered the way we need our TOCs to work.
> >
> > I have a bit of XSLT code that looks like this;
> >
> > <xsl:choose>
> >
> > <xsl:when test="/book/article[ lang =
$lang]">
> >
> > <xsl:call-template
name="generate-index">
> >
> > <xsl:with-param name="scope"
select="/book/article[ lang = $lang]"/>
> >
> > </xsl:call-template>
> >
> > </xsl:when>
> >
> > <xsl:otherwise>
> >
> > <xsl:call-template
name="generate-index">
> >
> > <xsl:with-param name="scope"
select="."/>
> >
> > </xsl:call-template>
> >
> > </xsl:otherwise>
> >
> > </xsl:choose>
> >
> >
> >
> > Is it possible to have a generate-toc use a scope
as well so that it
> makes a
> > TOC only for an article of a given language?
> >
> >
> >
> > Thanks!
> >
> > David White
> >
> >
>
>
>
>
>
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: docbook-apps-unsubscribe lists.oasis-open.org
> For additional commands, e-mail: docbook-apps-help lists.oasis-open.org
>
>
>
------------------------------------------------------------
---------
To unsubscribe, e-mail: docbook-apps-unsubscribe lists.oasis-open.org
For additional commands, e-mail: docbook-apps-help lists.oasis-open.org
------------------------------------------------------------
---------
To unsubscribe, e-mail: docbook-apps-unsubscribe lists.oasis-open.org
For additional commands, e-mail: docbook-apps-help lists.oasis-open.org
|