Mercurial > genshi > mirror
diff genshi/output.py @ 437:821fc97d3c0a trunk
Fix for #107.
author | cmlenz |
---|---|
date | Mon, 02 Apr 2007 15:52:21 +0000 |
parents | 073640758a42 |
children | 1154f2aadb6c |
line wrap: on
line diff
--- a/genshi/output.py +++ b/genshi/output.py @@ -412,6 +412,8 @@ ns_attrs = [] _push_ns_attr = ns_attrs.append + def _make_ns_attr(prefix, uri): + return u'xmlns%s' % (prefix and ':%s' % prefix or ''), uri def _gen_prefix(): val = 0 @@ -467,10 +469,7 @@ prefix, uri = data if uri not in namespaces: prefix = prefixes.get(uri, [prefix])[-1] - if not prefix: - _push_ns_attr((u'xmlns', uri)) - else: - _push_ns_attr((u'xmlns:%s' % prefix, uri)) + _push_ns_attr(_make_ns_attr(prefix, uri)) _push_ns(prefix, uri) elif kind is END_NS: @@ -484,6 +483,10 @@ uri_prefixes.pop() if not uri_prefixes: del namespaces[uri] + if ns_attrs: + attr = _make_ns_attr(data, uri) + if attr in ns_attrs: + ns_attrs.remove(attr) else: yield kind, data, pos