poco/XML/include/Poco/XML/NamespaceStrategy.h

116 lines
3.0 KiB
C
Raw Normal View History

2012-04-29 20:52:25 +02:00
//
// NamespaceStrategy.h
//
// Library: XML
// Package: XML
// Module: NamespaceStrategy
//
// Definition of the NamespaceStrategy class.
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
2012-04-29 20:52:25 +02:00
//
#ifndef XML_NamespaceStrategy_INCLUDED
#define XML_NamespaceStrategy_INCLUDED
#include "Poco/XML/XML.h"
#include "Poco/XML/XMLString.h"
#include "Poco/SAX/NamespaceSupport.h"
#include "Poco/SAX/AttributesImpl.h"
namespace Poco {
namespace XML {
class ContentHandler;
class XML_API NamespaceStrategy
/// This class is used by ParserEngine to handle the
/// startElement, endElement, startPrefixMapping and
/// endPrefixMapping events.
{
public:
virtual ~NamespaceStrategy();
virtual void startElement(const XMLChar* name, const XMLChar** atts, int specifiedCount, ContentHandler* pContentHandler) = 0;
/// Translate the arguments as delivered by Expat and
/// call the startElement() method of the ContentHandler.
2022-07-07 11:18:20 +02:00
2012-04-29 20:52:25 +02:00
virtual void endElement(const XMLChar* name, ContentHandler* pContentHandler) = 0;
/// Translate the arguments as delivered by Expat and
/// call the endElement() method of the ContentHandler.
protected:
static void splitName(const XMLChar* qname, XMLString& uri, XMLString& localName);
static void splitName(const XMLChar* qname, XMLString& uri, XMLString& localName, XMLString& prefix);
static const XMLString NOTHING;
};
class XML_API NoNamespacesStrategy: public NamespaceStrategy
/// The NamespaceStrategy implementation used if no namespaces
/// processing is requested.
{
public:
NoNamespacesStrategy();
~NoNamespacesStrategy();
2022-07-07 11:18:20 +02:00
2012-04-29 20:52:25 +02:00
void startElement(const XMLChar* name, const XMLChar** atts, int specifiedCount, ContentHandler* pContentHandler);
void endElement(const XMLChar* name, ContentHandler* pContentHandler);
2022-07-07 11:18:20 +02:00
2012-04-29 20:52:25 +02:00
private:
XMLString _name;
AttributesImpl _attrs;
};
class XML_API NoNamespacePrefixesStrategy: public NamespaceStrategy
/// The NamespaceStrategy implementation used if namespaces
/// processing is requested, but prefixes are not reported.
{
public:
NoNamespacePrefixesStrategy();
~NoNamespacePrefixesStrategy();
2022-07-07 11:18:20 +02:00
2012-04-29 20:52:25 +02:00
void startElement(const XMLChar* name, const XMLChar** atts, int specifiedCount, ContentHandler* pContentHandler);
void endElement(const XMLChar* name, ContentHandler* pContentHandler);
private:
XMLString _uri;
XMLString _local;
AttributesImpl _attrs;
};
class XML_API NamespacePrefixesStrategy: public NamespaceStrategy
/// The NamespaceStrategy implementation used if namespaces
/// processing is requested and prefixes are reported.
{
public:
NamespacePrefixesStrategy();
~NamespacePrefixesStrategy();
2022-07-07 11:18:20 +02:00
2012-04-29 20:52:25 +02:00
void startElement(const XMLChar* name, const XMLChar** atts, int specifiedCount, ContentHandler* pContentHandler);
void endElement(const XMLChar* name, ContentHandler* pContentHandler);
2022-07-07 11:18:20 +02:00
2012-04-29 20:52:25 +02:00
private:
XMLString _uri;
XMLString _local;
XMLString _qname;
AttributesImpl _attrs;
};
} } // namespace Poco::XML
#endif // XML_NamespaceStrategy_INCLUDED