minidom: access attribute value before printing it
         correct order of constructor args in createAttributeNS
pulldom: use symbolic names for uri and localnames
         correct usage of createAttribute and setAttributeNode signatures.
diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
index 80771ad..7d610c6 100644
--- a/Lib/xml/dom/minidom.py
+++ b/Lib/xml/dom/minidom.py
@@ -331,7 +331,7 @@
 
         for a_name in a_names:
             writer.write(" %s=\"" % a_name)
-            _write_data(writer, self._get_attributes()[a_name])
+            _write_data(writer, self._get_attributes()[a_name].value)
             writer.write("\"")
         if self.childNodes:
             writer.write(">")
@@ -429,7 +429,7 @@
 
     def createAttributeNS(self, namespaceURI, qualifiedName):
         prefix,localName = _nssplit(qualifiedName)
-        return Attr(namespaceURI, qualifiedName, localName, prefix)
+        return Attr(qualifiedName, namespaceURI, localName, prefix)
 
     def getElementsByTagNameNS(self, namespaceURI, localName):
         _getElementsByTagNameNSHelper(self, namespaceURI, localName)
diff --git a/Lib/xml/dom/pulldom.py b/Lib/xml/dom/pulldom.py
index 9f93d6a..f1e5126 100644
--- a/Lib/xml/dom/pulldom.py
+++ b/Lib/xml/dom/pulldom.py
@@ -27,26 +27,28 @@
         del self._ns_contexts[-1]
 
     def startElementNS(self, name, tagName , attrs):
-        if name[0]:
+        uri,localname = name
+        if uri:
             # When using namespaces, the reader may or may not
             # provide us with the original name. If not, create
             # *a* valid tagName from the current context.
             if tagName is None:
-                tagName = self._current_context[name[0]] + ":" + name[1]
-            node = self.document.createElementNS(name[0], tagName)
+                tagName = self._current_context[uri] + ":" + localname
+            node = self.document.createElementNS(uri, tagName)
         else:
             # When the tagname is not prefixed, it just appears as
-            # name[1]
-            node = self.document.createElement(name[1])
+            # localname
+            node = self.document.createElement(localname)
 
         for aname,value in attrs.items():
-            if aname[0]:
-                qname = self._current_context[name[0]] + ":" + aname[1]
-                attr = self.document.createAttributeNS(name[0], qname)
+            a_uri, a_localname = aname
+            if a_uri:
+                qname = self._current_context[a_uri] + ":" + a_localname
+                attr = self.document.createAttributeNS(a_uri, qname)
             else:
-                attr = self.document.createAttribute(name[0], name[1])
+                attr = self.document.createAttribute(a_localname)
             attr.value = value
-            node.setAttributeNode(qname, attr)
+            node.setAttributeNode(attr)
         
         parent = self.curNode
         node.parentNode = parent