[XML-SIG] xml namespace prefix and xml.sax.saxutils.XMLGenerator

Uche Ogbuji uche.ogbuji@fourthought.com
Sat, 08 Mar 2003 18:35:17 -0700

> Hi there,
> I'm using xml.sax.saxutils.XMLGenerator to generate XML from sax
> events automatically, and I think I've discovered a bug.


For my aprt, I'm quite familiar ith all the specifications from which you 
quoted, but I saw no actual code in your reportthat demonstrates the problem.  
I couldn't reconstruct it from your description.

Do you mean that you create an attributeNSImpl object containing 
{http://www.w3.org/XML/1998/namespace}lang (James Clark notation) and that you 
got a traceback as a result?  If so, then that is a bug, but I'm just guessing 
you mean the above.  I'd like to see some tet code and the error it produces.

> The generator works fine for 'xmlns', but it doesn't seem to handle 'xml'
> properly. What should be the case if I understand this right is that the
> 'xml' namespace is always declared (and thus does not get a special
> xmlns declaration). The XMLGenerator and perhaps other code does not
> recognize the 'xml' prefix however, and barfs over it when generating 
> startElementNS().
> Trying to introduce it by using startPrefixMapping() fails, as then
> the generator automatically will add an explicit definition to the document
> element (xmlns:xml="http://www.w3.org/XML/1998/namespace"), which shouldn't
> happen.

It is perfectly correct to explicitly declare the xml prefix, as long as it is 
declared to the http://www.w3.org/XML/1998/namespace namespace.  Of course it 
is *convenient* not to generate this declaration, since it's not needed.

> The fix seems to be as following. Change line 221 or thereabouts from:
>         self._ns_contexts = [{}] # contains uri -> prefix dicts
> into this:
>         # contains uri -> prefix dicts 
>         self._ns_contexts = [{'http://www.w3.org/XML/1998/namespace': 'xml'}]
> If this is deemed to be a good fix I can check this one in myself. I wonder
> though if there would be any other problems with 'xml:' in sax handlers I'm less
> familiar with (reading it in appears to work fine). Anyone?

Thanks for finding a fix, but I'd like to be sure I understand the bug repro 
case before I coul decided whether this is a needed ix.

Uche Ogbuji                                    Fourthought, Inc.
http://uche.ogbuji.net    http://4Suite.org    http://fourthought.com
Universal Business Language (UBL) - http://www-106.ibm.com/developerworks/xml/library/x-think16.html
EXSLT by example - http://www-106.ibm.com/developerworks/library/x-exslt.html
The worry about program wizards - http://www.adtmag.com/article.asp?id=7238
Use rdf:about and rdf:ID effectively in RDF/XML - http://www-106.ibm.com/developerworks/xml/library/x-tiprdfai.html
Keep context straight in XSLT - http://www-106.ibm.com/developerworks/xml/library/x-tipcurrent.html
Python Generators + DOM - http://www.xml.com/pub/a/2003/01/08/py-xml.html
Simple XML Processing With elementtree - http://www.xml.com/pub/a/2003/02/12/py-xml.html