dbertoni    00/05/29 15:47:56

  Modified:    c/src/XSLT StylesheetConstructionContext.hpp
                        StylesheetConstructionContextDefault.cpp
                        StylesheetConstructionContextDefault.hpp
                        StylesheetHandler.cpp StylesheetHandler.hpp
  Log:
  Removed dependency on XSLTEngineImpl.
  
  Revision  Changes    Path
  1.7       +71 -0     xml-xalan/c/src/XSLT/StylesheetConstructionContext.hpp
  
  Index: StylesheetConstructionContext.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContext.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StylesheetConstructionContext.hpp 2000/05/12 18:21:32     1.6
  +++ StylesheetConstructionContext.hpp 2000/05/29 22:47:55     1.7
  @@ -79,9 +79,13 @@
   
   
   
  +class DocumentHandler;
  +class Locator;
   class PrefixResolver;
   class StylesheetRoot;
  +class XalanDocument;
   class XPath;
  +class XMLURL;
   class XSLTInputSource;
   
   
  @@ -210,6 +214,73 @@
        createXPath(
                        const XalanDOMString&   str,
                        const PrefixResolver&   resolver) = 0;
  +
  +     /**
  +      * Get the locator from the top of the locator stack.
  +      *
  +      * @return A pointer to the Locator, or 0 if there is nothing on the 
stack.
  +      */
  +     virtual const Locator*
  +     getLocatorFromStack() const = 0;
  +
  +     /**
  +      * Push a locator on to the locator stack.
  +      *
  +      * @param A pointer to the Locator to push.
  +      */
  +     virtual void
  +     pushLocatorOnStack(const Locator*       locator) = 0;
  +
  +     /**
  +      * Pop the locator from the top of the locator stack.
  +      */
  +     virtual void
  +     popLocatorStack() = 0;
  +
  +     /**
  +      * Get the Xalan namespace for built-in extensions.
  +      *
  +      * @return Xalan namespace for extensions
  +      */
  +     virtual const XalanDOMString&
  +     getXalanXSLNameSpaceURL() const = 0;
  +
  +     /**
  +      * Read in the XML file, either producing a Document or calling SAX 
events,
  +      * and register the document in a table.  If the document has already 
been
  +      * read in, it will not be reparsed.
  +      *
  +      * @param url location of the XML
  +      * @param docHandler pointer to SAX event handler
  +      * @param docToRegister if using a SAX event handler, the object to 
register in the source docs table. 
  +      * @return document object, which represents the parsed XML
  +      * @exception SAXException
  +      */
  +     virtual XalanDocument*
  +     parseXML(
  +                     const XMLURL&           url,
  +                     DocumentHandler*        docHandler, 
  +                     XalanDocument*          docToRegister) = 0;
  +
  +     /**
  +      * Given an XSL tag name, return an integer token that corresponds to
  +      * ELEMNAME_XXX constants defined in Constants.hpp
  +      *
  +      * @param name a probable xsl:xxx element
  +      * @return Constants.ELEMNAME_XXX token, -1 if in XSL or Xalan 
namespace,
  +      *                 or -2 if not in known namespace
  +      */
  +     virtual int
  +     getElementToken(const XalanDOMString&   name) const = 0;
  +
  +     /**
  +      * Get the latest XSLT version currently supported.
  +      *
  +      * @return XSLT version number
  +      */
  +     virtual double
  +     getXSLTVersionSupported() const = 0;
  +
   
        // These interfaces are inherited from ExecutionContext...
   
  
  
  
  1.6       +61 -0     
xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.cpp
  
  Index: StylesheetConstructionContextDefault.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StylesheetConstructionContextDefault.cpp  2000/05/12 18:21:32     1.5
  +++ StylesheetConstructionContextDefault.cpp  2000/05/29 22:47:55     1.6
  @@ -150,6 +150,8 @@
        for_each(m_stylesheets.begin(),
                         m_stylesheets.end(),
                         DeleteFunctor<StylesheetRoot>());
  +
  +     m_stylesheets.clear();
   }
   
   
  @@ -265,3 +267,62 @@
   
        return xpath;
   }
  +
  +
  +
  +const Locator*
  +StylesheetConstructionContextDefault::getLocatorFromStack() const
  +{
  +     return m_processor.getLocatorFromStack();
  +}
  +
  +
  +
  +void
  +StylesheetConstructionContextDefault::pushLocatorOnStack(const Locator*      
        locator)
  +{
  +     m_processor.pushLocatorOnStack(locator);
  +}
  +
  +
  +
  +void
  +StylesheetConstructionContextDefault::popLocatorStack()
  +{
  +     m_processor.popLocatorStack();
  +}
  +
  +
  +
  +const XalanDOMString&
  +StylesheetConstructionContextDefault::getXalanXSLNameSpaceURL() const
  +{
  +     return XSLTEngineImpl::getXalanXSLNameSpaceURL();
  +}
  +
  +
  +
  +XalanDocument*
  +StylesheetConstructionContextDefault::parseXML(
  +                     const XMLURL&           url,
  +                     DocumentHandler*        docHandler, 
  +                     XalanDocument*          docToRegister)
  +{
  +     return m_processor.parseXML(url, docHandler, docToRegister);
  +}
  +
  +
  +
  +int
  +StylesheetConstructionContextDefault::getElementToken(const XalanDOMString&  
name) const
  +{
  +     return m_processor.getElementToken(name);
  +}
  +
  +
  +
  +double
  +StylesheetConstructionContextDefault::getXSLTVersionSupported() const
  +{
  +     return XSLTEngineImpl::getXSLTVerSupported();
  +}
  \ No newline at end of file
  
  
  
  1.7       +25 -0     
xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.hpp
  
  Index: StylesheetConstructionContextDefault.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StylesheetConstructionContextDefault.hpp  2000/05/12 18:21:33     1.6
  +++ StylesheetConstructionContextDefault.hpp  2000/05/29 22:47:55     1.7
  @@ -73,6 +73,7 @@
   
   #include <memory>
   #include <set>
  +#include <vector>
   
   
   
  @@ -160,6 +161,30 @@
        createXPath(
                        const XalanDOMString&   str,
                        const PrefixResolver&   resolver);
  +
  +     virtual const Locator*
  +     getLocatorFromStack() const;
  +
  +     virtual void
  +     pushLocatorOnStack(const Locator*       locator);
  +
  +     virtual void
  +     popLocatorStack();
  +
  +     virtual const XalanDOMString&
  +     getXalanXSLNameSpaceURL() const;
  +
  +     virtual XalanDocument*
  +     parseXML(
  +                     const XMLURL&           url,
  +                     DocumentHandler*        docHandler, 
  +                     XalanDocument*          docToRegister);
  +
  +     virtual int
  +     getElementToken(const XalanDOMString&   name) const;
  +
  +     virtual double
  +     getXSLTVersionSupported() const;
   
   private:
   
  
  
  
  1.29      +24 -27    xml-xalan/c/src/XSLT/StylesheetHandler.cpp
  
  Index: StylesheetHandler.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetHandler.cpp,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- StylesheetHandler.cpp     2000/05/26 19:23:02     1.28
  +++ StylesheetHandler.cpp     2000/05/29 22:47:55     1.29
  @@ -70,6 +70,7 @@
   
   
   
  +#include <PlatformSupport/AttributeListImpl.hpp>
   #include <PlatformSupport/DOMStringHelper.hpp>
   #include <PlatformSupport/StringTokenizer.hpp>
   
  @@ -110,19 +111,16 @@
   #include "Stylesheet.hpp"
   #include "StylesheetConstructionContext.hpp"
   #include "StylesheetRoot.hpp"
  -#include "XSLTEngineImpl.hpp"
   
   
   
   StylesheetHandler::StylesheetHandler(
  -                     XSLTEngineImpl&                                 
processor,
                        Stylesheet&                                             
stylesheetTree,
                        StylesheetConstructionContext&  constructionContext) :
        FormatterListener(OUTPUT_METHOD_OTHER),
        m_includeBase(stylesheetTree.getBaseIdentifier()),
        m_pendingException(),
        m_exceptionPending(false),
  -     m_processor(processor),
        m_stylesheet(stylesheetTree),
        m_constructionContext(constructionContext),
        m_elemStack(),
  @@ -169,7 +167,7 @@
   
   void StylesheetHandler::setDocumentLocator(const Locator* const              
locator)
   {
  -     m_processor.pushLocatorOnStack(locator);
  +     m_constructionContext.pushLocatorOnStack(locator);
   }
   
   
  @@ -183,7 +181,7 @@
   
   void StylesheetHandler::endDocument()
   {
  -     m_processor.popLocatorStack();
  +     m_constructionContext.popLocatorStack();
   
        if (m_exceptionPending == true)
        {
  @@ -254,7 +252,7 @@
   
                m_whiteSpaceElems.clear();
   
  -             const Locator* const    locator = 
m_processor.getLocatorFromStack();
  +             const Locator* const    locator = 
m_constructionContext.getLocatorFromStack();
   
                const int       lineNumber = 0 != locator ? 
locator->getLineNumber() : 0;
                const int       columnNumber = 0 != locator ? 
locator->getColumnNumber() : 0;
  @@ -290,11 +288,8 @@
                                m_stylesheet.setWrapperless(false);
                        }
   
  -                     XSLTEngineImpl::AttributeKeysMapType::const_iterator 
iter=
  -                             
XSLTEngineImpl::getElementKeys().find(localName);
  +                     const int xslToken = 
m_constructionContext.getElementToken(localName);
   
  -                     int xslToken = iter!= 
XSLTEngineImpl::getElementKeys().end() ? (*iter).second : -2;
  -
                        if(!m_inTemplate)
                        {
                                if(m_foundStylesheet && 
Constants::ELEMNAME_IMPORT != xslToken)
  @@ -314,9 +309,9 @@
                                        break;
   
                                case Constants::ELEMNAME_EXTENSION:
  -                                     if(!equalsIgnoreCase(ns, 
m_processor.getXalanXSLNameSpaceURL()))
  +                                     if(!equalsIgnoreCase(ns, 
m_constructionContext.getXalanXSLNameSpaceURL()))
                                        {
  -                                             m_constructionContext.warn("Old 
syntax: the functions instruction should use a url of " + 
m_processor.getXalanXSLNameSpaceURL());
  +                                             m_constructionContext.warn("Old 
syntax: the functions instruction should use a url of " + 
m_constructionContext.getXalanXSLNameSpaceURL());
                                        }
                                        // 
m_constructionContext.handleFunctionsInstruction((Element)child);
                                break;
  @@ -342,7 +337,7 @@
                                break;
   
                                case Constants::ELEMNAME_LOCALE:
  -                                     
m_processor.warn(XALAN_STATIC_UCODE_STRING("xsl:locale not yet supported!"));
  +                                     
m_constructionContext.warn(XALAN_STATIC_UCODE_STRING("xsl:locale not yet 
supported!"));
                                        break;
   
                                case Constants::ELEMNAME_PRESERVESPACE:
  @@ -550,7 +545,7 @@
   
                                                                const 
XalanDOMString extns = m_stylesheet.getNamespaceForPrefixFromStack(prefix);
   
  -                                                             
ExtensionNSHandler* const       nsh = new ExtensionNSHandler(m_processor, 
extns);
  +                                                             
ExtensionNSHandler* const       nsh = new ExtensionNSHandler(extns);
                                                                
m_stylesheet.addExtensionNamespace(extns, nsh);
                                                        }
                                                }
  @@ -835,7 +830,7 @@
   
                                        // If this stylesheet is declared to be 
of a higher version than the one
                                        // supported, don't flag an error.
  -                                     
if(XSLTEngineImpl::getXSLTVerSupported() < m_stylesheet.getXSLTVerDeclared())
  +                                     
if(m_constructionContext.getXSLTVersionSupported() < 
m_stylesheet.getXSLTVerDeclared())
                                        {
                                                m_constructionContext.warn(msg);
                                        }
  @@ -848,7 +843,7 @@
                  }
                }
                // BEGIN SANJIVA CODE
  -             else if (!m_inTemplate && 
startsWith(ns,m_processor.getXalanXSLNameSpaceURL()))
  +             else if (!m_inTemplate && startsWith(ns, 
m_constructionContext.getXalanXSLNameSpaceURL()))
                {
                        if (equals(localName, 
XALAN_STATIC_UCODE_STRING("component")))
                        {
  @@ -894,7 +889,7 @@
                                if (nsh == 0) 
                                {
                                        // The extension namespace might not 
yet be known...
  -                                     nsh = new 
ExtensionNSHandler(m_processor, extns);
  +                                     nsh = new ExtensionNSHandler(extns);
   
                                        
m_stylesheet.addExtensionNamespace(extns, nsh);
                                }
  @@ -1004,8 +999,12 @@
                        m_elemStack.push_back(new 
ElemEmpty(m_constructionContext,
                                                                         
m_stylesheet,
                                                                         name, 
lineNumber, columnNumber));
  -             }
   
  +                     if (elem != 0)
  +                     {
  +                             delete elem;
  +                     }
  +             }
        } // end try
   
        // Here's the story.  startElement throws exceptions for certain 
malformed constructs.  These
  @@ -1151,12 +1150,10 @@
                                theImportURI,
                                m_constructionContext);
   
  -                     StylesheetHandler tp(m_processor, *pImportedStylesheet, 
m_constructionContext);
  +                     StylesheetHandler tp(*pImportedStylesheet, 
m_constructionContext);
   
  -//                   pImportedStylesheet->setBaseIdentifier();
  +                     m_constructionContext.parseXML(*hrefUrl, &tp, 
pImportedStylesheet);
   
  -                     m_processor.parseXML(*hrefUrl, &tp, 
pImportedStylesheet);
  -
                        // I'm going to insert the elements in backwards order, 
                        // so I can walk them 0 to n.
                        
m_stylesheet.getImports().insert(m_stylesheet.getImports().begin(),
  @@ -1196,7 +1193,7 @@
                if(equals(aname, Constants::ATTRNAME_HREF))
                {
                        foundIt = true;
  -                     
  +
                        PushPopIncludeState             theStateHandler(*this);
   
                        const XalanDOMString    href = atts.getValue(i);
  @@ -1216,7 +1213,7 @@
                        m_stylesheet.getIncludeStack().push_back(hrefUrl.get());
                        hrefUrl.release();
   
  -                     m_processor.parseXML(*hrefUrl, this, &m_stylesheet);
  +                     m_constructionContext.parseXML(*hrefUrl, this, 
&m_stylesheet);
   
                        m_stylesheet.getIncludeStack().pop_back();
                }
  @@ -1326,7 +1323,7 @@
                        preserveSpace = true;
                }
   
  -             const Locator* const    locator = 
m_processor.getLocatorFromStack();
  +             const Locator* const    locator = 
m_constructionContext.getLocatorFromStack();
   
                const int                               lineNumber = (0 != 
locator) ? locator->getLineNumber() : 0;
                const int                               columnNumber = (0 != 
locator) ? locator->getColumnNumber() : 0;
  @@ -1413,7 +1410,7 @@
                        preserveSpace = true;
                }
   
  -             const Locator* const    locator = 
m_processor.getLocatorFromStack();
  +             const Locator* const    locator = 
m_constructionContext.getLocatorFromStack();
   
                const int lineNumber = (0 != locator) ? 
locator->getLineNumber() : 0;
                const int columnNumber = (0 != locator) ? 
locator->getColumnNumber() : 0;
  @@ -1531,7 +1528,7 @@
   void
   StylesheetHandler::charactersRaw(const XMLCh* const /* chars */, const 
unsigned int  /* length */)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  +     // if we have a pending exception, we don't want to even try to process 
this
        if (m_exceptionPending == true)
                return;
   
  
  
  
  1.13      +0 -7      xml-xalan/c/src/XSLT/StylesheetHandler.hpp
  
  Index: StylesheetHandler.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetHandler.hpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- StylesheetHandler.hpp     2000/04/20 16:47:35     1.12
  +++ StylesheetHandler.hpp     2000/05/29 22:47:56     1.13
  @@ -84,7 +84,6 @@
   class ExtensionNSHandler;
   class Stylesheet;
   class StylesheetConstructionContext;
  -class XSLTEngineImpl;
   
   
   
  @@ -109,7 +108,6 @@
         * to the document fragment.
         */
        StylesheetHandler(
  -                     XSLTEngineImpl&                                 
processor,
                        Stylesheet&                                             
stylesheetTree,
                        StylesheetConstructionContext&  constructionContext);
   
  @@ -402,11 +400,6 @@
        typedef std::vector<ElemTextLiteral*>           
ElemTextLiteralStackType;
   #endif
   
  -     /**
  -      * The XSLT Processor for needed services.
  -      */
  -     XSLTEngineImpl& m_processor;
  -     
        /**
         * The owning stylesheet.
         */
  
  
  

Reply via email to