Connecting Tech Pros Worldwide Forums | Help | Site Map

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

Greg Wogan-Browne
Guest
 
Posts: n/a
#1: Jul 18 '05
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.[color=blue][color=green][color=darkred]
>>> import xml.dom.minidom
>>> raw = '<test xmlns="http://example.com/namespace"/>'
>>> doc = xml.dom.minidom.parseString(raw)
>>> print doc.documentElement.namespaceURI[/color][/color][/color]
http://example.com/namespace[color=blue][color=green][color=darkred]
>>> print doc.documentElement.getAttribute('xmlns')[/color][/color][/color]
http://example.com/namespace[color=blue][color=green][color=darkred]
>>> impl = xml.dom.minidom.getDOMImplementation()
>>> doc2 = impl.createDocument('http://example.com/namespace','test',None)
>>> print doc2.documentElement.namespaceURI[/color][/color][/color]
http://example.com/namespace[color=blue][color=green][color=darkred]
>>> print doc2.documentElement.getAttribute('xmlns')[/color][/color][/color]
[color=blue][color=green][color=darkred]
>>>[/color][/color][/color]

Uche Ogbuji
Guest
 
Posts: n/a
#2: Jul 18 '05

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


Greg Wogan-Browne wrote:[color=blue]
> I am having some trouble figuring out what is going on here - is this[/color]
a[color=blue]
> bug, or correct behaviour? Basically, when I create an XML document[/color]
with[color=blue]
> a namespace using xml.dom.minidom.parse() or parseString(), the
> namespace exists as an xmlns attribute in the DOM (fair enough, as[/color]
it's[color=blue]
> 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[/color]
using[color=blue]
> Document.toxml(), as the xmlns attribute is not printed for documents[/color]
I[color=blue]
> create dynamically, and therefore XSLT does not kick in (I'm using an[/color]
[color=blue]
> external processor).
>
> Any thoughts on this would be appreciated. Should I file a bug on[/color]
pyxml?

It's odd behavior, but I think it's a stretch to call it a bug. You
problem is that you're mixing namespaced documents with the
non-namespace DOM API. That means trouble and such odd quirks every
time.

Use getAttributeNS, createElementNS, setAttributeNS, etc. rather than
getAttribute, createElement, setAttribute, etc.

--
Uche Ogbuji Fourthought, Inc.
http://uche.ogbuji.net http://4Suite.org http://fourthought.com
Use CSS to display XML -
http://www.ibm.com/developerworks/ed...-xmlcss-i.html
Introducing the Amara XML Toolkit -
http://www.xml.com/pub/a/2005/01/19/amara.html
Be humble, not imperial (in design) -
http://www.adtmag.com/article.asp?id=10286UBL 1.0 -
http://www-106.ibm.com/developerwork...x-think28.html
Manage XML collections with XAPI -
http://www-106.ibm.com/developerwork...ry/x-xapi.html
Default and error handling in XSLT lookup tables -
http://www.ibm.com/developerworks/xm...x-tiplook.html
Packaging XSLT lookup tables as EXSLT functions -
http://www.ibm.com/developerworks/xm...-tiplook2.html

Closed Thread