[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Creating lists and sublists from a level attribute

Subject: RE: Creating lists and sublists from a level attribute
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 1 Sep 2004 14:34:28 +0100
html sublists
Here's an adaptation of a stylesheet I presented at the Oxford summer
school: a recursive template using XSLT 2.0 xsl:for-each-group. 

<xsl:template name="process-level">
  <xsl:param name="population" required="yes" as="element(heading)*"/>
  <xsl:param name="level" required="yes" as="xs:integer"/>
  <xsl:if test="$population">
   <ul>
    <xsl:for-each-group select="$population" 
                group-starting-with="*[xs:integer(@level) eq $level]">
     <li>
      <p><xsl:value-of select="."/></p>   
      <xsl:call-template name="process-level">
        <xsl:with-param name="population" select="current-group() except
."/>
        <xsl:with-param name="level" select="$level + 1"/>
      </xsl:call-template>
     </li>
    </xsl:for-each-group>
   </xsl:if>
  </ul>
</xsl:template>

Call it like this:

<xsl:call-template name="process-level">
  <xsl:with-param name="population" select="child::heading"/>
  <xsl:with-param name="level" select="1"/>
</xsl:call-template>

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Andrew Brothwell [mailto:ANBROTH@xxxxxxxxxx] 
> Sent: 01 September 2004 14:16
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Creating lists and sublists from a level attribute
> 
> Hi,
> 
> I currently have a series of <heading> tags in the xml file. 
> These are not 
> 
> embedded within each other, but have a level attribute to 
> indicate which 
> ones are sub headings of others. For instance:
> 
> <heading level="1">A main Heading</heading>
> <heading level="2">Sub heading of main heading</heading>
> <heading level="2">another sub heading of main heading</heading>
> <heading level="1">Another main Heading</heading> 
> 
> There can be up to 4 levels.
> 
> What I am trying to achieve is a "document outline" at the 
> top of the page 
> 
> that takes each heading and puts it in a list, with sub 
> headings being 
> sublists of their parent headings. I am struggling to find a way to 
> arrange the <ul> and <li> tags to achieve this, and any help 
> would be much 
> 
> appreciated.
> 
> thanks, 
> 
> Andy

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.