Copy the current context node together with any child nodes and attributes to the result document without converting it to a string.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template name="test"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet>
You can use xsl:copy-of instead of xsl:value-of to copy a node-set into a variable.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="contacts"> <xsl:copy-of select="/contacts/*"/> </xsl:variable> <xsl:template name="test"> <xsl:for-each select="$contacts"> <xsl:apply-templates/> </xsl:for-each> </xsl:template> </xsl:stylesheet>