diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
index 510817e..5b26da7 100644
--- a/Lib/xml/dom/minidom.py
+++ b/Lib/xml/dom/minidom.py
@@ -18,7 +18,7 @@
 _string = string
 del string
 
-from xml.dom import HierarchyRequestErr
+from xml.dom import HierarchyRequestErr, EMPTY_NAMESPACE
 
 # localize the types, and allow support for Unicode values if available:
 import types
@@ -329,7 +329,7 @@
     ownerElement = None
     childNodeTypes = (Node.TEXT_NODE, Node.ENTITY_REFERENCE_NODE)
 
-    def __init__(self, qName, namespaceURI="", localName=None, prefix=None):
+    def __init__(self, qName, namespaceURI=EMPTY_NAMESPACE, localName=None, prefix=None):
         # skip setattr for performance
         d = self.__dict__
         d["localName"] = localName or qName
@@ -394,7 +394,7 @@
     def itemsNS(self):
         L = []
         for node in self._attrs.values():
-            L.append(((node.URI, node.localName), node.value))
+            L.append(((node.namespaceURI, node.localName), node.value))
         return L
 
     def keys(self):
@@ -468,7 +468,7 @@
                       Node.COMMENT_NODE, Node.TEXT_NODE,
                       Node.CDATA_SECTION_NODE, Node.ENTITY_REFERENCE_NODE)
 
-    def __init__(self, tagName, namespaceURI=None, prefix="",
+    def __init__(self, tagName, namespaceURI=EMPTY_NAMESPACE, prefix=None,
                  localName=None):
         Node.__init__(self)
         self.tagName = self.nodeName = tagName
@@ -754,7 +754,7 @@
     if len(fields) == 2:
         return fields
     elif len(fields) == 1:
-        return ('', fields[0])
+        return (None, fields[0])
 
 
 class DocumentType(Node):
