Subject: RE: Re: [xsl] recursive template call, howto From: cknell@xxxxxxxxxx Date: Tue, 22 Aug 2006 09:22:32 -0400 |
Yes. I see that your problem is one of imposing an explicit structure where only an implicit structure exists. Start with this link "http://www.biglist.com/lists/xsl-list/archives/200012/msg00175.html". -- Charles Knell cknell@xxxxxxxxxx - email -----Original Message----- From: Sam Carleton <scarleton@xxxxxxxxxxxxxxxx> Sent: Tue, 22 Aug 2006 07:52:09 -0400 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] recursive template call, howto Charles, Thank you, that gets me very close, except... When I transformed the xml using the style sheet you provided, I got this: <table> <tr><td>1</td></tr> <tr><td>2</td></tr> <tr><td>7</td></tr> <tr><td>8</td></tr> </table> <table> <tr><td>3</td></tr> <tr><td>4</td></tr> <tr><td>5</td></tr> <tr><td>6</td></tr> </table> The problem is that the two simple groups that came after the complex group (lines 7 and 8) need to be in their own table after the complex group, like this: <table> <tr><td>1</td></tr> <tr><td>2</td></tr> </table> <table> <tr><td>3</td></tr> <tr><td>4</td></tr> <tr><td>5</td></tr> <tr><td>6</td></tr> </table> <table> <tr><td>7</td></tr> <tr><td>8</td></tr> </table> Sam On 8/22/06, cknell@xxxxxxxxxx <cknell@xxxxxxxxxx> wrote: > Taking the liberty of assuming a document root named "root-element" (just substitute whatever is the case in your document), this will do what you asked. "Look Ma! No recursion!" (Pardon an American old enough to remember 1950's TV ads.) > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="/"> > <xsl:apply-templates /> > </xsl:template> > > <xsl:template match="root-element"> > <html> > <body> > <table> > <xsl:apply-templates select="group[not(@type)]" /> > </table> > <xsl:apply-templates select="group[@type]" /> > </body> > </html> > </xsl:template> > > <xsl:template match="group[not(@type)]"> > <xsl:apply-templates /> > </xsl:template> > > <xsl:template match="group[@type]"> > <table> > <xsl:apply-templates /> > </table> > </xsl:template> > > <xsl:template match="line"> > <tr><td><xsl:value-of select="@id" /></td></tr> > </xsl:template> > > </xsl:stylesheet> > -- > Charles Knell > cknell@xxxxxxxxxx - email > > > > -----Original Message----- > From: Sam Carleton <scarleton@xxxxxxxxxxxxxxxx> > Sent: Mon, 21 Aug 2006 22:13:53 -0400 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] recursive template call, howto > > Here is the data: > > <group> > <line id = "1"/> > </group> > <group> > <line id="2"/> > </group> > <group type="complex"> > <line id="3"/> > <line id="4"/> > <line id="5"/> > <line id="6"/> > </group> > <group> > <line id="7"/> > </group> > <group> > <line id="8"/> > </group> > > The idea behind the data is that there are two types of groups: simple > and complex. The simple do not have a "type" attribute (it could if it > would help things). The end result should be HTML where the first two > simple groups are in one HTML table, than there is a second table for > each of the complex groups and thing a final table for the last three > simple groups. The order of simple and complex groups is random. > > My thought was when the first simple group was encountered, call a > recursive template starting at the simple group and building a nodeset > of lines until a complex group or the end was encountered. I cannot > figure out how to do that in xsl. Am I on the right path? If so, how > do I do it? If not, what is the right path? > > sam
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] recursive template call, , Sam Carleton | Thread | [xsl] spirit an xml element away an, Frank Marent |
Re: [xsl] spirit an xml element awa, Frank Marent | Date | [xsl] problem of result returned b, corine amel zayanie |
Month |