The Peace Process: DOM and namespaces...

Marcelo Cantos marcelo at
Fri Feb 12 01:45:46 GMT 1999

On Thu, Feb 11, 1999 at 05:44:18PM -0500, Tyler Baker wrote:
> Marcelo Cantos wrote:
> > 
> > As in expat:
> >
> >   <doc xmlns=""><p>Hello world!</p></doc>
> >
> > becomes:
> >
> >   <ns0:doc xmlns:ns0=""><ns0:p
> >   xmlns:ns0="">Hello world!</ns0:p></ns0:p>
> >
> > Not sure why the second xmlns:ns0 is there.  Maybe it just makes
> > life easier on the user (no need to traverse the parents).
> >
> > Also not sure why the last close tag is </ns0:p>.  I guess that's
> > why my copy of expat came from the _test_ directory on James's FTP
> > site.  :-)
> Well, then you no longer have the original document structure you
> had before but these archane prefixes in your document which make
> things completely unreadable from a users perspective.  I might as
> well just use Java Object Serialization only for serializing an
> object tree as it would be faster and be no less understandable to
> the end-user than all of this automatic prefix creation.

I guess my use of the term "user" made my post a little ambiguous.              
What I meant was "client of the parser", i.e. the person implementing           
a high-level API to the document.  The real end-user (the person                
clicking buttons on a browser, or integrator writing code in a                  
scripting language) never sees the internal representation of the               
document.  As far as I am concerned, the user never sees anything but           
the first version above.  The second is accessed by tools that give             
programmatic access to the data, such as a DOM interface.                       
As an example, the document above could be accessed like this:                  
  DOMDocument d("<doc xmlns=\"\"><p>Hello
  DOMNode root := d.root();                                                     
  String text := root.children("p", "");                           
The user is completely oblivious to the background convolutions of              
using "archane prefixes".  This, of course, makes life hard on the              
implementor, but as a user, I couldn't care less, as long as my life            
is made easy.                                                                   
(The astute reader may observe that the transformed document above              
throws away the concept of a current namespace.  I think this is bad,           
since I would like to do this:                                                  
  String text := root.children("p");                                            
and have the root's namespace implied, just as it is in the document.           
This is more than a just a pedagogical grumble.  It has significant             
ramifications for code reuse.  I want to write a function that pulls            
apart a legal statute and presents it as an HTML document.  But I want          
that function to also work on a fragment that has been inserted into a          
larger document and wrapped up in a namespace.)                                 


xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as: and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list