I found an elegant solution for that problem here: xsl for-each: add code block every n rows?
I’d like to understand the xslt code and I was wondering if you could help me to understand it by taking a look at the link provided above.
Basically there are 3 <xsl:template>. To me the first 2 ones are enough to achieve the purpose. However I tried with only 2 <xsl:template> and it doesn’t work. In short the third one is required. Here it is:
<xsl:template match="gallery[not(position() mod 6 = 1)]"/>
The second template has a mode while the last one has not.
I have no idea when the last one is executed. Could you please help me to figure out it?
Thanks for your help.
Regards,
Roland
Here is the complete code you were asking about. I happen to be the author, so let me explain:
The following template overrides the XSLT built-in template for element nodes.
It matches every 6k+1th
galleryelement. It cretes atrelement and inside its body puts the results of processing thisgalleryelement togeether with the next 5. The processing is done in a special mode (“proc”) to distinguish this from the default anonymous mode in which the XSLT built-in templates started and continue to operate.The following template is invoked in mode “proc” to process every
galleryelement in a group of 6 that should be in the same row.The following template overrides the default processing of the XSLT built-in templates for all
galleryelements, whose position is not of the type 6k+1 (they are not starting a new 6-tuple). It says simply not to do anything with any such element, because these elements are already processed in “proc” mode.You need to acquaint yourself with XSLT’s processing model, default processing and built-in templates.