18#if !defined(XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680)
19#define XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680
46class XalanOutputStream;
50using xercesc::MemoryManager;
104 return m_elemStack.getMemoryManager();
119 AttributeList&
attrs) = 0;
145 const XMLCh*
const data);
182 return m_shouldWriteXMLHeader;
188 m_shouldWriteXMLHeader =
b;
212 static const char s_doctypeHeaderStartString[];
219 static const char s_doctypeHeaderPublicString[];
226 static const char s_doctypeHeaderSystemString[];
233 static const char s_xmlHeaderStartString[];
240 static const char s_xmlHeaderEncodingString[];
247 static const char s_xmlHeaderStandaloneString[];
254 static const char s_xmlHeaderEndString[];
261 static const char s_defaultVersionString[];
275 static const char s_cdataOpenString[];
282 static const char s_cdataCloseString[];
289 static const char s_lessThanEntityString[];
296 static const char s_greaterThanEntityString[];
303 static const char s_ampersandEntityString[];
310 static const char s_quoteEntityString[];
442 return theChar > s_lastSpecial ?
444 s_specialChars[
theChar] > eNone;
450 return theChar > s_lastSpecial ?
452 s_specialChars[
theChar] > eAttr;
460 return theChar > s_lastSpecial;
466 return theChar > s_lastSpecial ?
468 s_specialChars[
theChar] == eForb;
474 return theChar > s_lastSpecial ?
476 s_specialChars[
theChar] == eForb;
481 static const size_t s_lastSpecial;
483 static const char s_specialChars[];
495 return theChar > s_lastSpecial ?
497 s_specialChars[
theChar] > eNone;
503 return theChar > s_lastSpecial ?
505 s_specialChars[
theChar] > eAttr;
513 return theChar > s_lastSpecial;
519 return theChar > s_lastSpecial ?
521 s_specialChars[
theChar] == eForb;
527 return theChar > s_lastSpecial ?
529 s_specialChars[
theChar] == eCRFb;
533 static const size_t s_lastSpecial;
535 static const char s_specialChars[];
569 const XMLCh* data) = 0;
595 if(!m_elemStack.empty())
598 if(
false == m_elemStack.back())
600 m_elemStack.back() =
true;
616 return m_needToOutputDoctypeDecl;
625 m_elemStack.push_back(
false);
631 return m_elemStack.empty();
644 if (m_elemStack.empty() ==
false)
648 m_elemStack.pop_back();
657 if(
true == m_needToOutputDoctypeDecl)
659 assert(m_doctypeSystem.empty() ==
false);
661 writeDoctypeDecl(
name);
663 m_needToOutputDoctypeDecl =
false;
779 bool m_needToOutputDoctypeDecl;
784 bool m_shouldWriteXMLHeader;
797 static const size_type s_xhtmlDocTypeStringLength;
#define XALAN_XMLSUPPORT_EXPORT
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
bool range(XalanDOMChar theChar) const
bool isForbidden(XalanDOMChar theChar) const
bool content(XalanDOMChar theChar) const
bool isCharRefForbidden(XalanDOMChar theChar) const
bool attribute(XalanDOMChar theChar) const
bool attribute(XalanDOMChar theChar) const
bool range(XalanDOMChar theChar) const
bool isCharRefForbidden(XalanDOMChar theChar) const
bool isForbidden(XalanDOMChar theChar) const
bool content(XalanDOMChar theChar) const
static const size_type s_xhtmlDocTypeStringLength
static const size_type s_greaterThanEntityStringLength
static const size_type s_quoteEntityStringLength
static const size_type s_xmlHeaderStartStringLength
static const size_type s_xmlHeaderEndStringLength
static const size_type s_defaultVersionStringLength
static const size_type s_lessThanEntityStringLength
static const size_type s_xmlHeaderStandaloneStringLength
static const size_type s_ampersandEntityStringLength
static const size_type s_xmlHeaderEncodingStringLength
static const size_type s_cdataOpenStringLength
static const XalanDOMString & s_encodingString
The string "UTF-16".
static const size_type s_doctypeHeaderStartStringLength
static const size_type s_doctypeHeaderPublicStringLength
static const size_type s_doctypeHeaderSystemStringLength
static const size_type s_cdataCloseStringLength
static const XalanDOMString & s_encodingString
The string "UTF-8".
static const size_type s_doctypeHeaderStartStringLength
static const size_type s_defaultVersionStringLength
static const size_type s_quoteEntityStringLength
static const size_type s_xmlHeaderStandaloneStringLength
static const size_type s_xhtmlDocTypeStringLength
static const size_type s_xmlHeaderEncodingStringLength
static const size_type s_xmlHeaderStartStringLength
static const size_type s_cdataOpenStringLength
static const size_type s_cdataCloseStringLength
static const size_type s_lessThanEntityStringLength
static const size_type s_doctypeHeaderSystemStringLength
static const size_type s_ampersandEntityStringLength
static const size_type s_xmlHeaderEndStringLength
static const size_type s_doctypeHeaderPublicStringLength
static const size_type s_greaterThanEntityStringLength
XalanXMLSerializerBase serves as a base class for XML serializers based on FormatterListener events.
virtual void outputNewline()=0
bool childNodesWereAdded()
Determine if an element ever had any children added.
static void throwInvalidCharacterException(XalanUnicodeChar ch, MemoryManager &theManager)
Throw an exception when an invalid character is encountered.
bool getShouldWriteXMLHeader() const
virtual void entityReference(const XMLCh *const name)=0
Receive notification of a entityReference.
static bool isUTF16HighSurrogate(XalanDOMChar theChar)
MemoryManager & getMemoryManager()
static void initialize(MemoryManager &theManager)
Perform static initialization.
virtual void characters(const XMLCh *const chars, const size_type length)
const XalanDOMString m_encoding
virtual void resetDocument()
const XalanDOMString m_standalone
Text for standalone part of header.
virtual const XalanDOMString & getDoctypeSystem() const
virtual void writeProcessingInstruction(const XMLCh *target, const XMLCh *data)=0
virtual void writeXMLHeader()=0
virtual void startDocument()
static const XalanDOMString & s_1_1String
const XalanDOMString m_doctypePublic
The public ID for the doc type.
XalanVector< bool > BoolStackType
virtual void ignorableWhitespace(const XMLCh *const chars, const size_type length)
static bool isUTF16LowSurrogate(XalanDOMChar theChar)
bool m_nextIsRaw
Tell if the next text should be raw.
void openElementForChildren()
Open an element for possibile children.
virtual const XalanDOMString & getEncoding() const
static XalanUnicodeChar decodeUTF16SurrogatePair(XalanDOMChar theHighSurrogate, XalanDOMChar theLowSurrogate, MemoryManager &theManager)
const XalanDOMString & getVersion() const
virtual void startElement(const XMLCh *const name, AttributeList &attrs)=0
virtual void comment(const XMLCh *const data)=0
Called when a Comment is to be constructed.
bool m_spaceBeforeClose
Add space before '/>' for XHTML.
virtual const XalanDOMString & getDoctypePublic() const
virtual void writeCDATA(const XMLCh *chars, size_type length)=0
static void terminate()
Perform static shut down.
virtual ~XalanXMLSerializerBase()
const XalanDOMString & m_version
Tells the XML version, for writing out to the XML decl.
virtual void setDocumentLocator(const Locator *const locator)
void setShouldWriteXMLHeader(bool b)
bool getNeedToOutputDoctypeDecl() const
Determine if it a DOCTYPE declaration needs to be written.
virtual void charactersRaw(const XMLCh *const chars, const size_type length)=0
virtual void writeDoctypeDecl(const XalanDOMChar *name)=0
bool markParentForChildren()
Mark the parent element as having a child.
virtual void cdata(const XMLCh *const ch, const size_type length)
virtual void flushBuffer()=0
XalanXMLSerializerBase(MemoryManager &theManager, eXMLVersion theXMLVersion, const XalanDOMString &theEncoding, const XalanDOMString &theDoctypeSystem, const XalanDOMString &theDoctypePublic, bool xmlDecl, const XalanDOMString &theStandalone)
Constructor.
const XalanDOMString m_doctypeSystem
The System ID for the doc type.
static void throwInvalidUTF16SurrogateException(XalanDOMChar ch, XalanDOMChar next, MemoryManager &theManager)
Throw an exception when an invalid surrogate is encountered.
static void throwInvalidXMLCharacterException(XalanUnicodeChar ch, const XalanDOMString &theXMLversion, MemoryManager &theManager)
Throw an exception when an invalid character for the specific XML version is encountered.
virtual void processingInstruction(const XMLCh *const target, const XMLCh *const data)
virtual void endElement(const XMLCh *const name)=0
void generateDoctypeDecl(const XalanDOMChar *name)
const XalanDOMString & getStandalone() const
static void throwInvalidUTF16SurrogateException(XalanDOMChar ch, MemoryManager &theManager)
Throw an exception when an invalid surrogate is encountered.
static const XalanDOMString & s_1_0String
bool outsideDocumentElement() const
virtual void writeCharacters(const XMLCh *chars, size_type length)=0
bool operator==(const XalanVector< Type > &theLHS, const XalanVector< Type > &theRHS)