Package fixes.
[shibboleth/xmltooling.git] / xmltooling / AbstractAttributeExtensibleXMLObject.cpp
index d0e8242..2efde22 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2006 Internet2
+ *  Copyright 2001-2007 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -55,25 +55,22 @@ void AbstractAttributeExtensibleXMLObject::setAttribute(const QName& qualifiedNa
     if (i!=m_attributeMap.end()) {
         releaseThisandParentDOM();
         XMLString::release(&(i->second));
-        if (value) {
+        if (value && *value) {
             i->second=XMLString::replicate(value);
+            if (ID)
+                m_idAttribute=i;
         }
         else {
             if (m_idAttribute==i)
                 m_idAttribute=m_attributeMap.end();
             m_attributeMap.erase(i);
         }
-        
-        if (ID) {
-            m_idAttribute=i;
-        }
     }
-    else if (value) {
+    else if (value && *value) {
         releaseThisandParentDOM();
         m_attributeMap[qualifiedName]=XMLString::replicate(value);
-        if (ID) {
+        if (ID)
             m_idAttribute = m_attributeMap.find(qualifiedName);
-        } 
     }
 }
 
@@ -94,7 +91,7 @@ void AbstractAttributeExtensibleXMLObject::marshallExtensionAttributes(DOMElemen
         if (i->first.hasPrefix())
             attr->setPrefix(i->first.getPrefix());
         attr->setNodeValue(i->second);
-        domElement->setAttributeNode(attr);
+        domElement->setAttributeNodeNS(attr);
         if (m_idAttribute==i)
             domElement->setIdAttributeNode(attr);
     }