SAX2 Namespace Support

Stefan Haustein haustein at
Wed Jan 5 23:25:25 GMT 2000

David Megginson wrote:
> > class QName {
> > public:
> >     wstring ns () const;           //
> >     wstring name () const;         // p
> >     wstring nsPrefix () const;     // html
> >     wstring prefixedName () const; // html:p
> >
> >     bool operator== (const QName &rhs) const;
> >                                    // ns & name both equal
> > private:
> >     // Probably just a simple pointer to your internal data structures
> > };
> My biggest problem with this (and its Java equivalent) is figuring out
> how to handle equality: are two QNames with the same URI part and same
> local part equal?  What if the prefix is different?

What about adding a second method "identical 
(QName compare)" that takes also the prefix 
into account?  I think it's consistent if the
default method (equals () / ==) ignores the "noise".

A QName object could also help for the attributes: 
If the Sax2 AttributeListImpl is implemented like the
Sax1 list, it would have up to four Vectors:

class AttributeListImpl {
   Vector prefixedNames;
   Vector localNames;
   Vector prefixes;
   Vector namespaces;


Adding an attribute and creating or clearing an 
AttributeList (= manipulating four Vectors) would 
be extremely expensive.

class AttributeList {
   Vector QNames;      // better: ArrayList !

   Qname getAttribute (int index);

seems much cheaper, especially if the QName objects are interned.....

Best regards


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