xsl-list
[Top] [All Lists]

Process same template 2X?

2002-10-18 12:51:49
I want to transform this xml :

<?xml version="1.0" encoding="UTF-8"?>
<cats>
<category level="1" name="Business Law"/>
<category level="2" name="Corporations" parent="Business Law">
</category>
<category level="2" name="Nonprofit Corporations*" parent="Business Law">
</category>
</cats>

Into this xml:
<?xml version="1.0" encoding="UTF-8"?>
<cats>
<category name="Business Law"/>
   <subcat name="Corporations"/>
   <subcat name="Nonprofit Corporations*">
</category>
</cats>

It seems it should be simple but is giving me fits. Current stylesheet (stinks) is this:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
   <xsl:output indent="yes" method="xml"/>
       <xsl:template match="/cats">
       <cats>
<xsl:apply-templates select="category"/> </cats>
   </xsl:template>
   <xsl:template match="category">
   <xsl:if test="@level=1">
   <category>
<xsl:attribute name="name">
           <xsl:value-of select="@name"/>
       </xsl:attribute>
       <subcat>
           <xsl:attribute name="name">
           <xsl:value-of select="following-sibling::category/@name"/>
           </xsl:attribute>

       </subcat>
   </category>
   </xsl:if>
   </xsl:template>
   </xsl:stylesheet>

Current stlyesheet returns this:
<?xml version="1.0" encoding="UTF-8"?>

<cats>

 <category name="Business Law">

   <subcat name="Corporations"/>

 </category>

</cats>

the 3rd category node in the orginal xml does not get processed how can I assure all fllowing category nodes get processed?


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



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