dbertoni    01/05/10 11:04:27

  Modified:    c/src/XSLT XSLTEngineImpl.cpp XSLTEngineImpl.hpp
  Log:
  Changes to use the EntityResolver before using an internal InputSource.
  
  Revision  Changes    Path
  1.97      +39 -5     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.96
  retrieving revision 1.97
  diff -u -r1.96 -r1.97
  --- XSLTEngineImpl.cpp        2001/05/02 15:56:02     1.96
  +++ XSLTEngineImpl.cpp        2001/05/10 18:04:20     1.97
  @@ -78,6 +78,7 @@
   
   
   #include <sax/DocumentHandler.hpp>
  +#include <sax/EntityResolver.hpp>
   #include <sax/Locator.hpp>
   #include <sax/SAXException.hpp>
   #include <util/PlatformUtils.hpp>
  @@ -647,17 +648,30 @@
   
        if(doc == 0)
        {
  -             XSLTInputSource         inputSource(c_wstr(urlString));
  +             EntityResolver* const   theResolver = 
  +                     m_parserLiaison.getEntityResolver();
   
  -             if(0 != docHandler)
  +             if (theResolver == 0)
                {
  -                     m_parserLiaison.parseXMLStream(inputSource, 
*docHandler);
  +                     XSLTInputSource         inputSource(c_wstr(urlString));
   
  -                     doc = docToRegister;
  +                     doc = parseXML(inputSource, docHandler, docToRegister);
                }
                else
                {
  -                     doc = m_parserLiaison.parseXMLStream(inputSource);
  +                     InputSource* const      resolverInputSource =
  +                             theResolver->resolveEntity(0, 
c_wstr(urlString));
  +
  +                     if (resolverInputSource != 0)
  +                     {
  +                             doc = parseXML(*resolverInputSource, 
docHandler, docToRegister);
  +                     }
  +                     else
  +                     {
  +                             XSLTInputSource         
inputSource(c_wstr(urlString));
  +
  +                             doc = parseXML(inputSource, docHandler, 
docToRegister);
  +                     }
                }
   
                if (doc != 0)
  @@ -667,6 +681,26 @@
        }
   
        return doc;
  +}
  +
  +
  +
  +XalanDocument*
  +XSLTEngineImpl::parseXML(
  +                     const InputSource&      inputSource,
  +                     DocumentHandler*        docHandler,
  +                     XalanDocument*          docToRegister)
  +{
  +     if(0 != docHandler)
  +     {
  +             m_parserLiaison.parseXMLStream(inputSource, *docHandler);
  +
  +             return docToRegister;
  +     }
  +     else
  +     {
  +             return m_parserLiaison.parseXMLStream(inputSource);
  +     }
   }
   
   
  
  
  
  1.66      +19 -1     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.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- XSLTEngineImpl.hpp        2001/05/02 15:56:04     1.65
  +++ XSLTEngineImpl.hpp        2001/05/10 18:04:22     1.66
  @@ -119,9 +119,10 @@
   
   
   
  -// Forward definitions
  +// Forward declarations...
   class DOMSupport;
   class GenerateEvent;
  +class InputSource;
   class PrintWriter;
   class ResultTreeFragBase;
   class StylesheetConstructionContext;
  @@ -366,6 +367,23 @@
                        const XalanDOMString&   urlString,
                        DocumentHandler*                docHandler,
                        XalanDocument*                  docToRegister);
  +
  +     /**
  +      * 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 inputSource 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
  +      */
  +     XalanDocument*
  +     parseXML(
  +                     const InputSource&      inputSource,
  +                     DocumentHandler*        docHandler,
  +                     XalanDocument*          docToRegister);
   
        /**
         * Reset the state of the XSL processor by reading in a new XSL 
stylesheet
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to