> I'm currently working on some C++ SAX definitions has was wondering if I
> should be using references for strings or not.
Yes, you should certainly be using references for strings (const
references, actually); you should also use wstring rather than string,
since XML requires Unicode support. I'm not a C++ guru, but I'd
suggest starting with something like this for DocumentHandler:
xml/sax/DocumentHandler:
#ifndef __XML_SAX_DOCUMENTHANDLER
#define __XML_SAX_DOCUMENTHANDLER 1
#include <string>
#include <wchar.h>
#include "Locator"
#include "AttributeList"
namespace org_xml_sax {
class SAXDocumentHandler
{
public:
virtual void setDocumentLocator (const Locator &locator) = 0;
virtual void startDocument () = 0;
virtual void endDocument () = 0;
virtual void startElement (const wstring &name,
const AttributeList &atts) = 0;
virtual void endElement (const wstring &name) = 0;
virtual void characters (const wchar_t ch[],
size_t start,
size_t length) = 0;
virtual void ignorableWhitespace (const wchar_t ch[],
size_t start,
size_t length) = 0;
virtual void processingInstruction (const wstring &name,
const wstring &target) = 0;
};
}
#endif __XML_SAX_DOCUMENTHANDLER
As for comments, you probably want to put non-SAX stuff in a separate
or an extended interface so that other people can use your SAX
interface as well, i.e.
#include <xml/sax/DocumentHandler>
namespace rja_sax {
class RJADocumentHandler : public org_xml_sax::DocumentHandler
{
public:
virtual void comment (const wstring &data) = 0;
};
}
All the best, and thanks for taking the interest in building a SAX C++
interface.
David
-- David Megginson david@megginson.com http://www.megginson.com/