Subject:XSL to Excel - Tiling Columns from Left to Right Author:Brandon H. Date:28 Nov 2005 02:07 PM
I am working with an XSL transformation which formats an excel report from the XML datafile it is applied to. I am having a problem with creating the report layout, where I need to tile sections of data into groups from left to right. (i.e.)
So, I need to somehow setup a loop to build these three (if there happens to be 3) sections of data one row at a time, but 3 sets of data at a time. I am not sure if this is making sense, but it would be a basic loop where I would find out how many sets are in this reports, be it 2, 6, or 9 etc... then I would divide this total by the 3 (for the three columns) and then I would loop this process until all the Data was displayed.
I am not sure if there is an easy way to accomplish this with XSL, or if there is some upfront work I can do to make it much less complicated in the actual XSL file?
Subject:XSL to Excel - Tiling Columns from Left to Right Author:(Deleted User) Date:28 Nov 2005 02:56 PM
Brandon,
There was a similar question last week. The technique I recommended goes something like this:
<xsl:variable name="nodes" select="select all the nodes to be laid out 3 across"/>
<xsl:for-each select="$nodes">
<xsl:if test="(position() mod 3) = 1">
<xsl:variable name="posnP1" select="position()+1"/>
<xsl:variable name="posnP2" select="position()+2"/>
<newrow>
- generate cell for select="."
- generate cell for select="$nodes[$posnP1]"
- generate cell for select="$nodes[$posnP2]"
</newrow>
</xsl:if>
</xsl:for-each>