← Prev in month ← Prev in thread

Re: [docbook-apps] Duplicate IDs mess up FO TOC

From
Mimil Mimil <>
Date
2008-04-02T12:49:44+00:00
ID
Thread
Re: [docbook-apps] Duplicate IDs mess up FO TOC
Hello Bob,

I think I discovered a little bug in the XML snippet you made. On the test dealing with @xml:id you made a concat with @id instead of @xml:id

 <xsl:when test="$object/@xml:id and $preceding.xid != 0">

    <xsl:value-of select="concat($object/@xml:id, $preceding.xid)"/>
  </xsl:when>

Regards,
Mimil

On Wed, Jan 17, 2007 at 7:17 PM, Bob Stayton <> wrote:

Here is a solution that will appear in the forthcoming Fourth Edition of my book (no release date yet).

The object.id template is used to generate the output id attribute as well as the link for any element.  As long as it produces consistent output for the same element, your links should work.

In this customization, it counts the number of preceding elements with the same id.  If the count is greater than zero, then it appends the count to the id value.  It works with both @id and @xml:id for db5 documents.

<xsl:template name="object.id">

 <xsl:param name="object" select="."/>

 <xsl:variable name="id" select="@id"/>

 <xsl:variable name="xid" select="@xml:id"/>

 <xsl:variable name="preceding.id"

       select="count(preceding::*[@id = $id])"/>

 <xsl:variable name="preceding.xid"

       select="count(preceding::*[@xml:id = $xid])"/>

 <xsl:choose>

   <xsl:when test="$object/@id and $preceding.id != 0">

     <xsl:value-of select="concat($object/@id, $preceding.id)"/>

   </xsl:when>

   <xsl:when test="$object/@id">

     <xsl:value-of select="$object/@id"/>

   </xsl:when>

   <xsl:when test="$object/@xml:id and $preceding.xid != 0">

     <xsl:value-of select="concat($object/@id, $preceding.xid)"/>

   </xsl:when>

   <xsl:when test="$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>

Bob Stayton

Sagehill Enterprises

DocBook Consulting



----- Original Message ----- From: "Claus Rasmussen" <>

To: <>

Sent: Wednesday, January 17, 2007 7:02 AM

Subject: [docbook-apps] Duplicate IDs mess up FO TOC

Hi folks,

I'm reusing quite a few sections using xincludes and my table of contents

gets confused when generating PDF output: It can not correctly determine the

page number of all sections since multiple sections have the same ID (the

ones that are reused).

I'm fully aware that duplicate ID attributes in my aggregated document makes

it invalid, but ignoring that for a while, would any of you know how to

solve this problem and get a nice printed TOC?

Of course there's the laborous approach suggested by Bob

(http://www.sagehill.net/docbookxsl/DuplicateIDs.html) but that's not really

feasible in this case.

Best,

Claus

-- 

http://techwriter.dk/

---------------------------------------------------------------------

To unsubscribe, e-mail: 

For additional commands, e-mail: 

---------------------------------------------------------------------

To unsubscribe, e-mail: 

For additional commands, e-mail: 
← Prev in month ← Prev in thread