I'm applying a transform to SVG documents, to make them validate against the SVG RNG schema.  I have everything working EXCEPT the name spaces on the SVG element itself.  These SVG documents where edited in Adobe Illistrator, and the original SVG element is:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" xmlns:graph="http://ns.adobe.com/Graphs/1.0/" xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/" xmlns:x="http://ns.adobe.com/Extensibility/1.0/" xmlns:xlink="http://www.w3.org/1999/xlink">


and what I want is:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

The stylesheet starts:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
    xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
    xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
    xmlns:graph="http://ns.adobe.com/Graphs/1.0/"
    xmlns:x="http://ns.adobe.com/Extensibility/1.0/"
    exclude-result-prefixes="xs xd a x graph"
    xpath-default-namespace="http://www.w3.org/2000/svg"
    version="2.0">


My understanding is that 'exclude-result-prefixes="xs xd a x graph"' should not copy over the namespaces identified, but a, x, and graph are still there in the output.   My main template is below, and it keeps the namespace & extensions off of the child elements of SVG, just not the SVG node itself.

   <xsl:template match="@*|node()">
      <xsl:choose>
         <xsl:when test=". = //i:pgf"/> <!-- This is the BLOB -->
         <xsl:when test=". = //@i:*" /> <!-- These three are all of the Adobe extensions -->
         <xsl:when test=". = //metadata"/>
         <xsl:when test=". = //foreignObject"/>
         <xsl:when test=". = //switch"> <!-- We do not want the switch elements, just their text nodes. -->
            <xsl:apply-templates select="node()"/>
         </xsl:when>
         <xsl:otherwise>
            <xsl:copy>
               <xsl:apply-templates select="@*|node()"/>
            </xsl:copy>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>
 

Any ideas?