Subject: Re: [xsl] XSL FO TOC for an indexing document|
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Sun, 15 Mar 2009 23:27:52 +0100
All of the XSL FO TOC generating examples I have seen are keyed to the structural parts of a book (a chapter element, etc) or some similar object. I have constructed an index to a journal using XSL-FO and would like to have a TOC that indicates the initial use of each letter of the alphabet, or some useful refinement thereof. For a start, how would I identify the position in the index where a letter was used for the first time.
If it would help, here is a draft copy of the document: http://www.knihtisk.org/library/specialist/headings.pdf.
The initial occurrence of a letter , as well as every other occurrence, will appear in the XML element <Heading>. For the letter 'A', this is the first entry in the above document <Heading>Abbeys and Monasteries</Heading>. Since every entry appears in the same element type, how do I distinguish 'interesting' <Heading> elements (those with an initial occurrence of a letter) from their less interesting cousins (those with later occurrences)?
<xsl:for-each-group select="....population.here..." group-by="upper-case(substring(normalize-space(.),1,1)"> <!--now at the first one of the population with the first letter--> <fo:block font-size="150%" font-weight="bold"> <!--show the letter--> <xsl:value-of select="current-grouping-key()"/> </fo:block> <!--all those with the first letter are in current-group()--> <!--create your index entries here with those in the current-group()--> </xsl:for-each-group>
-- XSLT/XSL-FO/XQuery training in Los Angeles (New dates!) 2009-06-08 Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18 Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18 G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal