Author: faassen
Date: Tue Jun 7 18:41:45 2005
New Revision: 13156
Modified:
lxml/trunk/src/lxml/etree.pyx
lxml/trunk/src/lxml/tests/test_etree.py
Log:
Propagate namespace resolvers better.
Modified: lxml/trunk/src/lxml/etree.pyx
==============================================================================
--- lxml/trunk/src/lxml/etree.pyx (original)
+++ lxml/trunk/src/lxml/etree.pyx Tue Jun 7 18:41:45 2005
@@ -934,11 +934,14 @@
# XXX what if element and file are both not None?
if element is not None:
+ # carry along resolver if not overridden
+ if ns_resolver is None:
+ ns_resolver = element._doc._ns_resolver
c_next = element._c_node.next
tree.xmlDocSetRootElement(etree._c_doc, element._c_node)
_moveTail(c_next, element._c_node)
changeDocumentBelow(element, etree)
-
+
etree._ns_resolver = ns_resolver
return etree
Modified: lxml/trunk/src/lxml/tests/test_etree.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_etree.py (original)
+++ lxml/trunk/src/lxml/tests/test_etree.py Tue Jun 7 18:41:45 2005
@@ -1541,7 +1541,18 @@
self.assertEquals(
'<bar xmlns="http://ns.infrae.com/foo"
xmlns:hoi="http://ns.infrae.com/hoi" hoi:test="value"></bar>',
self._writeElement(e))
-
+
+ def test_namespaces_elementtree(self):
+ etree = self.etree
+ r = etree.NsResolver({None: 'http://ns.infrae.com/foo',
+ 'hoi': 'http://ns.infrae.com/hoi'})
+ e = etree.Element('{http://ns.infrae.com/foo}z', ns_resolver=r)
+ tree = etree.ElementTree(element=e)
+ etree.SubElement(e, '{http://ns.infrae.com/hoi}x')
+ self.assertEquals(
+ '<z xmlns="http://ns.infrae.com/foo"
xmlns:hoi="http://ns.infrae.com/hoi"><hoi:x></hoi:x></z>',
+ self._writeElement(e))
+
def _writeElement(self, element):
"""Write out element for comparison.
"""
|