18#if !defined(XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680)
19#define XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680
46class XalanOutputStream;
50using xercesc::MemoryManager;
90 MemoryManager& theManager,
104 return m_elemStack.getMemoryManager();
118 const XMLCh*
const name,
119 AttributeList& attrs) = 0;
126 const XMLCh*
const chars,
131 const XMLCh*
const chars,
139 const XMLCh*
const chars,
144 const XMLCh*
const target,
145 const XMLCh*
const data);
155 const XMLCh*
const ch,
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[];
268 static const XalanDOMChar s_xhtmlDocTypeString[];
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[];
327 static const XalanDOMChar s_doctypeHeaderStartString[];
334 static const XalanDOMChar s_doctypeHeaderPublicString[];
341 static const XalanDOMChar s_doctypeHeaderSystemString[];
348 static const XalanDOMChar s_xmlHeaderStartString[];
355 static const XalanDOMChar s_xmlHeaderEncodingString[];
362 static const XalanDOMChar s_xmlHeaderStandaloneString[];
369 static const XalanDOMChar s_xmlHeaderEndString[];
376 static const XalanDOMChar s_defaultVersionString[];
383 static const XalanDOMChar s_xhtmlDocTypeString[];
390 static const XalanDOMChar s_cdataOpenString[];
397 static const XalanDOMChar s_cdataCloseString[];
404 static const XalanDOMChar s_lessThanEntityString[];
411 static const XalanDOMChar s_greaterThanEntityString[];
418 static const XalanDOMChar s_ampersandEntityString[];
425 static const XalanDOMChar 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();
642 bool fResult =
false;
644 if (m_elemStack.empty() ==
false)
646 fResult = m_elemStack.back();
648 m_elemStack.pop_back();
657 if(
true == m_needToOutputDoctypeDecl)
659 assert(m_doctypeSystem.empty() ==
false);
661 writeDoctypeDecl(name);
663 m_needToOutputDoctypeDecl =
false;
702 return 0xD800u <= theChar && theChar <= 0xDBFFu ? true :
false;
708 return 0xDC00u <= theChar && theChar <= 0xDFFFu ? true :
false;
711 static XalanUnicodeChar
713 XalanDOMChar theHighSurrogate,
714 XalanDOMChar theLowSurrogate,
715 MemoryManager& theManager);
725 MemoryManager& theManager);
737 MemoryManager& theManager);
748 MemoryManager& theManager);
761 MemoryManager& theManager);
779 bool m_needToOutputDoctypeDecl;
784 bool m_shouldWriteXMLHeader;
795 static const XalanDOMChar s_xhtmlDocTypeString[];
797 static const size_type s_xhtmlDocTypeStringLength;
#define XALAN_CPP_NAMESPACE
#define XALAN_XMLSUPPORT_EXPORT
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.
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.
XalanVector< bool > BoolStackType
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)