File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <europe> <scandinavia> <state>Finland</state> <state>Sweden</state> <state>Iceland</state> <state>Norway</state> <state>Denmark</state> </scandinavia> </europe> File: Transform.xslt <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sc="http://www.java2s.com/scand" xmlns:scand="http://www.java2s.com/scandinavia" xmlns:nr="http://www.java2s.com/scandinavia" exclude-result-prefixes="scand nr"> <xsl:output method="xml" indent="yes" encoding="ISO-8859-1" /> <xsl:template match="europe"> <xsl:apply-templates select="scandinavia" /> </xsl:template> <xsl:template match="scandinavia"> <sc:scandinavia> <xsl:apply-templates select="state"> <xsl:sort /> </xsl:apply-templates> </sc:scandinavia> </xsl:template> <xsl:template match="state"> <sc:country> <xsl:value-of select="." /> </sc:country> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="ISO-8859-1"?> <sc:scandinavia xmlns:sc="http://www.java2s.com/scand"> <sc:country>Denmark</sc:country> <sc:country>Finland</sc:country> <sc:country>Iceland</sc:country> <sc:country>Norway</sc:country> <sc:country>Sweden</sc:country> </sc:scandinavia>