[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] assigned variable value is changing


Subject: [xsl] assigned variable value is changing
From: Ganesh Babu N <nbabuganesh@xxxxxxxxx>
Date: Sat, 1 Aug 2009 13:28:28 +0530

Dear All,

input :

				<tbody>
					<row>
						<entry namest="c1" nameend="c3" align="left" valign="top">Table
1 Title</entry>
					</row>
					<row>
						<entry namest="c1" nameend="c2" align="left" valign="top">Table
1 TH C1 R1 and TH C2 R1 merged</entry>
						<entry align="left" valign="top">Table 1 TH C3 R1</entry>
					</row>
					<row>
						<entry align="left" valign="top">Table 1 TH C1 R2</entry>
						<entry align="left" valign="top">Table 1 TH C2 R2</entry>
						<entry align="left" valign="top">Table 1 TH C3 R2</entry>
					</row>
					<row>
						<entry align="left" valign="top">Table 1 TB C1 R4</entry>
						<entry align="left" valign="top">Table 1 TB C2 R4</entry>
						<entry align="left" valign="top">Table 1 TB C3 R4</entry>
					</row>
					<row>
						<entry align="left" valign="top">Table 1 TB C1 R5</entry>
						<entry align="left" valign="top" morerows="1">Table 1 TB C2 R5
and TB C2 R6 are merged</entry>
						<entry align="left" valign="top">Table 1 TB C3 R5</entry>
					</row>
					<row>
						<entry align="left" valign="top">Table 1 TB C1 R6</entry>
						<entry align="left" valign="top">Table 1 TB C3 R6</entry>
					</row>
				</tbody>


Output expected:

<table HeaderRowCount="0" FooterRowCount="0" BodyRowCount="6" ColumnCount="3">
   <cell Name="0:0" RowSpan="1" ColumnSpan="3">Table 1 Title</cell>
   <cell Name="0:1" RowSpan="1" ColumnSpan="2">Table 1 TH C1 R1 and TH
C2 R1 merged</cell>
   <cell Name="2:1" RowSpan="1" ColumnSpan="1">Table 1 TH C3 R1</cell>
   <cell Name="0:2" RowSpan="1" ColumnSpan="1">Table 1 TH C1 R2</cell>
   <cell Name="1:2" RowSpan="1" ColumnSpan="1">Table 1 TH C2 R2</cell>
   <cell Name="2:2" RowSpan="1" ColumnSpan="1">Table 1 TH C3 R2</cell>
   <cell Name="0:3" RowSpan="1" ColumnSpan="1">Table 1 TB C1 R4</cell>
   <cell Name="1:3" RowSpan="1" ColumnSpan="1">Table 1 TB C2 R4</cell>
   <cell Name="2:3" RowSpan="1" ColumnSpan="1">Table 1 TB C3 R4</cell>
   <cell Name="0:4" RowSpan="1" ColumnSpan="1">Table 1 TB C1 R5</cell>
   <cell Name="1:4" RowSpan="2" ColumnSpan="1">Table 1 TB C2 R5 and TB
C2 R6 are merged</cell>
   <cell Name="2:4" RowSpan="1" ColumnSpan="1">Table 1 TB C3 R5</cell>
   <cell Name="0:5" RowSpan="1" ColumnSpan="1">Table 1 TB C1 R6</cell>
   <cell Name="2:5" RowSpan="1" ColumnSpan="1">Table 1 TB C3 R6</cell>
</table>

Code tried:

	<xsl:template match="entry">
		<xsl:param name="colc">
			<xsl:number level="single" count="entry"/>
		</xsl:param>
		<cell>
			<xsl:attribute name="Name">
				<xsl:variable name="rowc">
					<xsl:number level="any" count="row"/>
				</xsl:variable>
				<xsl:if test="contains(preceding-sibling::entry[1],@namest)">
					<xsl:value-of select="$colc - 1 +
number(substring-after(preceding-sibling::entry[1]/@nameend,'c')) -
number(substring-after(preceding-sibling::entry[1]/@namest,'c'))"/>
				</xsl:if>
				<xsl:if test="not(contains(preceding-sibling::entry[1],@namest))">
					<xsl:value-of select="$colc - 1"/>
				</xsl:if>
				<xsl:text>:</xsl:text>
				<xsl:value-of select="$rowc - 1"/>
			</xsl:attribute>
</xsl:template>


Output from the code:

<table HeaderRowCount="0" FooterRowCount="0" BodyRowCount="6" ColumnCount="3">
   <cell Name="0:0" RowSpan="1" ColumnSpan="3">Table 1 Title</cell>
   <cell Name="0:1" RowSpan="1" ColumnSpan="2">Table 1 TH C1 R1 and TH
C2 R1 merged</cell>
   <cell Name="2:1" RowSpan="1" ColumnSpan="1">Table 1 TH C3 R1</cell>
   <cell Name="NaN:2" RowSpan="1" ColumnSpan="1">Table 1 TH C1 R2</cell>
   <cell Name="NaN:2" RowSpan="1" ColumnSpan="1">Table 1 TH C2 R2</cell>
   <cell Name="NaN:2" RowSpan="1" ColumnSpan="1">Table 1 TH C3 R2</cell>
   <cell Name="NaN:3" RowSpan="1" ColumnSpan="1">Table 1 TB C1 R4</cell>
   <cell Name="NaN:3" RowSpan="1" ColumnSpan="1">Table 1 TB C2 R4</cell>
   <cell Name="NaN:3" RowSpan="1" ColumnSpan="1">Table 1 TB C3 R4</cell>
   <cell Name="NaN:4" RowSpan="1" ColumnSpan="1">Table 1 TB C1 R5</cell>
   <cell Name="NaN:4" RowSpan="2" ColumnSpan="1">Table 1 TB C2 R5 and
TB C2 R6 are merged</cell>
   <cell Name="NaN:4" RowSpan="1" ColumnSpan="1">Table 1 TB C3 R5</cell>
   <cell Name="NaN:5" RowSpan="1" ColumnSpan="1">Table 1 TB C1 R6</cell>
   <cell Name="NaN:5" RowSpan="1" ColumnSpan="1">Table 1 TB C3 R6</cell>
</table>


I have declared a param "colc" and i am manipulating according to the
condition. But when i use condition the value of "colc" is changing.

I am unable to understand why the value is changing and how to stop
this change.

Regards,
Ganesh


Current Thread