Subject: Re: [xsl] table formating From: Michael Kay <mike@xxxxxxxxxxxx> Date: Wed, 26 Jan 2011 14:08:28 +0000 |
<xsl:template match="row"> <xsl:for-each-group select="cell" group-starting-with="cell[@index]"> <xsl:for-each select="current-group()"> <cell index="{current-group()[1]/@index + position() - 1}"> <xsl:copy-of select="child::node()"/> </ </ </ </
Michael Kay Saxonica
Hi,
Again This have to ask you people for help because I'm stuck.
This is an abstract of what my input looks like:
<row> <cell> <absatz>Sozialversicherung (1.650,00 * 18,07 %)</absatz> </cell> <cell index="3"> </cell> <cell> </cell> <cell index="6"> <absatz>298.16</absatz> </cell> </row>
So the index of a<cell> says what its position in a<row> should be. My desired output is:
<row> <cell> <absatz>Sozialversicherung (1.650,00 * 18,07 %)</absatz> </cell> <cell></cell> <cell index="3"> </cell> <cell> </cell> <cell></cell> <cell index="6"> <absatz>298.16</absatz> </cell> </row>
NOTE: It's not sure that there are always 2 cells with @index. Could be more or less too.
I've tried this: <xsl:template match="cell[@index]"> <xsl:variable name="prec_cells" select="xs:integer(count(preceding-sibling::cell[not(@index)]) + sum(preceding-sibling::cell/@index))"/> <xsl:for-each select="1 to xs:integer((@index - 1) - $prec_cells)"> <entry> <absatz/> </entry> </xsl:for-each> <entry> <xsl:apply-templates/> </entry> </xsl:template>
Unfortunately this only works for 1<cell> with @index per<row>.
Can anyone tell me how to solve that ?!
Kind regards
. . . . . . . . . . . . . . . . . . . . . . . . . . Patrick Szabo XSLT-Entwickler LexisNexis Marxergasse 25, 1030 Wien
mailto:patrick.szabo@xxxxxxxxxxxxx Tel.: +43 (1) 534 52 - 1573 Fax: +43 (1) 534 52 - 146
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] table formating, Szabo, Patrick \(LNG | Thread | AW: [xsl] table formating, Szabo, Patrick \(LNG |
[xsl] table formating, Szabo, Patrick \(LNG | Date | AW: [xsl] table formating, Szabo, Patrick \(LNG |
Month |