Support non-namespace elements in *ElementNS of XMLGenerator.
This commit is contained in:
parent
1654b43ef7
commit
cf0a1cc417
|
@ -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 + ('<ns1:doc xmlns:ns1="%s"></ns1:doc>' %
|
||||
return result.getvalue() == start + \
|
||||
('<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>' %
|
||||
ns_uri)
|
||||
|
||||
# ===== XMLFilterBase
|
||||
|
|
|
@ -62,7 +62,12 @@ class XMLGenerator(handler.ContentHandler):
|
|||
self._out.write('</%s>' % 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('</%s>' % name)
|
||||
|
||||
def characters(self, content):
|
||||
|
|
Loading…
Reference in New Issue