]> git.phdru.name Git - extfs.d.git/blobdiff - xml
xml version 1.1.3: fix a minor bug in handling namespaces
[extfs.d.git] / xml
diff --git a/xml b/xml
index e8049dd146e85617042f90f364c0e2ca413bc73d..4822ab8c6005edc39c7995afe1fd856adcc62883 100755 (executable)
--- a/xml
+++ b/xml
@@ -14,7 +14,7 @@ file the command is "%cd"): cd file/xml://; in older versions it is
 cd file#xml, where "file" is the name of your XML file.
 
 See detailed installation instructions at
-http://phdru.name/Software/mc/INSTALL.html.
+http://phdru.name/Software/mc/xml_INSTALL.html.
 
 The VFS represents tags as directories; the directories are numbered to
 distinguish tags with the same name; numbering also helps to sort tags by their
@@ -40,9 +40,9 @@ The VFS was inspired by a FUSE xmlfs: https://github.com/halhen/xmlfs
 
 """
 
-__version__ = "1.1.0"
+__version__ = "1.1.3"
 __author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2013 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2013-2015 PhiloSoft Design"
 __license__ = "GPL"
 
 force_implementation = None  # Can be None for default choice,
@@ -259,7 +259,7 @@ if use_elementtree or use_lxml:
 if use_elementtree:
     class ElementTreeXmlVfs(CommonEtreeXmlVfs):
         def parse(self):
-            # Copied from http://effbot.org/zone/element-pi.ht
+            # Copied from http://effbot.org/zone/element-pi.htm
 
             class PIParser(ET.XMLTreeBuilder):
 
@@ -327,9 +327,10 @@ if use_lxml:
             this_nsmap = node.nsmap
             parent = node.getparent()
             if parent is not None:
-                parents_nsmap = parent.nsmap
-                for key in parents_nsmap:
-                    del this_nsmap[key]
+                parent_nsmap = parent.nsmap
+                for key in parent_nsmap:
+                    if this_nsmap[key] == parent_nsmap[key]:
+                        del this_nsmap[key]
             return this_nsmap
 
         def has_ns(self, node):
@@ -338,8 +339,10 @@ if use_lxml:
         def ns2text(self, node):
             ns_accumulator = []
             for name, value in self._get_local_ns(node).items():
-                if name is None: name = ''
-                name = name.encode(default_encoding, "replace")
+                if name:
+                    name = name.encode(default_encoding, "replace")
+                else:
+                    name = 'xmlns'
                 value = value.encode(default_encoding, "replace")
                 ns_accumulator.append("%s=%s" % (name, value))
             return '\n'.join(ns_accumulator)