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: pankaj.c@xxxxxxxxxxxxxxxxxx
Date: Sat, 8 Jan 2011 18:21:41 +0530
AHA!!!! Thanks Ken but I am using 1.0.





"G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> 
01/08/11 06:20 PM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc

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






At 2011-01-08 17:20 +0530, pankaj.c@xxxxxxxxxxxxxxxxxx wrote:
>Is there a way if I have XML.
>
><my_group count=3/>
>
>The output I am expecting is adding child element based on value of
>@count.
>
>Output something like
>
><my_group count="3">
>         <group name="type1"/>
>         <group name="type2"/>
>         <group name="type3"/>
></mygroup>
>
>Any ideas will be highly appreciated.

You don't say how your name= attributes are derived, so I guessed.

The answer below using XSLT 2 is quite straightforward.

I hope this helps.

. . . . . . . . . . Ken

T:\ftemp>type pankaj.xml
<my_group count="3"/>
T:\ftemp>type pankaj.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                 exclude-result-prefixes="xsd"
                 version="2.0">

<xsl:output indent="yes"/>

<xsl:template match="my_group">
   <xsl:copy>
     <xsl:copy-of select="@*"/>
     <xsl:for-each select="1 to xsd:integer(@count)">
       <group name="type{.}"/>
     </xsl:for-each>
   </xsl:copy>
</xsl:template>

</xsl:stylesheet>
T:\ftemp>xslt2 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>


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