xsl-list
[Top] [All Lists]

Re: Increment a variable

2005-08-18 07:31:18
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(_dot_)A(_at_)siemens(_dot_)com> 
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 &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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>