Why SAX needs namespace support

Tim Bray tbray at textuality.com
Tue Jan 26 18:09:39 GMT 1999


At 12:19 PM 1/26/99 -0500, Tyler Baker wrote:
>Implementing namespaces in an XML parser is a trivial task, but dealing with
>namespaces at the application level is a totally different story, 
>especially with this namespaces scoping stuff.  How do you deal with 
>namespaces in the DOM?  

I don't expect to convince Tyler Baker that namespaces are
anything but an alien conspiracy, but I don't think it would be proper
to ignore his repeated assertions that namespace *scoping* somehow 
makes processing more difficult.  The scoping is purely a syntactic
mechanism in the XML document that can't possibly have any effect at
the DOM level.  The following two documents are namespace-equivalent:

<a xmlns:A='http://a.b.c'> | <a xmlns:A='http://a.b.c'  
                           |    xmlns:X='http://x.y.z'> 
  <b xmlns='http://a.b.c'> |   <A:b>
    <c/>                   |     <A:c/>
  </b>                     |   </A:b>
  <d xmlns='http://z.y.z'> |   <X:d>
    <A:e></A:e>            |     <A:e></A:e>
  </d>                     |   </X:d>
</a>                       | </a>

A namespace-aware parser, such as expat, makes this clear, allowing you
to ascertain that the element whose type is "e" is in the namespace
http://a.b.c.  True, the DOM is going to have to do something about this,
as in add one more method per element and attribute to store/update
its namespace.

But what on earth makes anyone think that namespaces would be scoped
in the DOM?  The scoping in XML files is purely a syntactic minimization
technique.  I.e., if I have a DOM tree modelling the document above
(surely everyone agrees that I get the same DOM tree from both
instances) and I go stick a new "f" element as a child of the 'e'
element, surely it makes no sense to put it in the either the a.b.c
or x.y.z namespaces auto-magically.  Among other things, it might
come from some entirely different namespace.

To put this another way, namespaces are merely a syntactic mechanism
to allow each element type and attribute name in a document to be
qualified by some URI.  The DOM should obviously preserve this 
information, but I can't see why it should be concerned with 
the syntactic sugar that was used to express it. -Tim

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/
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