Do not use the default namespace for attributes.
Fixes http://bugs.debian.org/229885
Will backport to 2.3.
diff --git a/Lib/test/test_xmllib.py b/Lib/test/test_xmllib.py
index b14ead9..0780bc9 100644
--- a/Lib/test/test_xmllib.py
+++ b/Lib/test/test_xmllib.py
@@ -13,6 +13,8 @@
 <greeting>Hello, world!</greeting>
 """
 
+nsdoc = "<foo xmlns='URI' attr='val'/>"
+
 import warnings
 warnings.filterwarnings("ignore", ".* xmllib .* obsolete.*",
                         DeprecationWarning, r'xmllib$')
@@ -29,6 +31,18 @@
             parser.feed(c)
         parser.close()
 
+    def test_default_namespace(self):
+        class H(xmllib.XMLParser):
+            def unknown_starttag(self, name, attr):
+                self.name, self.attr = name, attr
+        h=H()
+        h.feed(nsdoc)
+        h.close()
+        # The default namespace applies to elements...
+        self.assertEquals(h.name, "URI foo")
+        # but not to attributes
+        self.assertEquals(h.attr, {'attr':'val'})
+
 
 def test_main():
     test_support.run_unittest(XMLParserTestCase)
diff --git a/Lib/xmllib.py b/Lib/xmllib.py
index f1cd2e4..2a189cd 100644
--- a/Lib/xmllib.py
+++ b/Lib/xmllib.py
@@ -6,8 +6,7 @@
 import string
 
 import warnings
-warnings.warn("The xmllib module is obsolete.  Use xml.sax instead.",
-              DeprecationWarning)
+warnings.warn("The xmllib module is obsolete.  Use xml.sax instead.", DeprecationWarning)
 del warnings
 
 version = '0.3'
@@ -641,20 +640,17 @@
                     aprefix, key = res.group('prefix', 'local')
                     if self.__map_case:
                         key = key.lower()
-                    if aprefix is None:
-                        aprefix = ''
-                    ans = None
-                    for t, d, nst in self.stack:
-                        if aprefix in d:
-                            ans = d[aprefix]
-                    if ans is None and aprefix != '':
-                        ans = self.__namespaces.get(aprefix)
-                    if ans is not None:
-                        key = ans + ' ' + key
-                    elif aprefix != '':
-                        key = aprefix + ':' + key
-                    elif ns is not None:
-                        key = ns + ' ' + key
+                    if aprefix is not None:
+                        ans = None
+                        for t, d, nst in self.stack:
+                            if aprefix in d:
+                                ans = d[aprefix]
+                        if ans is None:
+                            ans = self.__namespaces.get(aprefix)
+                        if ans is not None:
+                            key = ans + ' ' + key
+                        else:
+                            key = aprefix + ':' + key
                 nattrdict[key] = val
                 attrnamemap[key] = okey
             attrdict = nattrdict