SAX2 Namespace Support

John Aldridge john.aldridge at
Tue Jan 4 18:23:31 GMT 2000

At 18:02 20/12/99 -0500, David Megginson <david at> wrote:
>  public void startElement (String ns, String name, 
>                            AttributeList atts)
>    throws SAXException;

I appreciate this is probably a done deal by now, but I prefer:

class QName {
    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
    // Probably just a simple pointer to your internal data structures

void startElement (const QName &name, const AttributeList &atts)
throws SAXException;

You can also provide a specialisation for class std::less<QName>, and then
QNames become directly usable with the STL set/map classes.

Hiding the internals lets you use some cleverer comparison techniques, too,
so that, e.g.

    if (qn1 == qn2) ...

can happen faster than doing the various string comparisons.

N.B. the code above is phrased assuming the use of wstring for string data,
because I prefer it, but could readily be adapted to raw wchar_t*, or
SAXChar, or whatever comes out of the other debate)


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