Subject: Re: [xsl] Increment a variable From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx> Date: Thu, 18 Aug 2005 20:01:18 +0530 |
Hi Chandu, The following XSLT 2.0 stylesheet might be helpful (though it does'nt generate numbers for gridx and gridy properly). I have tested this with Saxon 8.4. <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" /> <xsl:template match="/Parameters"> <Parameters xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:for-each select="parameter"> <xsl:call-template name="generateElem"> <xsl:with-param name="node" select="." /> <xsl:with-param name="x" select="position()-1" /> </xsl:call-template> </xsl:for-each> </Parameters> </xsl:template> <xsl:template name="generateElem"> <xsl:param name="node" /> <xsl:param name="x" /> <xsl:element name="{name($node)}"> <xsl:attribute name="gridx" select="$x" /> <xsl:attribute name="gridy" select="$x + 1" /> <xsl:value-of select="$node" /> </xsl:element> </xsl:template> </xsl:stylesheet> Regards, Mukul On 8/18/05, ChandraShekar, A <ChandraShekar.A@xxxxxxxxxxx> wrote: > 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 < $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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Increment a variable, David Carlisle | Thread | RE: [xsl] Increment a variable, ChandraShekar, A |
Re: [xsl] Annoying XSLT code, Jirka Kosek | Date | Re: [xsl] Annoying XSLT code, Jonas Lundberg |
Month |