Creating New Elements



For example, given this XML document (animals.xml):
   <?xml version="1.0"?> 
   <animals>
      <animal name="dog" class="mammal" legs="4"/>
      <animal name="shark" class="fish" legs="0"/>
      <animal name="chicken" class="bird" legs="2"/>
   </animals>
Transform it to this XML document (pets.xml):
   <?xml version="1.0" encoding="UTF-8"?>
   <pets>
      <mammal>
         <name>dog</name>
         <legs>4</legs>
      </mammal>
      <fish>
         <name>shark</name>
         <legs>0</legs>
      </fish>
      <bird>
         <name>chicken</name>
         <legs>2</legs>
      </bird>
   </pets>
We use this XSL Style Sheet:
   <?xml version="1.0"?> 
   <xsl:stylesheet version="1.0" 
                   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:output indent="yes"/>
       <xsl:template match="animals">
            <pets>
               <xsl:apply-templates select="animal"/>
            </pets>
       </xsl:template>

       <xsl:template match="animal">
            <xsl:element name="{@class}">
                 <name><xsl:value-of select="@name"/></name>
                 <legs><xsl:value-of select="@legs"/></legs>
            </xsl:element>
       </xsl:template>
   </xsl:stylesheet>