[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Adding child element based on attribute value [XSLT 1.0]


Subject: Re: [xsl] Adding child element based on attribute value [XSLT 1.0]
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Sat, 08 Jan 2011 08:00:49 -0500

At 2011-01-08 18:21 +0530, pankaj.c@xxxxxxxxxxxxxxxxxx wrote:
AHA!!!! Thanks Ken but I am using 1.0.

Then the typical approach is the classical recursive call as shown below.


I hope this helps.

. . . . . . . . Ken

T:\ftemp>type pankaj.xml
<my_group count="3"/>
T:\ftemp>xslt pankaj.xml pankaj.xsl
<?xml version="1.0" encoding="utf-8"?>
<my_group count="3">
   <group name="type1"/>
   <group name="type2"/>
   <group name="type3"/>
</my_group>
T:\ftemp>type pankaj.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

<xsl:output indent="yes"/>

<xsl:template match="my_group">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:call-template name="group-out">
      <xsl:with-param name="count-down" select="@count"/>
    </xsl:call-template>
  </xsl:copy>
</xsl:template>

<xsl:template name="group-out">
  <xsl:param name="count-down"/>
  <xsl:param name="count-up" select="1"/>
  <xsl:if test="$count-up &lt;= $count-down">
    <group name="type{$count-up}"/>
    <xsl:call-template name="group-out">
      <xsl:with-param name="count-down" select="$count-down"/>
      <xsl:with-param name="count-up" select="$count-up + 1"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

</xsl:stylesheet>
T:\ftemp>

--
Contact us for world-wide XML consulting & instructor-led training
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal


Current Thread
Keywords
xml