From cf0a1cc41705e27a8dd81536bb6a1b468bc22c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Tue, 3 Oct 2000 22:35:29 +0000 Subject: [PATCH] Support non-namespace elements in *ElementNS of XMLGenerator. --- Lib/test/test_sax.py | 6 +++++- Lib/xml/sax/saxutils.py | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py index 2b09cd6801c..1760eb27974 100644 --- a/Lib/test/test_sax.py +++ b/Lib/test/test_sax.py @@ -112,11 +112,15 @@ def test_xmlgen_ns(): gen.startDocument() gen.startPrefixMapping("ns1", ns_uri) gen.startElementNS((ns_uri, "doc"), "ns1:doc", {}) + # add an unqualified name + gen.startElementNS((None, "udoc"), None, {}) + gen.endElementNS((None, "udoc"), None) gen.endElementNS((ns_uri, "doc"), "ns1:doc") gen.endPrefixMapping("ns1") gen.endDocument() - return result.getvalue() == start + ('' % + return result.getvalue() == start + \ + ('' % ns_uri) # ===== XMLFilterBase diff --git a/Lib/xml/sax/saxutils.py b/Lib/xml/sax/saxutils.py index a25b41f0963..892f34dc1cb 100644 --- a/Lib/xml/sax/saxutils.py +++ b/Lib/xml/sax/saxutils.py @@ -62,7 +62,12 @@ class XMLGenerator(handler.ContentHandler): self._out.write('' % name) def startElementNS(self, name, qname, attrs): - name = self._current_context[name[0]] + ":" + name[1] + if name[0] is None: + # if the name was not namespace-scoped, use the unqualified part + name = name[1] + else: + # else try to restore the original prefix from the namespace + name = self._current_context[name[0]] + ":" + name[1] self._out.write('<' + name) for pair in self._undeclared_ns_maps: @@ -75,7 +80,10 @@ class XMLGenerator(handler.ContentHandler): self._out.write('>') def endElementNS(self, name, qname): - name = self._current_context[name[0]] + ":" + name[1] + if name[0] is None: + name = name[1] + else: + name = self._current_context[name[0]] + ":" + name[1] self._out.write('' % name) def characters(self, content):