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 < $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>
--~--