Merge changes up to 1.10 from PyXML:
- implement hasAttribute and hasAttributeNS (1.7)
- Node.replaceChild():  Update the sibling nodes to point to newChild.  Set
  the .nextSibling attribute on oldChild instead of adding a .newChild
  attribute (1.9).
diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
index d078f39..98a75b9 100644
--- a/Lib/xml/dom/minidom.py
+++ b/Lib/xml/dom/minidom.py
@@ -145,8 +145,12 @@
             oldChild.parentNode = None
         newChild.nextSibling = oldChild.nextSibling
         newChild.previousSibling = oldChild.previousSibling
-        oldChild.newChild = None
+        oldChild.nextSibling = None
         oldChild.previousSibling = None
+        if newChild.previousSibling:
+            newChild.previousSibling.nextSibling = newChild
+        if newChild.nextSibling:
+            newChild.nextSibling.previousSibling = newChild
         return oldChild
 
     def removeChild(self, oldChild):
@@ -463,6 +467,12 @@
         del self._attrs[node.name]
         del self._attrsNS[(node.namespaceURI, node.localName)]
 
+    def hasAttribute(self, name):
+        return self._attrs.has_key(name)
+                     
+    def hasAttributeNS(self, namespaceURI, localName):
+        return self._attrsNS.has_key((namespaceURI, localName))    
+        
     def getElementsByTagName(self, name):
         return _getElementsByTagNameHelper(self, name, [])