Clarification on XML parsing & namespaces (xml.dom.minidom)

Greg Wogan-Browne news at wogan.id.au.invalid
Tue Jan 25 07:46:34 CET 2005


Hi all,

I am having some trouble figuring out what is going on here - is this a 
bug, or correct behaviour? Basically, when I create an XML document with 
a namespace using xml.dom.minidom.parse() or parseString(), the 
namespace exists as an xmlns attribute in the DOM (fair enough, as it's 
in the original source document). However, if I use the DOM 
implementation to create an identical document with a namespace, the 
xmlns attribute is not present.

This mainly affects me when I go to print out the document again using 
Document.toxml(), as the xmlns attribute is not printed for documents I 
create dynamically, and therefore XSLT does not kick in (I'm using an 
external processor).

Any thoughts on this would be appreciated. Should I file a bug on pyxml?

Greg


Python 2.3.3 (#1, May  7 2004, 10:31:40)
[GCC 3.3.3 20040412 (Red Hat Linux 3.3.3-7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
 >>> import xml.dom.minidom
 >>> raw = '<test xmlns="http://example.com/namespace"/>'
 >>> doc = xml.dom.minidom.parseString(raw)
 >>> print doc.documentElement.namespaceURI
http://example.com/namespace
 >>> print doc.documentElement.getAttribute('xmlns')
http://example.com/namespace
 >>> impl = xml.dom.minidom.getDOMImplementation()
 >>> doc2 = impl.createDocument('http://example.com/namespace','test',None)
 >>> print doc2.documentElement.namespaceURI
http://example.com/namespace
 >>> print doc2.documentElement.getAttribute('xmlns')

 >>>



More information about the Python-list mailing list