[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Grouping question
M Balaji wrote:
How do I need to write the for-each-group element for the above condition? Here is an attempt with a function: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xsd mf" xmlns:mf="http://example.com/2009/mf" version="2.0"> <xsl:output indent="yes"/> <xsl:function name="mf:group-heading" as="element()*"> <xsl:param name="els" as="element()*"/> <xsl:param name="level" as="xsd:integer"/> <xsl:for-each-group select="$els" group-starting-with="*[local-name() eq concat('h', $level)]"> <xsl:element name="{local-name()}"> <xsl:apply-templates/> <xsl:sequence select="mf:group-heading(current-group() except ., $level + 1)"/> </xsl:element> </xsl:for-each-group> </xsl:function> <xsl:template match="root"> <xsl:copy> <xsl:sequence select="mf:group-heading(*, 2)"/> </xsl:copy> </xsl:template> </xsl:stylesheet> When applied to <root> <h2>testing</h2> <p>data recovery, and application testing. </p> <h4>Support for file system</h4> <p>Objects for replication:</p> <h3>Session</h3> <p>Before creating sessions... </p> <h3>Wizard</h3> <p>In Manager, you can . </p> <h4>Support for file system</h4> <p>Objects for replication:</p> <h2>testing1</h2> </root> Saxon 9 gives me <root> <h2>testing<p>data recovery, and application testing. <h4>Support for file system<p>Objects for replication:</p> </h4> </p> <h3>Session<p>Before creating sessions... </p> </h3> <h3>Wizard<p>In Manager, you can . </p> <h4>Support for file system<p>Objects for replication:</p> </h4> </h3> </h2> <h2>testing1</h2> </root> which I think has the structure you want, you might need to tune the whitespace/indentation. -- Martin Honnen http://msmvps.com/blogs/martin_honnen/
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|