Altova Mailing List Archives
>xsl-list Archive Home
>Thread Prev - [xsl] Splitting files 5 at a time
RE: [xsl] Splitting files 5 at a time
Date: 4/2/2008 7:58:00 PM
Thank you Andrew, that worked perfectly. For some reason I could not get David Carlisle's method to work. I was not even getting multiple files outputted. Something in ALTOVA (the engine I am using) was not liking the for-each line. Danny -----Message d'origine----- De : Houghton,Andrew [mailto:houghtoa@xxxxxxxx] Envoyi : April 2, 2008 2:40 PM @ : xsl-list@xxxxxxxxxxxxxxxxxxxxxx Objet : RE: [xsl] Splitting files 5 at a time > From: Danny Leblanc [mailto:leblancd@xxxxxxxxxxxxxxxxxxx] > Sent: 02 April, 2008 14:08 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Splitting files 5 at a time > > I have played with the for-each since I won't need a loop > iteration per CUSTOMER anymore but 1 per 5 so I tried something like > > <xsl:for-each select="DATA_FILE/CUSTOMER[count() mod 5 = 0"> > > But this did not work. I am certain I will have to change > the apply-templates as well but I have not even gotten to > that point yet. I recently had to do something similar, so perhaps you could modify what I did to fit your situation. My problem was that I had a list of n items and I wanted to group the list by the first two items, then the next two items, etc. This is basically what I came up with: <xsl:for-each-group select="$values" group-by="ceiling(position() div 2)" > <xsl:variable name="first" select="current-group()"/> <xsl:variable name="second" select="current-group()"/> <!-- ... --> </xsl:for-each-group> So I'm thinking that you could do: <xsl:for-each-group select="DATA_FILE/CUSTOMER" group-by="ceiling(position() div 5)" > <xsl:result-document ...> </xsl:result-document> </xsl:for-each-group> Andy.