use for-each to output xml tags
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <emailList> <person> <name>person1</name> <email>p@hotmail.com</email> </person> <person> <name>person2</name> <email>p@hotmail.com</email> </person> <person> <name>person3</name> <email>p3@hotmail.com</email> </person> </emailList> File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <contacts> <xsl:for-each select="emailList/person"> <contact> <fullName> <xsl:value-of select="name"/> </fullName> <eMail> <xsl:value-of select="email"/> </eMail> </contact> </xsl:for-each> </contacts> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <contacts> <contact> <fullName>person1</fullName> <eMail>p@hotmail.com</eMail> </contact> <contact> <fullName>person2</fullName> <eMail>p@hotmail.com</eMail> </contact> <contact> <fullName>person3</fullName> <eMail>p3@hotmail.com</eMail> </contact> </contacts>