The Peace Process: DOM and namespaces...
Marcelo Cantos
marcelo at mds.rmit.edu.au
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="www.simdb.com"><p>Hello world!</p></doc>
> >
> > becomes:
> >
> > <ns0:doc xmlns:ns0="www.simdb.com"><ns0:p
> > xmlns:ns0="www.simdb.com">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=\"www.simdb.com\"><p>Hello
world!</p></doc>");
DOMNode root := d.root();
String text := root.children("p", "www.simdb.com");
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.)
Cheers,
Marcelo
--
http://www.simdb.com/~marcelo/
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list