<!--- Create an XML string that has a root node that gets repeated within the body of the XML as well. ---> <cfsavecontent variable="strXmlData"> <list id="my-to-do-list"> <item> List Item A </item> <item> List Item B </item> <item> <list> <item> Sub Item A </item> <item> Sub Item B </item> </list> </item> <item> List Item D </item> </list> </cfsavecontent> <!--- Define XSLT to repace the root node. ---> <cfsavecontent variable="strXSLData"> <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!--- Define new root node name BELOW. ---> <xsl:variable name="new-root-node"> <xsl:text>masterlist</xsl:text> </xsl:variable> <!--- Define new root node name ABOVE. ---> <!--- --------------------------------------------- ---> <!--- Match the root node. ---> <xsl:template match="/*"> <!--- Create a new element with new node name. ---> <xsl:element name="{$new-root-node}"> <!--- Copy all attributes of the existing root node into the new root node. ---> <xsl:for-each select="@*"> <xsl:attribute name="{name()}"> <xsl:value-of select="." /> </xsl:attribute> </xsl:for-each> <!--- Copy all children of the root node. ---> <xsl:copy-of select="*" /> </xsl:element> </xsl:template> </xsl:transform> </cfsavecontent> <!--- Transform the XML. ---> <cfset xmlNew = XmlTransform( Trim( strXmlData ), Trim( strXSLData ) ) /> <!--- Output new XML document with new root node. ---> <cfdump var="#XmlParse( xmlNew )#" label="New XML Root" />