Subject: RE: [xsl] TOC despair From: "John Meyer" <jmeyer@xxxxxxxxxxx> Date: Wed, 3 Dec 2003 19:13:32 -0500 |
Hmm, I don't think that will quite work, because the extra newline needs to occur after the very last child section occurring in document-order (ie, the most deeply nested one). I think you're best bet would be <xsl:if test=". = ancestor::chapter[1]//section[position()=last()]"> <br/> </xsl:if> This wont necessarily give you the best performance, but should do the trick for the general case. If you need better performance, and I cringe whenever I see the ancestor axis followed by // operator like this, I would use apply-templates to each section. You can then recursively pass a parameter indicating whether the section is the last child. This also lets you specify indenting patterns with a bit more precision. John Meyer Senior Software Engineer Clinician Support Technology 1 Wells Avenue, Suite 201 Newton, MA 02459 www.cstlink.com -----Original Message----- From: Binkley, Peter [mailto:Peter.Binkley@xxxxxxxxxxx] Sent: Wednesday, December 03, 2003 6:50 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] TOC despair How about test="position() = last()" in the "section" template? You might also need to test whether the parent is a chapter instead of another section. Peter > -----Original Message----- > From: Gustaf Liljegren [mailto:gustaf.liljegren@xxxxxxxxxxxx] > Sent: Wednesday, December 03, 2003 4:43 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] TOC despair > > > This shouldn't be hard, but I can't get it right. I'll try to > give enough info. The XML structure looks something like this: > > <book> > <chapter> > <section> > <section/> > </section> > </chapter> > </book> > > One section may contain other sections an so on. The problem > is in the TOC generation, where I want a little space after > each chapter, like so: > > Chapter 1: Elephants....................2 <-- chapter > African Elephants.......................2 <-- chapter/section > Serengeti.............................3 <-- > chapter/section/section Indian > Elephants........................4 <-- chapter/section > <-- space here, > please Chapter 2: Tigers.......................5 > > How do I say in XPath "the last section in this chapter"? > Here's my try, that won't work: > > <xsl:template match="section" mode="toc"> > ... > <xsl:if test="count(following::section) = 0"> > <xsl:attribute name="margin-bottom">1em</xsl:attribute> > </xsl:if> > ... > </xsl:template> > > Thanks, > > Gustaf > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] TOC despair, Christopher Hearns | Thread | RE: [xsl] TOC despair, David Carlisle |
Re: [xsl] TOC despair, W. Eliot Kimber | Date | RE: [xsl] TOC despair, Christopher Hearns |
Month |