1.1 --- a/libxml2dom/macrolib/__init__.py Mon Dec 12 10:35:07 2005 +0000
1.2 +++ b/libxml2dom/macrolib/__init__.py Mon Dec 12 10:35:35 2005 +0000
1.3 @@ -2,7 +2,7 @@
1.4
1.5 "DOM macro library for libxml2."
1.6
1.7 -__version__ = "0.3.1"
1.8 +__version__ = "0.3.2"
1.9
1.10 # Expose all functions here.
1.11
2.1 --- a/libxml2dom/macrolib/macrolib.py Mon Dec 12 10:35:07 2005 +0000
2.2 +++ b/libxml2dom/macrolib/macrolib.py Mon Dec 12 10:35:35 2005 +0000
2.3 @@ -211,9 +211,17 @@
2.4 def Node_setAttributeNS(node, ns, name, value):
2.5 ns, name, value = map(from_unicode, [ns, name, value])
2.6 prefix, localName = _get_prefix_and_localName(name)
2.7 - if ns is not None:
2.8 - if prefix == "xmlns" and ns == xml.dom.XMLNS_NAMESPACE and _find_namespace(node, value, localName):
2.9 +
2.10 + # Detect setting of xmlns:localName=value, looking for cases where
2.11 + # x:attr=value have caused the definition of xmlns:x=y (as a declaration
2.12 + # with prefix=x, ns=y).
2.13 + if prefix == "xmlns" and ns == xml.dom.XMLNS_NAMESPACE:
2.14 + if _find_namespace(node, value, localName):
2.15 return
2.16 + new_ns = _make_namespace(node, value, localName, set_default=0)
2.17 + # For non-xmlns attributes, we find or make a namespace declaration and then
2.18 + # set an attribute.
2.19 + elif ns is not None:
2.20 new_ns = _find_namespace(node, ns, prefix)
2.21 if new_ns is None:
2.22 new_ns = _make_namespace(node, ns, prefix, set_default=0)