dbertoni    00/05/25 09:51:41

  Modified:    c/src/XSLT StylesheetExecutionContext.hpp
                        StylesheetExecutionContextDefault.cpp
                        StylesheetExecutionContextDefault.hpp
                        XSLTEngineImpl.cpp XSLTEngineImpl.hpp
  Log:
  Further fixes for delaying output of document header.
  
  Revision  Changes    Path
  1.16      +104 -4    xml-xalan/c/src/XSLT/StylesheetExecutionContext.hpp
  
  Index: StylesheetExecutionContext.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContext.hpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- StylesheetExecutionContext.hpp    2000/05/24 19:38:49     1.15
  +++ StylesheetExecutionContext.hpp    2000/05/25 16:51:34     1.16
  @@ -301,10 +301,100 @@
        virtual void
        setFormatterListener(FormatterListener*         flistener) = 0;
   
  -     // These next four classes are used to save and restore
  +     /*
  +      * See if there is a pending start document event waiting.
  +      * @return true if there is a start document event waiting.
  +      */
  +     virtual bool
  +     getHasPendingStartDocument() const = 0;
  +
  +     /**
  +      * Set the pending start document event state.
  +      * @param the new value
  +      */
  +     virtual void
  +     setHasPendingStartDocument(bool b) = 0;
  +
  +     /**
  +      * See if a pending start document event must be flushed.
  +      * @return true if the event must be flushed.
  +      */
  +     virtual bool
  +     getMustFlushPendingStartDocument() const = 0;
  +
  +     /**
  +      * Set the pending start document event flush state.
  +      * @param the new value
  +      */
  +     virtual void
  +     setMustFlushPendingStartDocument(bool   b) = 0;
  +
  +     // This next group of classes are used to save and restore
        // the execution state in an automated, and exception-safe
        // manner.
   
  +     class HasPendingStartDocumentSetAndRestore
  +     {
  +     public:
  +
  +             /**
  +              * Construct an object to set and restore the current pending 
start.
  +              * document state.
  +              * @param theExecutionContext a reference to the current 
execution context
  +              * @param theNewState the new state to set.
  +              */
  +             HasPendingStartDocumentSetAndRestore(
  +                     StylesheetExecutionContext&             
theExecutionContext,
  +                     bool                                                    
theNewState) :
  +                             m_executionContext(theExecutionContext),
  +                             
m_savedState(theExecutionContext.getHasPendingStartDocument())
  +             {
  +                     
theExecutionContext.setHasPendingStartDocument(theNewState);
  +             }
  +
  +             ~HasPendingStartDocumentSetAndRestore()
  +             {
  +                     
m_executionContext.setHasPendingStartDocument(m_savedState);
  +             }
  +
  +     private:
  +
  +             StylesheetExecutionContext&             m_executionContext;
  +
  +             const bool                                              
m_savedState;
  +     };
  +
  +     class MustFlushPendingStartDocumentSetAndRestore
  +     {
  +     public:
  +
  +             /**
  +              * Construct an object to set and restore the current flush 
pending start.
  +              * document state.
  +              * @param theExecutionContext a reference to the current 
execution context
  +              * @param theNewState the new state to set.
  +              */
  +             MustFlushPendingStartDocumentSetAndRestore(
  +                     StylesheetExecutionContext&             
theExecutionContext,
  +                     bool                                                    
theNewState) :
  +                             m_executionContext(theExecutionContext),
  +                             
m_savedState(theExecutionContext.getMustFlushPendingStartDocument())
  +             {
  +                     
theExecutionContext.setMustFlushPendingStartDocument(theNewState);
  +             }
  +
  +             ~MustFlushPendingStartDocumentSetAndRestore()
  +             {
  +                     
m_executionContext.setMustFlushPendingStartDocument(m_savedState);
  +             }
  +
  +     private:
  +
  +             StylesheetExecutionContext&             m_executionContext;
  +
  +             const bool                                              
m_savedState;
  +     };
  +
        class FormatterListenerSetAndRestore
        {
        public:
  @@ -413,8 +503,14 @@
                ExecutionStateSetAndRestore(
                        StylesheetExecutionContext&             
theExecutionContext,
                        FormatterListener*                              
theNewListener = 0,
  +                     bool                                                    
hasPendingStartDocument = false,
  +                     bool                                                    
mustFlushPendingStartDocument = false,
                        const XalanDOMString&                   
theNewPendingElementName = XalanDOMString(),
                        const AttributeListImpl&                
theNewPendingAttributes = AttributeListImpl()) :
  +                             m_hasPendingSetAndRestore(theExecutionContext,
  +                                                                             
  hasPendingStartDocument),
  +                             m_flushPendingSetAndRestore(theExecutionContext,
  +                                                                             
        mustFlushPendingStartDocument),
                                
m_formatterListenerSetAndRestore(theExecutionContext,
                                                                                
                 theNewListener),
                                
m_pendingElementNameSetAndRestore(theExecutionContext,
  @@ -429,12 +525,16 @@
                }
   
        private:
  +
  +             const HasPendingStartDocumentSetAndRestore                      
m_hasPendingSetAndRestore;
  +
  +             const MustFlushPendingStartDocumentSetAndRestore        
m_flushPendingSetAndRestore;
   
  -             FormatterListenerSetAndRestore          
m_formatterListenerSetAndRestore;
  +             const FormatterListenerSetAndRestore                            
m_formatterListenerSetAndRestore;
   
  -             PendingElementNameSetAndRestore         
m_pendingElementNameSetAndRestore;
  +             const PendingElementNameSetAndRestore                           
m_pendingElementNameSetAndRestore;
   
  -             PendingAttributesSetAndRestore          
m_pendingAttributesSetAndRestore;
  +             const PendingAttributesSetAndRestore                            
m_pendingAttributesSetAndRestore;
        };
   
        /**
  
  
  
  1.13      +32 -0     
xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp
  
  Index: StylesheetExecutionContextDefault.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- StylesheetExecutionContextDefault.cpp     2000/05/24 19:38:49     1.12
  +++ StylesheetExecutionContextDefault.cpp     2000/05/25 16:51:35     1.13
  @@ -384,6 +384,38 @@
   
   
   
  +bool
  +StylesheetExecutionContextDefault::getHasPendingStartDocument() const
  +{
  +     return m_xsltProcessor.getHasPendingStartDocument();
  +}
  +
  +
  +
  +void
  +StylesheetExecutionContextDefault::setHasPendingStartDocument(bool   b)
  +{
  +     m_xsltProcessor.setHasPendingStartDocument(b);
  +}
  +
  +
  +
  +bool
  +StylesheetExecutionContextDefault::getMustFlushPendingStartDocument() const
  +{
  +     return m_xsltProcessor.getMustFlushPendingStartDocument();
  +}
  +
  +
  +
  +void
  +StylesheetExecutionContextDefault::setMustFlushPendingStartDocument(bool     
b)
  +{
  +     m_xsltProcessor.setMustFlushPendingStartDocument(b);
  +}
  +
  +
  +
   int
   StylesheetExecutionContextDefault::getIndent() const
   {
  
  
  
  1.14      +12 -0     
xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.hpp
  
  Index: StylesheetExecutionContextDefault.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.hpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- StylesheetExecutionContextDefault.hpp     2000/05/24 19:38:49     1.13
  +++ StylesheetExecutionContextDefault.hpp     2000/05/25 16:51:36     1.14
  @@ -188,6 +188,18 @@
        virtual void
        setFormatterListener(FormatterListener*         flistener);
   
  +     virtual bool
  +     getHasPendingStartDocument() const;
  +
  +     virtual void
  +     setHasPendingStartDocument(bool b);
  +
  +     virtual bool
  +     getMustFlushPendingStartDocument() const;
  +
  +     virtual void
  +     setMustFlushPendingStartDocument(bool   b);
  +
        virtual int
        getIndent() const;
   
  
  
  
  1.40      +71 -118   xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp
  
  Index: XSLTEngineImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- XSLTEngineImpl.cpp        2000/05/24 19:38:49     1.39
  +++ XSLTEngineImpl.cpp        2000/05/25 16:51:36     1.40
  @@ -192,7 +192,6 @@
        m_rootDoc(),
        m_outputCarriageReturns(false),
        m_outputLinefeeds(false),
  -     m_formatter(0),
        m_resultTreeFactory(0),
        m_resultNameSpacePrefix(),
        m_resultNameSpaceURL(),
  @@ -201,6 +200,7 @@
        m_pendingElementName(),
        m_pendingAttributes(),
        m_hasPendingStartDocument(false),
  +     m_mustFlushStartDocument(false),
        m_resultNameSpaces(),
        m_emptyNamespace(),
        m_xpathFactory(xpathFactory),
  @@ -270,6 +270,7 @@
        m_needToCheckForInfiniteLoops = false;
        m_variableStacks.reset();
        m_hasPendingStartDocument = false;
  +     m_mustFlushStartDocument = false;
   
        m_stackGuard.clear();
        m_xpathSupport.reset();
  @@ -1407,12 +1408,13 @@
        assert(m_flistener != 0);
        assert(m_executionContext != 0);
   
  -//   if (m_hasPendingStartDocument == false)
  -//   {
  -//           m_hasPendingStartDocument = true;
  -//   }
  -//   else
  +     if (m_hasPendingStartDocument == false)
        {
  +             m_hasPendingStartDocument = true;
  +             m_mustFlushStartDocument = false;
  +     }
  +     else if (m_mustFlushStartDocument == true)
  +     {
                m_flistener->startDocument();
   
                if(getTraceListeners() > 0)
  @@ -1422,6 +1424,8 @@
                        fireGenerateEvent(ge);
                }
   
  +             // Reset this, but leave m_mustFlushStartDocument alone,
  +             // since it will still be needed.
                m_hasPendingStartDocument = false;
        }
   }
  @@ -1547,12 +1551,7 @@
   void
   XSLTEngineImpl::flushPending()
   {
  -     if (m_hasPendingStartDocument == true)
  -     {
  -             startDocument();
  -     }
  -
  -     if(0 != length(m_pendingElementName))
  +     if(m_hasPendingStartDocument == true && 0 != 
length(m_pendingElementName))
        {
                assert(m_flistener != 0);
                assert(m_executionContext != 0);
  @@ -1561,7 +1560,6 @@
                {
                        if (equalsIgnoreCase(m_pendingElementName,
                                                                 
Constants::ELEMNAME_HTML_STRING) == true &&
  -//                           m_hasPendingStartDocument == true &&
                                pendingAttributesHasDefaultNS() == false)
                        {
                                if (m_flistener->getOutputFormat() == 
FormatterListener::OUTPUT_METHOD_XML)
  @@ -1584,7 +1582,18 @@
                                }
                        }
                }
  +     }
  +
  +     if(m_hasPendingStartDocument == true && m_mustFlushStartDocument == 
true)
  +     {
  +             startDocument();
  +     }
   
  +     if(0 != length(m_pendingElementName) && m_mustFlushStartDocument == 
true)
  +     {
  +             assert(m_flistener != 0);
  +             assert(m_executionContext != 0);
  +
                m_cdataStack.push_back(isCDataResultElem(m_pendingElementName)? 
true : false);
                m_flistener->startElement(c_wstr(m_pendingElementName), 
m_pendingAttributes);
   
  @@ -1617,6 +1626,8 @@
        nsVector.push_back(m_emptyNamespace);
        m_resultNameSpaces.push_back(nsVector);
        m_pendingElementName = name;
  +
  +     m_mustFlushStartDocument = true;
   }
   
   
  @@ -1700,10 +1711,12 @@
        assert(m_flistener != 0);
        assert(ch != 0);
   
  +     m_mustFlushStartDocument = true;
  +
        flushPending();
   
        const Stylesheet::QNameVectorType&      cdataElems =
  -             m_stylesheetRoot->getCDATASectionElems();
  +                     m_stylesheetRoot->getCDATASectionElems();
   
        if(0 != cdataElems.size() && 0 != m_cdataStack.size())
        {
  @@ -1722,7 +1735,7 @@
                if(getTraceListeners() > 0)
                {
                        GenerateEvent ge(this, 
GenerateEvent::EVENTTYPE_CHARACTERS, ch,
  -                                     start, length);
  +                                             start, length);
                        fireGenerateEvent(ge);
                }
        }
  @@ -1730,12 +1743,15 @@
   
   
   
  +
   void 
   XSLTEngineImpl::charactersRaw (
                        const XMLCh* const      ch,
                        const unsigned int      /* start */,
                        const unsigned int      length)
   {
  +     m_mustFlushStartDocument = true;
  +
        flushPending();
   
        m_flistener->charactersRaw(ch, length);
  @@ -1771,6 +1787,8 @@
        assert(m_flistener != 0);
        assert(ch != 0);
   
  +     m_mustFlushStartDocument = true;
  +
        flushPending();
   
        m_flistener->ignorableWhitespace(ch, length);
  @@ -1778,7 +1796,7 @@
        if(getTraceListeners() > 0)
        {
                GenerateEvent ge(this, 
GenerateEvent::EVENTTYPE_IGNORABLEWHITESPACE,
  -                             ch, 0, length);
  +                                     ch, 0, length);
   
                fireGenerateEvent(ge);
        }
  @@ -1795,6 +1813,8 @@
        assert(target != 0);
        assert(data != 0);
   
  +     m_mustFlushStartDocument = true;
  +
        flushPending();
   
        m_flistener->processingInstruction(target, data);
  @@ -1816,6 +1836,8 @@
        assert(m_flistener != 0);
        assert(data != 0);
   
  +     m_mustFlushStartDocument = true;
  +
        flushPending();
   
        m_flistener->comment(data);
  @@ -1835,6 +1857,8 @@
        assert(m_flistener != 0);
        assert(name != 0);
   
  +     m_mustFlushStartDocument = true;
  +
        flushPending();
   
        m_flistener->entityReference(name);
  @@ -1859,6 +1883,8 @@
        assert(m_flistener != 0);
        assert(ch != 0);
   
  +     m_mustFlushStartDocument = true;
  +
        flushPending();
   
        const Stylesheet::QNameVectorType&      cdataElems =
  @@ -1892,7 +1918,6 @@
   
   
   
  -
   void
   XSLTEngineImpl::cloneToResultTree(
                        XalanNode&                      node, 
  @@ -2055,52 +2080,6 @@
   
   
   
  -class StatePushPop
  -{
  -public:
  -
  -     StatePushPop(
  -             FormatterListener*&             theCurrentListener,
  -             FormatterListener*              theNewListener,
  -             DOMString&                              thePendingElementName,
  -             AttributeListImpl&              thePendingAttributes) :
  -                     m_listener(theCurrentListener),
  -                     m_savedListener(theCurrentListener),
  -                     m_pendingElementName(thePendingElementName),
  -                     m_savedPendingElementName(thePendingElementName),
  -                     m_pendingAttributes(thePendingAttributes),
  -                     m_savedPendingAttributes(thePendingAttributes)
  -     {
  -             theCurrentListener = theNewListener;
  -
  -             clear(m_pendingElementName);
  -
  -             m_pendingAttributes.clear();
  -     }
  -
  -     ~StatePushPop()
  -     {
  -             m_listener = m_savedListener;
  -             m_pendingElementName = m_savedPendingElementName;
  -             m_pendingAttributes = m_savedPendingAttributes;
  -     }
  -
  -private:
  -
  -     FormatterListener*&                     m_listener;
  -     FormatterListener* const        m_savedListener;
  -
  -     DOMString&                                      m_pendingElementName;
  -     const DOMString                         m_savedPendingElementName;
  -
  -     AttributeListImpl&                      m_pendingAttributes;
  -     const AttributeListImpl         m_savedPendingAttributes;
  -};
  -
  -
  -
  -
  -// @@ java: DocumentFragment
   ResultTreeFragBase*
   XSLTEngineImpl::createResultTreeFrag(
                        StylesheetExecutionContext&             
executionContext,
  @@ -2117,41 +2096,18 @@
   
        FormatterToDOM  tempFormatter(m_resultTreeFactory, 
                                                                  pfrag.get());
  -
  -     StatePushPop    theStateSaver(
  -                                             m_flistener,
  -                                             &tempFormatter,
  -                                             m_pendingElementName,
  -                                             m_pendingAttributes);
   
  -     templateChild.executeChildren(executionContext, sourceTree, sourceNode, 
mode);
  -
  -     return pfrag.release();
  -}
  +     m_mustFlushStartDocument = true;
   
  +     flushPending();
   
  +     StylesheetExecutionContext::ExecutionStateSetAndRestore         
theStateSaveAndRestore(
  +                     executionContext,
  +                     &tempFormatter);
   
  -// $$$ ToDo: This is not called anywhere, can it be removed?
  -void
  -XSLTEngineImpl::writeChildren(
  -                     FormatterListener*                              
flistener,
  -                     StylesheetExecutionContext&             
executionContext,
  -             const ElemTemplateElement&              templateParent,
  -             XalanNode&                                              
sourceTree,
  -             XalanNode&                                              
sourceNode,
  -                     const QName&                                    mode)
  -{
  -    flushPending();
  +     templateChild.executeChildren(executionContext, sourceTree, sourceNode, 
mode);
   
  -     StatePushPop    theStateSaver(
  -                                             m_flistener,
  -                                             flistener,
  -                                             m_pendingElementName,
  -                                             m_pendingAttributes);
  -
  -    templateParent.executeChildren(executionContext, &sourceTree, 
&sourceNode, mode);
  -    
  -    flushPending();
  +     return pfrag.release();
   }
   
   
  @@ -2161,8 +2117,6 @@
   {
        const ResultTreeFragBase&       docFrag = theTree.rtree();
   
  -     // $$$ ToDo: We should optimize this so that we don't have
  -     // a node list.
        const XalanNodeList*            nl = docFrag.getChildNodes();
        assert(nl != 0);
   
  @@ -2256,7 +2210,6 @@
                        if(0 == length(elemNS))
                        {
                                error(XalanDOMString("Prefix must resolve to a 
namespace: ") + prefix);
  -                      // throw new RuntimeException(+prefix);
                        }
   
                        elemLocalName = substring(elementName, indexOfNSSep + 
1);
  @@ -3601,25 +3554,6 @@
   
   
   
  -void
  -XSLTEngineImpl::setFormatter(Formatter*              formatter)
  -{
  -     flushPending();
  -
  -     m_formatter = formatter;
  -
  -     if(0 != formatter)
  -     {
  -             m_flistener = formatter->getFormatterListener();
  -     }
  -     else
  -     {
  -             m_flistener = 0;
  -     }
  -}
  -
  -
  -
   FormatterListener*
   XSLTEngineImpl::getFormatterListener() const
   {
  @@ -3631,6 +3565,13 @@
   void
   XSLTEngineImpl::setFormatterListener(FormatterListener*              
flistener)
   {
  +     if (m_hasPendingStartDocument == true && m_flistener != 0)
  +     {
  +             m_mustFlushStartDocument = true;
  +
  +             flushPending();
  +     }
  +
        m_flistener = flistener;
   }
   
  @@ -3990,9 +3931,7 @@
   
        if (theStackEntry->getType() != StackEntry::eContextMarker)
        {
  -             // @@ $$$ ToDo: Fix this!!!
  -             // throw InvalidStackContext();
  -             return;
  +             throw InvalidStackContextException();
        }
   
        VariableStackStackType          tempStack;
  @@ -4187,6 +4126,20 @@
        }
   
        return theResult;
  +}
  +
  +
  +
  
+XSLTEngineImpl::VariableStack::InvalidStackContextException::InvalidStackContextException()
 :
  +     XSLTProcessorException(XALAN_STATIC_UCODE_STRING("Invalid stack 
context"),
  +                                                
XALAN_STATIC_UCODE_STRING("InvalidStackContextException"))
  +{
  +}
  +
  +
  +
  
+XSLTEngineImpl::VariableStack::InvalidStackContextException::~InvalidStackContextException()
  +{
   }
   
   
  
  
  
  1.33      +67 -46    xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp
  
  Index: XSLTEngineImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- XSLTEngineImpl.hpp        2000/05/24 19:38:49     1.32
  +++ XSLTEngineImpl.hpp        2000/05/25 16:51:37     1.33
  @@ -192,23 +192,14 @@
      */
        bool    m_outputCarriageReturns;
   
  -  /**
  -   * If true, output linefeeds.
  -   */
  +     /**
  +      * If true, output linefeeds.
  +      */
        bool    m_outputLinefeeds;
   
        /**
  -      * The formatter interface, which has the toMarkup 
  -      * method, and which will eventually hold other non-event 
  -      * methods.  Not to be confused with the DocumentHandler
  -      * interface.
  -     */
  -     // @@ JMD: Temporarily public
  -     Formatter*                      m_formatter;
  -  
  -  /**
  -   * The factory that will be used to create result tree fragments.
  -   */
  +      * The factory that will be used to create result tree fragments.
  +      */
        mutable XalanDocument*  m_resultTreeFactory;
   
     /**
  @@ -1289,16 +1280,6 @@
                return m_xpathEnvSupport;
        }
   
  -     /**
  -      * Set the formatter interface, which has the toMarkup method, and which
  -      * will eventually hold other non-event methods.  Not to be confused 
with
  -      * the DocumentHandler interface.
  -      *
  -      * @param formatter pointer to formatter
  -      */
  -     void
  -     setFormatter(Formatter*         formatter);
  -
        // $$$ ToDo: why isn't this just a NodeRefListBase?
        const MutableNodeRefList&
        getContextNodeList() const
  @@ -1361,7 +1342,8 @@
         *
         * @param l pointer to ProblemListener interface
         */
  -     void setProblemListener(ProblemListener*                l)
  +     void
  +     setProblemListener(ProblemListener*             l)
        {
                m_problemListener = l;
        }
  @@ -1374,11 +1356,52 @@
         *
         * @return pointer to ProblemListener interface
         */
  -     ProblemListener* getProblemListener() const
  +     ProblemListener*
  +     getProblemListener() const
        {
                return m_problemListener;
        }
   
  +     /*
  +      * See if there is a pending start document event waiting.
  +      * @return true if there is a start document event waiting.
  +      */
  +     bool
  +     getHasPendingStartDocument() const
  +     {
  +             return m_hasPendingStartDocument;
  +     }
  +
  +     /*
  +      * Set the pending start document event state.
  +      * @param the new value
  +      */
  +     void
  +     setHasPendingStartDocument(bool b)
  +     {
  +             m_hasPendingStartDocument = b;
  +     }
  +
  +     /*
  +      * See if a pending start document event must be flushed.
  +      * @return true if the event must be flushed.
  +      */
  +     bool
  +     getMustFlushPendingStartDocument() const
  +     {
  +             return m_mustFlushStartDocument;
  +     }
  +
  +     /*
  +      * Set the pending start document event flush state.
  +      * @param the new value
  +      */
  +     void
  +     setMustFlushPendingStartDocument(bool   b)
  +     {
  +             m_hasPendingStartDocument = b;
  +     }
  +
        /**
         * An class for  exceptions that occur when a given stylesheet goes 
into an
         * infinite loop.
  @@ -1604,6 +1627,19 @@
                        return m_stack.back();
                }
   
  +             class InvalidStackContextException : public 
XSLTProcessorException
  +             {
  +             public:
  +
  +                     InvalidStackContextException();
  +
  +                     virtual
  +                     ~InvalidStackContextException();
  +
  +             private:
  +
  +             };
  +
        private:
   
                XObject*
  @@ -1854,6 +1890,11 @@
         */
        bool                            m_hasPendingStartDocument;
   
  +     /*
  +      * true if a pending startDocument() must be flushed.
  +      */
  +     bool                            m_mustFlushStartDocument;
  +
        /**
         * NOTE: This replaces the ResultNameSpace class in java, since it is 
the
         * same as the NameSpace class
  @@ -2009,26 +2050,6 @@
         * be set by the caller.
         */
        XalanDOMString m_outputFileName;
  -     
  -     /**
  -      * Write the children of a stylesheet element to the given listener.
  -      * @exception XSLProcessorException thrown if the active 
ProblemListener and XMLParserLiaison decide 
  -      * the error condition is severe enough to halt processing.
  -      * @param stylesheetTree The stylesheet object that holds the fragment.
  -      * @param templateParent The template element that holds the fragment.
  -      * @param sourceTree The source tree document context.
  -      * @param sourceNode The current source context node.
  -      * @param mode The mode under which the template is operating.
  -      * @return An object that represents the result tree fragment.
  -      */
  -     void
  -     writeChildren(
  -                     FormatterListener*                              
flistener,
  -                     StylesheetExecutionContext&     executionContext,
  -                     const ElemTemplateElement&              templateParent,
  -                     XalanNode&                                              
sourceTree,
  -                     XalanNode&                                              
sourceNode,
  -                     const QName&                                    mode);
   
   
     //==========================================================
  
  
  

Reply via email to