OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook-apps] XHTML: generate.toc string can't suppress toc title for <part>


Hi Daniel,

Yes, this sure looks like a bug.  Please file an Issue on the Github site:

https://github.com/docbook/xslt10-stylesheets

Regarding the failure of your customization layer, chunking is tricky because many elements are processed twice at different XSL import levels.  It is usually necessary to set up two customization files, with one importing the other, so that import precedence is properly maintained.  That process is described in my online book:

http://www.sagehill.net/docbookxsl/ChunkingCustomization.html

Bob Stayton
Sagehill Enterprises
bobs@sagehill.net
On 3/28/2018 9:41 AM, Daniel So wrote:
I changed the generate.toc string to "appendix toc article/appendix nop article toc,title book toc,title chapter toc part toc preface toc qandadiv toc qandaset toc reference toc section toc set toc". That should make a ToC appear at the beginning of a Part, but without the title "Table of Contents."  However, the title continues to appear.

I've tested that it is because  this template in division.xsl does not pass the toc.title.p parameter (see <!--comment--> below):

===

<xsl:template match="part">
  <xsl:call-template name="id.warning"/>

  <div>
    <xsl:apply-templates select="." mode="common.html.attributes"/>
    <xsl:call-template name="id.attribute">
      <xsl:with-param name="conditional" select="0"/>
    </xsl:call-template>

    <xsl:call-template name="part.titlepage"/>

    <xsl:variable name="toc.params">
      <xsl:call-template name="find.path.params">
        <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
      </xsl:call-template>
    </xsl:variable>
    <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
      <xsl:call-template name="division.toc">
        <!-- missing here:
                <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/>
        -->
      </xsl:call-template>
    </xsl:if>
    <xsl:apply-templates/>
  </div>
</xsl:template>

===

If you look at the corresponding templates for "book," "set" , "chapter" (in component.xsl)  etc., that line is always there, and toc.title.p is always passed. The same issue exists in the same templates for other outputs.

I think this is a bug for the XSLT. So:

- Should I raise a bug? If so, and before the bug is addressed...

- I tried to patch this by repeating that template in my own customization layer and adding the missing line; but for my chunked build, something strange happened: the Part's title page becomes missing from the output (in fact it is merged into the books' title page), so that the link in the book TOC to the Part became a dead link.  What is the proper way to patch this in a customization layer?

Thanks!

Regards,

Daniel

-- 
Daniel So
MySQL Documentation Team
Oracle Canada ULC / Markham, ON
MySQL: www.mysql.com
Oracle: www.oracle.com



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]