SAX2 Namespace Support

james anderson James.Anderson at
Wed Jan 5 18:17:29 GMT 2000

If one doesn't want to leave it up to the user (eg, via user-specified class
implementations) then the parser should intern the QNames and effect object
identity according to whether it is observing namespaces or not (i.e. based on
augmenting stem equality with either prefix or uri equality).

If the interning mechanism is made available to the application, then the
application can use it to intern any "interesting" names and bind them to
static variables when it initializes. From then on, == need behave only as an
identity test.

This will get complex if the application wants to switch modi, but then I
don't believe applications belong in "non-namspace-observing" mode to begin with.

David Megginson wrote:
> John Aldridge <john.aldridge at> writes:
> > I'm sorry, I don't see the problem.  The QNames are equal if ns() and
> > name() both match.  The prefix is irrelevant.  This is what I suggested in
> > my definition of the equality operator above.
> >
> >     if (qn1 == qn2) ...
> >
> > just does the right thing.  If some application really wants to compare the
> > prefixed name, it can always write:
> >
> >     if (qn1.prefixedName () == qn2.prefixedName ()) ...
> >
> > I'm obviously missing something, since you and other knowledgable people
> > don't regard this as self evidently obvious -- can you explain the problem
> > to me, please?
> In principle (the principle of least surprise), it's very bad
> behaviour for two objects to be == in C++ or equals() in Java if any
> of their publicly-accessible fields differ.  Think of sets, for
> example.

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 unsubscribe, mailto:majordomo at the following message;
unsubscribe 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