[XML-SIG] Attribute namespace bug
Juergen Hermann
Juergen Hermann" <jh@web.de
Tue, 30 Oct 2001 22:28:44 +0100
On Tue, 30 Oct 2001 14:02:02 -0700, Uche Ogbuji wrote:
>--- xml/sax/saxutils.py 2001/09/27 21:42:28 1.23
>+++ xml/sax/saxutils.py 2001/10/30 21:00:45
>@@ -155,6 +155,8 @@
> def _outputwrapper(stream,encoding):
> return stream
>
>+GENERATED_PREFIX =3D "genprefix%s"
>+
> class XMLGenerator(handler.ContentHandler):
=3D=3D=3D> use class attribute, less namespace pollution,
use self.GENERATED_PREFIX below!
class XMLGenerator(handler.ContentHandler):
GENERATED_PREFIX =3D "genprefix%d"
Also, do people realize where "genprefix" comes from when
it "suddenly pops up"?! Thus, maybe:
GENERATED_PREFIX =3D "xml.sax.saxutils.prefix%d"
(it _is_ long, but it should occur in rare cases only anyway)
> elif self._current_context[name[0]] is None:
> # default namespace
>- name =3D name[1]
>+ #If an attribute has a nsuri but not a prefix, we must=
>+ #create a prefix and add a nsdecl
>+ prefix =3D GENERATED_PREFIX % self._generated_prefix_c=
tr
>+ self._generated_prefix_ctr =3D self._generated_prefix_=
ctr + 1
>+ name =3D prefix + ':' + name[1]
>+ self._out.write(' xmlns:%s=3D%s' % (prefix, name[0]))
This looks like a bug to me, fix:
self._out.write(' xmlns:%s=3D%s' % (prefix, quoteattr(=
name[0])))
>+ self._current_context[name[0]] =3D prefix
> else:
> name =3D self._current_context[name[0]] + ":" + name[1=
]
> self._out.write(' %s=3D%s' % (name, quoteattr(value)))
Ciao, J=FCrgen