mirror of https://github.com/python/cpython.git
Don't get fooled by an empty prefix with a valid namespaceURI -- in
this case, the code used to generate invalid tags and attribute names with a leading colon, e.g. <:tag> or <tag :attr="foo">.
This commit is contained in:
parent
1b26b6a5f1
commit
795ad56b31
|
@ -56,7 +56,11 @@ def startElementNS(self, name, tagName , attrs):
|
|||
# provide us with the original name. If not, create
|
||||
# *a* valid tagName from the current context.
|
||||
if tagName is None:
|
||||
tagName = self._current_context[uri] + ":" + localname
|
||||
prefix = self._current_context[uri]
|
||||
if prefix:
|
||||
tagName = prefix + ":" + localname
|
||||
else:
|
||||
tagName = localname
|
||||
node = self.document.createElementNS(uri, tagName)
|
||||
else:
|
||||
# When the tagname is not prefixed, it just appears as
|
||||
|
@ -66,7 +70,11 @@ def startElementNS(self, name, tagName , attrs):
|
|||
for aname,value in attrs.items():
|
||||
a_uri, a_localname = aname
|
||||
if a_uri:
|
||||
qname = self._current_context[a_uri] + ":" + a_localname
|
||||
prefix = self._current_context[a_uri]
|
||||
if prefix:
|
||||
qname = prefix + ":" + a_localname
|
||||
else:
|
||||
qname = a_localname
|
||||
attr = self.document.createAttributeNS(a_uri, qname)
|
||||
else:
|
||||
attr = self.document.createAttribute(a_localname)
|
||||
|
|
Loading…
Reference in New Issue