variable incrementing problems

Subject: variable incrementing problems
From: Eugeny Kuzakov <kev@xxxxxxxxx>
Date: Mon, 28 Jun 1999 17:56:53 +0700 (OSS)
hi*

I am need correctly calculate rowspan attribute in result html-document.
I am have problems with it.

Question:
	In debug2 comment value of FolderRowspan variable correctly
	incrementes into need value.
	But after exit from <xsl:if> tag it keep previous value.
	What can I do?
Thanks.

--
	Best wishes, Eugeny Kuzakov
		Laboratory 321 ( Omsk, Russia )
		kev@xxxxxxxxx
		ICQ#: 5885106


<?xml version="1.0"?>

<document>
    <folder name="name1">
	<highligth>Some!</highligth>
	<highligth>Some2!</highligth>
	<desc>comment...</desc>
    </folder>
    <folder name="name2">
	<desc>comment...</desc>
	<subfolder name="name1">
	    <desc>Something in subfolder name1</desc>
	    <highligth>Some2!</highligth>
	</subfolder>
	<subfolder name="name2">
	    <desc>Something in subfolder name2</desc>
	</subfolder>
	<highligth>Some!</highligth>
    </folder>
    <folder name="name3">
	<desc>comment...</desc>
	<subfolder name="name1">
	    <desc>Something in subfolder name1</desc>
	</subfolder>
	<subfolder name="name2">
	    <desc>Something in subfolder name2</desc>
	</subfolder>
	<subfolder name="name3">
	    <desc>Something in subfolder name3</desc>
	    <highligth>Some2!</highligth>
	</subfolder>
	<highligth>Anything!</highligth>
    </folder>
    <folder name="name4">
	<desc>comment...</desc>
    </folder>
</document>
<?xml version="1.0"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/XSL/Transform/1.0";
                  xmlns="http://www.w3.org/TR/REC-html40";
                  default-space="strip"
                  indent-result="yes"
    result-ns="">

<xsl:template match="document">
    <html>
	<head>
	    <title>Title</title>
	</head>
	<body bgcolor="white">
	    <xsl:apply-templates select="folder"/>
	</body>
    </html>
</xsl:template>


<xsl:template match="folder">
    <xsl:variable name="FolderRowspan"><xsl:value-of select="count(subfolder)*2+1"/></xsl:variable>
    <xsl:comment>debug1: Before if:<xsl:value-of select="$FolderRowspan"/></xsl:comment>
    <xsl:if test="count(highligth)+count(subfolder/highligth) &gt; 0">
	<xsl:variable name="FolderRowspan"><xsl:value-of select="$FolderRowspan+1"/></xsl:variable>
	<xsl:comment>Debug2: in if after increase:<xsl:value-of select="$FolderRowspan"/></xsl:comment>
    </xsl:if>
    <xsl:comment>Debug3: after if:<xsl:value-of select="$FolderRowspan"/></xsl:comment>

    <table border="1">
	<xsl:if test="$FolderRowspan &gt; 1">
	    <tr>
		<td>
		    <xsl:attribute name="rowspan">
			<xsl:value-of select="$FolderRowspan"/>
		    </xsl:attribute>
		    <xsl:comment>I will glad to insert here nbsp entity</xsl:comment>
		    <font color="white">_</font>
		</td>
		<td>
		    <b>Folder</b>:<xsl:value-of select="desc"/>
		</td>
    	    </tr>
	</xsl:if>

	<xsl:if test="number($FolderRowspan) = 1">
	    <tr>
		<td>
		    <xsl:comment>I will glad to insert here nbsp entity</xsl:comment>
		    <font color="white">_</font>
		</td>
		<td>
		    <b>Folder</b>:<xsl:value-of select="desc"/>
		</td>
	    </tr>
	</xsl:if>


	<xsl:for-each select="./subfolder">
	    <tr>
		<td>
	    	    <b>Subfolder</b>: <xsl:value-of select="@name"/>
		</td>
	    </tr>
	    <tr>
		<td>
		    <xsl:value-of select="desc"/>
		</td>
	    </tr>
	</xsl:for-each>
	<xsl:if test="count(highligth) &gt; 1">
	    <tr>
		<td>
		    <b><xsl:for-each select="highligth">
			<xsl:value-of select="."/>;
		    </xsl:for-each>
		    <xsl:for-each select="subfolder/highligth">
			<xsl:value-of select="."/>;
		    </xsl:for-each></b>
		</td>
	    </tr>
	</xsl:if>
    </table>
    <br />
</xsl:template>

</xsl:stylesheet>
Current Thread