RE: [xsl] Increment a variable

Subject: RE: [xsl] Increment a variable
From: "ChandraShekar, A" <ChandraShekar.A@xxxxxxxxxxx>
Date: Thu, 18 Aug 2005 18:49:45 +0530
Hello xsl-list,

	I can't figure out what is the problem in my code. Please can
any body help me.

Source:

	<?xml version="1.0" encoding="UTF-8"?>
	<Parameters>
		<parameter>
			<name>Param1
			</name>
		</parameter>
		<parameter>
			<name>Param2
			</name>
		</parameter>
		<parameter>
			<name>Param3
			</name>
		</parameter>
		<parameter>
			<name>Param4
			</name>
		</parameter>
		<parameter>
			<name>Param5
			</name>
		</parameter>
	</Parameters>

Xslt code:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:fo="http://www.w3.org/1999/XSL/Format";>
<xsl:output method="xml"></xsl:output>
	<xsl:template match="/">
		<xsl:apply-templates select="Parameters">
		</xsl:apply-templates>
	</xsl:template>
	<xsl:template match="Parameters">
		<parameters>
			<xsl:apply-templates select="parameter">
				<xsl:with-param name="x" select="0"/>

				<xsl:with-param name="y" select="0"/>
				<xsl:with-param name="start"
select="0"/>
				<xsl:with-param name="count"
select="count(parameter)"/>
			</xsl:apply-templates>
		</parameters>
	</xsl:template>
	<xsl:template match="parameter">
		<xsl:param name="x" select="0"/>
		<xsl:param name="y" select="0"/>
		<xsl:param name="start" select="0"/>
		<xsl:param name="count" select="0"/>
		<parameter gridx="{$x}" gridy="{$y}">
			<xsl:value-of select=".">
			</xsl:value-of>
		</parameter>
		<xsl:if test="$start &lt; $count">
			<xsl:variable name="temp1" select="$x"/>
			<xsl:variable name="temp2" select="$y+1"/>
			<xsl:variable name="tempy" select="$temp2 mod
2"/>
			<xsl:message>
				<xsl:value-of select="$tempy"/>
			</xsl:message>
			<xsl:choose>
				<xsl:when test="$tempy=0">
					<xsl:variable name="tempx"
select="$temp1+1"/>
						<xsl:apply-templates
select=".">
							<xsl:with-param
name="x" select="$tempx"/>
							<xsl:with-param
name="y" select="$tempy"/>
							<xsl:with-param
name="start" select="$start+1"/>
							<xsl:with-param
name="count" select="$count"/>
						</xsl:apply-templates>
				</xsl:when>

				<xsl:otherwise>
					<xsl:variable name="tempx"
select="$temp1"/>
						<xsl:apply-templates
select=".">
							<xsl:with-param
name="x" select="$tempx"/>
							<xsl:with-param
name="y" select="$tempy"/>
							<xsl:with-param
name="start" select="$start+1"/>
							<xsl:with-param
name="count" select="$count"/>
						</xsl:apply-templates>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:if>
	</xsl:template>
</xsl:stylesheet>

Destination expected:

  <?xml version="1.0" encoding="UTF-16" ?>
- <parameters xmlns:fo="http://www.w3.org/1999/XSL/Format";>
  <parameter gridx="0" gridy="0">Param1</parameter>
  <parameter gridx="0" gridy="1">Param2</parameter>
  <parameter gridx="1" gridy="0">Param3</parameter>
  <parameter gridx="1" gridy="1">Param4</parameter>
  <parameter gridx="2" gridy="0">Param5</parameter>
  </parameters>

But the result is :

  <?xml version="1.0" encoding="UTF-16" ?>
- <parameters xmlns:fo="http://www.w3.org/1999/XSL/Format";>
  <parameter gridx="0" gridy="0">Param1</parameter>
  <parameter gridx="0" gridy="1">Param1</parameter>
  <parameter gridx="1" gridy="0">Param1</parameter>
  <parameter gridx="1" gridy="1">Param1</parameter>
  <parameter gridx="2" gridy="0">Param1</parameter>
  <parameter gridx="2" gridy="1">Param1</parameter>
  <parameter gridx="0" gridy="0">Param2</parameter>
  <parameter gridx="0" gridy="1">Param2</parameter>
  <parameter gridx="1" gridy="0">Param2</parameter>
  <parameter gridx="1" gridy="1">Param2</parameter>
  <parameter gridx="2" gridy="0">Param2</parameter>
  <parameter gridx="2" gridy="1">Param2</parameter>
  <parameter gridx="0" gridy="0">Param3</parameter>
  <parameter gridx="0" gridy="1">Param3</parameter>
  <parameter gridx="1" gridy="0">Param3</parameter>
  <parameter gridx="1" gridy="1">Param3</parameter>
  <parameter gridx="2" gridy="0">Param3</parameter>
  <parameter gridx="2" gridy="1">Param3</parameter>
  <parameter gridx="0" gridy="0">Param4</parameter>
  <parameter gridx="0" gridy="1">Param4</parameter>
  <parameter gridx="1" gridy="0">Param4</parameter>
  <parameter gridx="1" gridy="1">Param4</parameter>
  <parameter gridx="2" gridy="0">Param4</parameter>
  <parameter gridx="2" gridy="1">Param4</parameter>
  <parameter gridx="0" gridy="0">Param5</parameter>
  <parameter gridx="0" gridy="1">Param5</parameter>
  <parameter gridx="1" gridy="0">Param5</parameter>
  <parameter gridx="1" gridy="1">Param5</parameter>
  <parameter gridx="2" gridy="0">Param5</parameter>
  <parameter gridx="2" gridy="1">Param5</parameter>
  </parameters>

Thanks in advance,
Chandu

Current Thread