Here is an example using XSLT 2.0 which assumes you pass in a parameter named to-delete which is a sequence of local names to be deleted:
Code:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="to-delete" as="xs:string*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = $to-delete]"/>
</xsl:stylesheet>
For instance, using AltovaXML tools, you could run that as follows to delete elements named 'a' and 'c':
AltovaXML.exe /xslt2 sheet.xsl /in file.xml /param to-delete="('a', 'c')"