It's like I thought, you are copying the element with xsl:copy and this copies all the namespaces. In XSLT 2.0 you can set copy-namespaces="no", but in 1.0 you have to change from xsl:copy to xsl:element.
You're not using template rules to good advantage. Instead of adding an xsl:choose into your identity template with conditions like <xsl:when test="name()='char'">, define additional template rules, in this case <xsl:template match="char">.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference