xsl-list
[Top] [All Lists]

RE: changing node names in XML

2002-10-25 10:33:24
I'm sure there are better ways ... but this came to mind first:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:template match="/">
   <Employees>
     <xsl:apply-templates select="*"/>
   </Employees>
</xsl:template>
<xsl:template match="employee[count(child::*)&gt;0]">
        <folder>
                <xsl:copy-of select="attribute::*"/>
                <xsl:apply-templates select="*"/>
        </folder>
</xsl:template>
<xsl:template match="employee[count(child::*)=0]">
        <leaf>
                <xsl:copy-of select="attribute::*"/>
                <xsl:apply-templates select="*"/>
        </leaf>
</xsl:template>
</xsl:stylesheet>

HTH,
Jeff

-----Original Message-----
From: Vijay Mummaneni [mailto:vijaya(_dot_)mummaneni(_at_)sun(_dot_)com]
Sent: Friday, October 25, 2002 1:13 PM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] changing node names in XML



Hi,

I need to change the node names in my XML file based on a condition.
If a an element has children then the element name has to become
"folder",
and if an element has no children then its name has to become "leaf".
For example :

<Employees>
       <employee name="emp5" id="5">
              <employee name="emp2" id="2">
                     <employee name="emp1" id="1"/>
                     <employee name="emp4" id="4"/>
            </employee>
            <employee name="emp3" id="3"/>
       </employee>
</Employees>


As :

<Employees>
       <folder  name="emp5" id="5">
              <folder  name="emp2" id="2">
                     <leaf  name="emp1" id="1"/>
                     <leaf  name="emp4" id="4"/>
            </folder>
            <leaf  name="emp3" id="3"/>
       </folder>
</Employees>

I wanted to use XSLT. Do you have a hint how can I achieve that ?

Thanks
vijay



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

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



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