Use character-map
File: Data.xml <?xml version="1.0" encoding="iso-8859-1"?> <artist> <filename>aidan_oliver</filename> <p delete="yes"> <work>Innocence</work> </p> <p delete="yes"> E </p> </artist> File: Transform.xslt <?xml version="1.0"?> <!DOCTYPE xsl:stylesheet [ <!ENTITY start-comment ""> <!ENTITY end-comment ""> ]> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output use-character-maps="comment-delimiters" /> <xsl:character-map name="comment-delimiters"> <xsl:output-character character="&start-comment;" string="<!--" /> <xsl:output-character character="&end-comment;" string="-->" /> </xsl:character-map> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*" /> <xsl:apply-templates /> </xsl:copy> </xsl:template> <xsl:template match="*[@delete='yes']"> <xsl:text>&start-comment; </xsl:text> <xsl:copy-of select="." /> <xsl:text>&end-comment; </xsl:text> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?><artist> <filename>aidan_oliver</filename> <!-- <p delete="yes"> <work>Innocence</work> </p>--> <!-- <p delete="yes"> E </p>--> </artist>