xsl-list
[Top] [All Lists]

Re: Creating lists and sublists from a level attribute

2004-09-01 06:29:47

This is a standard grouping problem, XSLT2  has (will have) specific
grouping constructs (group-adjacent) to make this easy but in xslt1 you
can use any grouping technique (eg those on jeni's site
http://www.jenitennison.com/xslt/grouping

eg something like



<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

<xsl:output indent="yes"/>

<xsl:template match="x">
<ul>
<xsl:apply-templates mode="toc" select="heading[1]"/>
</ul>
</xsl:template>

<xsl:template mode="toc" match="heading">
<li>
 <span><xsl:value-of select="."/></span>
 <xsl:if test="@level &lt; following-sibling::heading[1]/@level">
 <ul>
 <xsl:apply-templates mode="toc" select="following-sibling::heading[1]"/>
 </ul>
 </xsl:if>
</li>
 <xsl:apply-templates mode="toc" 
select="following-sibling::heading[(_at_)level=current()/@level][1]"/>
</xsl:template>


</xsl:stylesheet>


<x>

<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> 

</x>


$ saxon head.xml head.xsl
<?xml version="1.0" encoding="utf-8"?>
<ul>
   <li>
      <span>A main Heading</span>
      <ul>
         <li>
            <span>Sub heading of main heading</span>
         </li>
         <li>
            <span>another sub heading of main heading</span>
         </li>
      </ul>
   </li>
   <li>
      <span>Another main Heading</span>
   </li>
</ul>

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________


<Prev in Thread] Current Thread [Next in Thread>