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] Reset footnote numbering for each chunk

On 2017-03-08 Jan Tosovsky wrote:
> my HTML output consists of (manually) chunked chapters and sections.
> However, my footnotes are still numbered from the beginning.
> I've located the following template in the html/footnote.xsl:
> <xsl:template match="footnote" mode="footnote.number">
> which implements quite basic counting (simplified here for better
> understanding):
> <xsl:variable name="fnum" select="count(preceding::footnote) + 1"/>
> Is there a simple way to get actual chunk element inside this template
> and modify the above code to select just 'preceding::footnote' up to 
> that chunk element?

Once asked another idea came to my mind. And it seems to be a viable

(1) Using this code I can get unique ID of chunking element:

   <xsl:template name="getCurrentChunkElementId">

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

      <xsl:variable name="isChunk">
         <xsl:call-template name="chunk">
            <xsl:with-param name="node" select="$node"/>

         <xsl:when test="$isChunk='1'">
            <xsl:value-of select="generate-id($node)"/>
         <xsl:when test="$node/parent::*">
            <xsl:call-template name="getCurrentChunkElementId">
               <xsl:with-param name="node" select="$node/parent::*"/>

(2) In the <xsl:template match="footnote" mode="footnote.number"> template I
use the above code this way:

   <xsl:variable name="currentChunkElementId">
      <xsl:call-template name="getCurrentChunkElementId"/>
   <xsl:variable name="fromBeginning" select="count(preceding::footnote)"/>
   <xsl:variable name="fromBeginningUpToCurrentChunk"
select="count(//*[generate-id(.) =
   <xsl:variable name="fnum" select="$fromBeginning -
$fromBeginningUpToChunk + 1"/>	

(a) This is simplified demonstration without excluding table footnotes.
(b) That XPath //*[generate-id(.) = $currentChunkElementId] is quite
inefficient and there is mostly likely room for other improvements.

It would be nice to have this numbering system driven by a new HTML
parameter ;-)



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