text: /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  /*
   * $Id: SAX2PrintHandlers.hpp 557282 2007-07-18 14:54:15Z amassari $
   */
  
  #include    <xercesc/sax2/DefaultHandler.hpp>
  #include    <xercesc/framework/XMLFormatter.hpp>
  
  XERCES_CPP_NAMESPACE_USE
  
  class SAX2PrintHandlers : public DefaultHandler, private XMLFormatTarget
  {
  public:
      // -----------------------------------------------------------------------
      //  Constructors
      // -----------------------------------------------------------------------
      SAX2PrintHandlers
      (
          const   char* const                 encodingName
          , const XMLFormatter::UnRepFlags    unRepFlags
  		, const bool						expandNamespaces
      );
      ~SAX2PrintHandlers();
  
  
      // -----------------------------------------------------------------------
      //  Implementations of the format target interface
      // -----------------------------------------------------------------------
      void writeChars
      (
          const   XMLByte* const  toWrite
      );
  
      virtual void writeChars
      (
          const   XMLByte* const  toWrite
          , const XMLSize_t       count
          , XMLFormatter* const   formatter
      );
  
  
      // -----------------------------------------------------------------------
      //  Implementations of the SAX DocumentHandler interface
      // -----------------------------------------------------------------------
      void endDocument();
  
      void endElement( const XMLCh* const uri,
  					 const XMLCh* const localname,
  					 const XMLCh* const qname);
  
      void characters(const XMLCh* const chars, const XMLSize_t length);
  
      void ignorableWhitespace
      (
          const   XMLCh* const    chars
          , const XMLSize_t       length
      );
  
      void processingInstruction
      (
          const   XMLCh* const    target
          , const XMLCh* const    data
      );
  
      void startDocument();
  
      void startElement(	const   XMLCh* const    uri,
  						const   XMLCh* const    localname,
  						const   XMLCh* const    qname,
  					    const   Attributes&		attributes);
  
  
  
      // -----------------------------------------------------------------------
      //  Implementations of the SAX ErrorHandler interface
      // -----------------------------------------------------------------------
      void warning(const SAXParseException& exc);
      void error(const SAXParseException& exc);
      void fatalError(const SAXParseException& exc);
  
  
  
      // -----------------------------------------------------------------------
      //  Implementation of the SAX DTDHandler interface
      // -----------------------------------------------------------------------
      void notationDecl
      (
          const   XMLCh* const    name
          , const XMLCh* const    publicId
          , const XMLCh* const    systemId
      );
  
      void unparsedEntityDecl
      (
          const   XMLCh* const    name
          , const XMLCh* const    publicId
          , const XMLCh* const    systemId
          , const XMLCh* const    notationName
      );
  
  private :
      // -----------------------------------------------------------------------
      //  Private data members
      //
      //  fFormatter
      //      This is the formatter object that is used to output the data
      //      to the target. It is set up to format to the standard output
      //      stream.
      // -----------------------------------------------------------------------
      XMLFormatter    fFormatter;
  	bool			fExpandNS ;
  };
  