This should not work, because attribute nodes and namespace nodes in the data model are quite different things:
<xsl:attribute name="xmlns:abc">www.communicator.com</xsl:attribute>
This should work. It's defined to work by an erratum to the XSLT 1.0 specification. If it doesn't work you should raise a bug report:
<xsl:copy-of select="document('')//namespace::*"/>
This shouldn't work. xsl:value-of creates a text node, not a namespace node:
<xsl:value-of select="document('')//namespace::*"/>
The best solution, however, is to use a namespace alias:
<xsl:namespace-alias stylesheet-prefix="x" result-prefix="xsl"/>
and then create the stylesheet element using a literal result element:
<x:stylesheet>...</x:stylesheet>
There's an example under xsl:namespace-alias in the spec.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference