Next in thread →
Next in month →
Re: [docbook] Customizing table of contents in HTML output
Camille, No, I didn't intend to respond only to you. I simply forgot to CC the mailing list. Below is the solution I came up with, thanks to your help: <xsl:template match="part"> <h2><xsl:value-of select="title"/></h2> <table class="toc"> <tr> <td><strong>DOCUMENT</strong><hr /></td> <td><strong>REVISION</strong><hr /></td> </tr> <xsl:for-each select="chapter"> <tr> <td><a> <xsl:attribute name="href"> <xsl:call-template name=" href.target"> <xsl:with-param name="object" select="."/> </xsl:call-template> </xsl:attribute> <xsl:value-of select="chapterinfo/title"/> </a></td> <td><xsl:value-of select="chapterinfo/revhistory/revision[position()=last()]/revnumber"/></td> </tr> </xsl:for-each> </table> <xsl:apply-templates/> </xsl:template> This allows me to make a separate HTML table for each DocBook Part. Each table has two columns, the first of which lists the Title of the document (and since I am chunking the output, this field is hyperlinked), and the second lists the last RevNumber. - Colin On 10/26/06, Camille B嶲nis <> wrote: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [Was this meant to my eyes only? You can forward answer to list if useful] Hi Colin, Oh OK sorry I misunderstood. This is the template you might try, adapt the "match" value depending on where you want the table to appear in your document - ------------------------------------------------------------ <xsl:template match="//chapter[1]"> <table> <title>Table of Contents</title> <tgroup cols="5"> <thead> <row> <entry>DOCUMENT</entry> <entry>REVISION</entry> </row> </thead> <tbody> <xsl:for-each select="//chapter/chapterinfo"> <row> <entry><xsl:apply-templates select="title"/></entry> <entry><xsl:apply-templates select="revhistory/revision[position=last()]/revnumber"/></entry> </row> </xsl:for-each> </tbody> </tgroup> </table> <xsl:apply-imports> </xsl:template> - ------------------------------------------------------------ Disclaimer: untested :-) Camille. Colin Shapiro a 嶰rit : > Camille, > > Thanks for your input. However, I don't think I made it clear enough > that I'd like my table of contents to be in an actual table format. > > The example in Bob Stayton's book (which I've looked at before) does > indeed describe how to customize the listitem entries in a table of > contents, but that assumes you'd want to keep the table of contents in > its standard list form. > > Instead, I want it to be an actual table, like this crude example (which > I realize may look funny in various fonts / email clients, but I think > you'll get the idea): > > ---------------------------------------------- > | DOCUMENT | REVISION | > ---------------------------------------------- > | Chapter 1: title | 20061107 | > ---------------------------------------------- > | Chapter 2: title | 20060514 | > ---------------------------------------------- > > ...etc. The idea here is for it to actually appear in a table format, > so I can style the borders and whatnot. > > The DocBook table that I wrote at the beginning of this thread would > give me the output I want (never mind the couple of typos in it), but if > I used that solution, I'd have to update the table of contents manually > as I add/remove/change chapters. I'd really like to find a way to do > this with XSL. > > Thanks, > Colin > > > On 10/25/06, *Camille B嶲nis* < > <mailto:>> wrote: > > Hi Colin, > > I believe the answer is here: > http://www.sagehill.net/docbookxsl/TOCcontrol.html > > Check the last example: just need to change appendix for chapter, and > then add the xsl:value of your revnumber instead of the gentext string. > > I think :-) > > Camille. > > Colin Shapiro a 嶰rit : >> I'd like to generate a table of contents in my HTML output that > contains >> extra information about each chapter of my book. Specifically, > I'd like >> the table of contents to list not only the titles of each chapter, > but >> each chapter's revision. > >> Something resembling the following: > >> DOCUMENT REVISION >> ---------------------------------------------- >> chapter1title 20061012 >> chapter2title 20050617 >> chapter3title 20060205 > > >> So, if I were to create the table of contents manually, I'd stick the >> following table into a preface of my book: > > >> <table> >> <title>Table of Contents</title> >> <tgroup cols="5"> >> <thead> >> <row> >> <entry>DOCUMENT</entry> >> <entry>REVISION</entry> >> </row> >> </thead> >> <tbody> >> <row> >> <entry><xi:xinclude >> href=""" chapter1.xml" >> xpointer="xpointer(/chapter/chapterinfo/title/text())" >> xmlns:xi=" http://www.w3.org/2001/XInclude" /></entry> >> <entry><xi:xinclude >> href=""chapter1.xml"> > > xpointer="xpointer(/chapter/chapterinfo/revhistory/revision[position=last()]/revnumber/text())" >> xmlns:xi="http://www.w3.org/2001/XInclude >> < http://www.w3.org/2001/XInclude>" /></entry> >> </row> >> </tbody> >> </tgroup> >> </table> > > >> In this manner, I could manually create a table of contents in the >> format I wanted. But what if I'd rather do this with an XSL >> customization layer, so that the whole table of contents would be >> generated automatically? > >> Can anyone point me in the right direction? I understand how to make >> basic customization layers, but I've never done anything this complex. > >> Thanks for any input you may offer. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Using GnuPG with Mandriva - http://enigmail.mozdev.org iD8DBQFFQHUgjv9P65BfOUMRAtAqAJ90I03lf4fkDNCOf/02nz93OL4oeACfUVOi CjeYmF1szi006nfc/eHasIQ= =Khmv -----END PGP SIGNATURE-----
Next in thread →
Next in month →