logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

r13156 - in lxml/trunk/src/lxml: . tests: msg#00005

Subject: r13156 - in lxml/trunk/src/lxml: . tests
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.
         """


<Prev in Thread] Current Thread [Next in Thread>