dbertoni    01/09/14 13:49:45

  Modified:    c/src/XSLT FunctionCurrent.cpp FunctionCurrent.hpp
                        FunctionDocument.cpp FunctionDocument.hpp
                        FunctionElementAvailable.cpp
                        FunctionElementAvailable.hpp
                        FunctionFormatNumber.cpp FunctionFormatNumber.hpp
                        FunctionFunctionAvailable.cpp
                        FunctionFunctionAvailable.hpp
                        FunctionGenerateID.cpp FunctionGenerateID.hpp
                        FunctionKey.cpp FunctionKey.hpp
                        FunctionSystemProperty.cpp
                        FunctionSystemProperty.hpp
                        FunctionUnparsedEntityURI.cpp
                        FunctionUnparsedEntityURI.hpp
                        StylesheetConstructionContext.hpp
                        StylesheetConstructionContextDefault.cpp
                        StylesheetConstructionContextDefault.hpp
                        StylesheetExecutionContext.hpp
                        StylesheetExecutionContextDefault.cpp
                        StylesheetExecutionContextDefault.hpp
                        StylesheetHandler.cpp StylesheetHandler.hpp
                        XSLTEngineImpl.cpp XSLTEngineImpl.hpp
                        XSLTProcessor.hpp XSLTProcessorEnvSupport.hpp
                        XSLTProcessorEnvSupportDefault.cpp
                        XSLTProcessorEnvSupportDefault.hpp
  Log:
  Implemented improved error reporting.
  
  Revision  Changes    Path
  1.11      +8 -62     xml-xalan/c/src/XSLT/FunctionCurrent.cpp
  
  Index: FunctionCurrent.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionCurrent.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- FunctionCurrent.cpp       2000/12/06 21:19:16     1.10
  +++ FunctionCurrent.cpp       2001/09/14 20:49:43     1.11
  @@ -72,15 +72,18 @@
   
   XObjectPtr
   FunctionCurrent::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              context)
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const Locator*                  locator) const
   {
        assert(executionContext.getCurrentNode() != 0);
   
        if (context == 0)
        {
  -             executionContext.error("The current() function is not allowed 
in patterns!",
  -                                                        context);
  +             executionContext.error(
  +                     "The current() function is not allowed in patterns!",
  +                     context,
  +                     locator);
   
                return XObjectPtr();
        }
  @@ -92,62 +95,6 @@
   
   
   
  -XObjectPtr
  -FunctionCurrent::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionCurrent::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionCurrent::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionCurrent::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
   Function*
   #else
  @@ -163,6 +110,5 @@
   const XalanDOMString
   FunctionCurrent::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The current() function does not take any arguments!");
  +     return XALAN_STATIC_UCODE_STRING("The current() function does not 
accept any arguments!");
   }
  
  
  
  1.8       +3 -30     xml-xalan/c/src/XSLT/FunctionCurrent.hpp
  
  Index: FunctionCurrent.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionCurrent.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FunctionCurrent.hpp       2000/12/06 21:19:18     1.7
  +++ FunctionCurrent.hpp       2001/09/14 20:49:43     1.8
  @@ -91,38 +91,11 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const Locator*                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  
  
  
  1.25      +29 -62    xml-xalan/c/src/XSLT/FunctionDocument.cpp
  
  Index: FunctionDocument.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionDocument.cpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- FunctionDocument.cpp      2001/06/29 18:52:36     1.24
  +++ FunctionDocument.cpp      2001/09/14 20:49:43     1.25
  @@ -139,60 +139,57 @@
   
   
   
  -XObjectPtr
  -FunctionDocument::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
   
   XObjectPtr
   FunctionDocument::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              
context,                        
  -             const XObjectPtr                                arg1)
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,        
                
  +                     const XObjectPtr                arg1,
  +                     const Locator*                  locator) const
   {
        assert(arg1.null() == false);
   
        if (context == 0)
        {
  -             executionContext.error("The document() function requires a 
non-null context node!",
  -                                                        context);
  +             executionContext.error(
  +                     "The document() function requires a non-null context 
node!",
  +                     context,
  +                     locator);
   
                return XObjectPtr();
        }
  -
  -     XalanDOMString                          base;
  +     else
  +     {
  +             XalanDOMString                          base;
   
  -     assert(executionContext.getPrefixResolver() != 0);
  +             assert(executionContext.getPrefixResolver() != 0);
   
  -     base = executionContext.getPrefixResolver()->getURI();
  +             base = executionContext.getPrefixResolver()->getURI();
   
  -     return execute(executionContext, context, arg1, &base, 1);
  +             return doExecute(executionContext, context, arg1, &base, 1);
  +     }
   }
   
   
   
   XObjectPtr
   FunctionDocument::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              
context,                        
  -             const XObjectPtr                                arg1,
  -             const XObjectPtr                                arg2)
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,        
                
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const Locator*                  locator) const
   {
        assert(arg1.null() == false && arg2.null() == false);
   
  -     XalanDOMString                          base;
  +     XalanDOMString  base;
   
        if (context == 0)
        {
  -             executionContext.error("The document() function requires a 
non-null context node!",
  -                                                        context);
  +             executionContext.error(
  +                     "The document() function requires a non-null context 
node!",
  +                     context,
  +                     locator);
   
                return XObjectPtr();
        }
  @@ -233,47 +230,18 @@
                }
        }
   
  -     return execute(executionContext, context, arg1, &base, 2);
  +     return doExecute(executionContext, context, arg1, &base, 2);
   }
   
   
   
   XObjectPtr
  -FunctionDocument::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionDocument::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionDocument::execute(
  +FunctionDocument::doExecute(
                XPathExecutionContext&                  executionContext,
                XalanNode*                                              
context,                        
                const XObjectPtr                                arg,
                XalanDOMString*                                 base,
  -             int                                                             
argCount)
  +             int                                                             
argCount) const
   {
        typedef XPathExecutionContext::BorrowReturnMutableNodeRefList   
BorrowReturnMutableNodeRefList;
   
  @@ -375,6 +343,5 @@
   const XalanDOMString
   FunctionDocument::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The document() function requires at least one argument!");
  +     return XALAN_STATIC_UCODE_STRING("The document() function accepts one 
or two arguments!");
   }
  
  
  
  1.7       +17 -33    xml-xalan/c/src/XSLT/FunctionDocument.hpp
  
  Index: FunctionDocument.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionDocument.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FunctionDocument.hpp      2000/12/06 21:19:21     1.6
  +++ FunctionDocument.hpp      2001/09/14 20:49:43     1.7
  @@ -81,38 +81,20 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg,
  +                     const Locator*                  locator) const;
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  -
  -     XObjectPtr
  +     virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const Locator*                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  @@ -121,18 +103,20 @@
   #endif
        clone() const;
   
  +protected:
  +
  +     const XalanDOMString
  +     getError() const;
  +
   private:
   
        XObjectPtr
  -     execute(
  +     doExecute(
                        XPathExecutionContext&                  
executionContext,
                        XalanNode*                                              
context,                        
                        const XObjectPtr                                arg,
                        XalanDOMString*                                 base,
  -                     int                                                     
        argCount);
  -
  -     const XalanDOMString
  -     getError() const;
  +                     int                                                     
        argCount) const;
   
        // Not implemented...
        FunctionDocument&
  
  
  
  1.13      +4 -59     xml-xalan/c/src/XSLT/FunctionElementAvailable.cpp
  
  Index: FunctionElementAvailable.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionElementAvailable.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- FunctionElementAvailable.cpp      2001/05/14 01:03:09     1.12
  +++ FunctionElementAvailable.cpp      2001/09/14 20:49:43     1.13
  @@ -81,21 +81,10 @@
   XObjectPtr
   FunctionElementAvailable::execute(
                        XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context)
  +                     XalanNode*                              /* context */,  
                
  +                     const XObjectPtr                arg1,
  +                     const Locator*                  /* locator */) const
   {
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionElementAvailable::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              /* 
context */,                  
  -             const XObjectPtr                                arg1)
  -{
        assert(arg1.null() == false);
   
        const XalanDOMString&   fullName = arg1->str();
  @@ -130,49 +119,6 @@
   
   
   
  -XObjectPtr
  -FunctionElementAvailable::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionElementAvailable::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionElementAvailable::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
   Function*
   #else
  @@ -188,6 +134,5 @@
   const XalanDOMString
   FunctionElementAvailable::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The function-available() function takes one argument!");
  +     return XALAN_STATIC_UCODE_STRING("The function-available() function 
takes one argument!");
   }
  
  
  
  1.5       +4 -30     xml-xalan/c/src/XSLT/FunctionElementAvailable.hpp
  
  Index: FunctionElementAvailable.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionElementAvailable.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FunctionElementAvailable.hpp      2000/12/06 21:19:23     1.4
  +++ FunctionElementAvailable.hpp      2001/09/14 20:49:43     1.5
  @@ -91,38 +91,12 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg,
  +                     const Locator*                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  
  
  
  1.14      +21 -53    xml-xalan/c/src/XSLT/FunctionFormatNumber.cpp
  
  Index: FunctionFormatNumber.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionFormatNumber.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FunctionFormatNumber.cpp  2001/07/27 05:34:17     1.13
  +++ FunctionFormatNumber.cpp  2001/09/14 20:49:43     1.14
  @@ -88,35 +88,11 @@
   XObjectPtr
   FunctionFormatNumber::execute(
                        XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context)
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const Locator*                  locator) const
   {
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionFormatNumber::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionFormatNumber::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              
context,                        
  -             const XObjectPtr                                arg1,
  -             const XObjectPtr                                arg2)
  -{
        assert(arg1.null() == false && arg2.null() == false);   
        
        const double                                            theNumber = 
arg1->num();
  @@ -139,7 +115,8 @@
                        theNumber,
                        thePattern,
                        theDFS,
  -                     theString.get());
  +                     theString.get(),
  +                     locator);
   
        return executionContext.getXObjectFactory().createString(theString);
   }
  @@ -148,11 +125,12 @@
   
   XObjectPtr
   FunctionFormatNumber::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              
context,                        
  -             const XObjectPtr                                arg1, 
  -             const XObjectPtr                                arg2,
  -             const XObjectPtr                                arg3)
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const XObjectPtr                arg3,
  +                     const Locator*                  locator) const
   {
        assert(arg1.null() == false && arg2.null() == false && arg3.null() == 
false);
        
  @@ -167,8 +145,10 @@
   
        if (theDFS == 0)
        {
  -             executionContext.warn(s_warningNotFoundString,
  -                                                       context);
  +             executionContext.warn(
  +                             s_warningNotFoundString,
  +                             context,
  +                             locator);
   
                theDFS = 
executionContext.getDecimalFormatSymbols(Constants::DEFAULT_DECIMAL_FORMAT);
        
  @@ -184,27 +164,14 @@
                        theNumber,
                        thePattern,
                        theDFS,
  -                     theString.get());
  +                     theString.get(),
  +                     locator);
   
        return executionContext.getXObjectFactory().createString(theString);
   }
   
   
   
  -XObjectPtr
  -FunctionFormatNumber::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
   void
   FunctionFormatNumber::doFormat(
                        XPathExecutionContext&                          
executionContext,
  @@ -212,7 +179,8 @@
                        double                                                  
        theNumber,
                        const XalanDOMString&                           
thePattern,
                        const XalanDecimalFormatSymbols*        theDFS,
  -                     XalanDOMString&                                         
theResult)
  +                     XalanDOMString&                                         
theResult,
  +                     const Locator*                                          
locator) const
   {
        if (DoubleSupport::isNaN(theNumber) == true)
        {
  @@ -250,7 +218,7 @@
        }
        else
        {
  -             executionContext.warn(s_warningNotImplementedString, context);
  +             executionContext.warn(s_warningNotImplementedString, context, 
locator);
   
                if (theDFS != 0)
                {
  
  
  
  1.10      +15 -29    xml-xalan/c/src/XSLT/FunctionFormatNumber.hpp
  
  Index: FunctionFormatNumber.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionFormatNumber.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FunctionFormatNumber.hpp  2001/06/14 19:24:54     1.9
  +++ FunctionFormatNumber.hpp  2001/09/14 20:49:43     1.10
  @@ -111,38 +111,22 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,        
                
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const Locator*                  locator) const;
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  -
  -     XObjectPtr
  +     virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,        
                
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const XObjectPtr                arg3,
  +                     const Locator*                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  @@ -160,7 +144,8 @@
                        double                                                  
        theNumber,
                        const XalanDOMString&                           
thePattern,
                        const XalanDecimalFormatSymbols*        theDFS,
  -                     XalanDOMString&                                         
theResult);
  +                     XalanDOMString&                                         
theResult,
  +                     const Locator*                                          
locator) const;
   
   private:
   
  @@ -174,6 +159,7 @@
        bool
        operator==(const FunctionFormatNumber&) const;
   
  +     // Data members...
        const XalanDecimalFormatSymbols         m_decimalFormatSymbols;
   
        static const XalanDOMString&            s_warningNotImplementedString;
  
  
  
  1.12      +6 -61     xml-xalan/c/src/XSLT/FunctionFunctionAvailable.cpp
  
  Index: FunctionFunctionAvailable.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionFunctionAvailable.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FunctionFunctionAvailable.cpp     2001/05/14 01:03:09     1.11
  +++ FunctionFunctionAvailable.cpp     2001/09/14 20:49:43     1.12
  @@ -85,24 +85,13 @@
   XObjectPtr
   FunctionFunctionAvailable::execute(
                        XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context)
  +                     XalanNode*                              /* context */,
  +                     const XObjectPtr                arg,
  +                     const Locator*                  /* locator */) const
   {
  -     executionContext.error(getError(), context);
  +     assert(arg.null() == false);
   
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionFunctionAvailable::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              /* 
context */,                  
  -             const XObjectPtr                                arg1)
  -{
  -     assert(arg1.null() == false);
  -
  -     const XalanDOMString&   fullName = arg1->str();
  +     const XalanDOMString&   fullName = arg->str();
   
        const unsigned int              nameLength = length(fullName);
        const unsigned int              indexOfNSSep = indexOf(fullName, 
XalanUnicode::charColon);
  @@ -125,49 +114,6 @@
   
   
   
  -XObjectPtr
  -FunctionFunctionAvailable::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionFunctionAvailable::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionFunctionAvailable::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
   Function*
   #else
  @@ -183,6 +129,5 @@
   const XalanDOMString
   FunctionFunctionAvailable::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The function-available() function takes one argument!");
  +     return XALAN_STATIC_UCODE_STRING("The function-available() function 
takes one argument!");
   }
  
  
  
  1.6       +8 -32     xml-xalan/c/src/XSLT/FunctionFunctionAvailable.hpp
  
  Index: FunctionFunctionAvailable.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionFunctionAvailable.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionFunctionAvailable.hpp     2001/05/14 01:03:09     1.5
  +++ FunctionFunctionAvailable.hpp     2001/09/14 20:49:43     1.6
  @@ -91,39 +91,13 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg,
  +                     const Locator*                  locator) const;
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
   #else
  @@ -131,10 +105,12 @@
   #endif
        clone() const;
   
  -private:
  +protected:
   
  -     virtual const XalanDOMString
  +     const XalanDOMString
        getError() const;
  +
  +private:
   
        // Not implemented...
        FunctionFunctionAvailable&
  
  
  
  1.17      +12 -51    xml-xalan/c/src/XSLT/FunctionGenerateID.cpp
  
  Index: FunctionGenerateID.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionGenerateID.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- FunctionGenerateID.cpp    2001/08/06 01:40:09     1.16
  +++ FunctionGenerateID.cpp    2001/09/14 20:49:43     1.17
  @@ -129,12 +129,16 @@
   
   XObjectPtr
   FunctionGenerateID::execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context)
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const Locator*                  locator) const
   {
        if (context == 0)
        {
  -             executionContext.error("The function generate-id requires a 
non-null node!");
  +             executionContext.error(
  +                             "The generate-id() function requires a non-null 
context node!",
  +                             context,
  +                             locator);
   
                return XObjectPtr();
        }
  @@ -155,8 +159,9 @@
   XObjectPtr
   FunctionGenerateID::execute(
                        XPathExecutionContext&  executionContext,
  -                     XalanNode*                              /* context */,  
                
  -                     const XObjectPtr                arg1)
  +                     XalanNode*                              /* context */,
  +                     const XObjectPtr                arg1,
  +                     const Locator*                  locator) const
   {
        assert(arg1.null() == false);
   
  @@ -168,55 +173,12 @@
        }
        else
        {
  -             return execute(executionContext, theNodeList.item(0));
  +             return execute(executionContext, theNodeList.item(0), locator);
        }
   }
   
   
   
  -XObjectPtr
  -FunctionGenerateID::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionGenerateID::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionGenerateID::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
   Function*
   #else
  @@ -232,6 +194,5 @@
   const XalanDOMString
   FunctionGenerateID::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The generate-id function takes zero or one arguments!");
  +     return XALAN_STATIC_UCODE_STRING("The generate-id function takes zero 
or one arguments!");
   }
  
  
  
  1.9       +11 -29    xml-xalan/c/src/XSLT/FunctionGenerateID.hpp
  
  Index: FunctionGenerateID.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionGenerateID.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FunctionGenerateID.hpp    2000/12/06 21:19:33     1.8
  +++ FunctionGenerateID.hpp    2001/09/14 20:49:43     1.9
  @@ -83,38 +83,18 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const Locator*                  locator) const;
   
  -     XObjectPtr
  +     virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg1,
  +                     const Locator*                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  @@ -123,10 +103,12 @@
   #endif
        clone() const;
   
  -private:
  +protected:
   
        const XalanDOMString
        getError() const;
  +
  +private:
   
        // Not implemented...
        FunctionGenerateID&     operator=(const FunctionGenerateID&);
  
  
  
  1.20      +12 -62    xml-xalan/c/src/XSLT/FunctionKey.cpp
  
  Index: FunctionKey.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionKey.cpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- FunctionKey.cpp   2000/12/06 21:19:34     1.19
  +++ FunctionKey.cpp   2001/09/14 20:49:43     1.20
  @@ -104,41 +104,19 @@
   XObjectPtr
   FunctionKey::execute(
                        XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionKey::execute(
  -                     XPathExecutionContext&  executionContext,
                        XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */)
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const Locator*                  locator) const
   {
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionKey::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              
context,                        
  -             const XObjectPtr                                arg1,
  -             const XObjectPtr                                arg2)
  -{
        assert(arg1.null() == false && arg2.null() == false);
   
        if (context == 0)
        {
  -             executionContext.error("The key() function requires a non-null 
context node!",
  -                                                        context);
  +             executionContext.error(
  +                     "The key() function requires a non-null context node!",
  +                     context,
  +                     locator);
   
                return XObjectPtr();
        }
  @@ -155,8 +133,10 @@
   
                if(0 == docContext)
                {
  -                     executionContext.error("Context does not have an owner 
document!",
  -                                                                context);
  +                     executionContext.error(
  +                             "Context does not have an owner document!",
  +                             context,
  +                             locator);
                }
   
                assert(executionContext.getPrefixResolver() != 0);
  @@ -234,35 +214,6 @@
   
   
   
  -XObjectPtr
  -FunctionKey::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionKey::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
   Function*
   #else
  @@ -278,6 +229,5 @@
   const XalanDOMString
   FunctionKey::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The key() function takes two arguments!");
  +     return XALAN_STATIC_UCODE_STRING("The key() function takes two 
arguments!");
   }
  
  
  
  1.9       +8 -31     xml-xalan/c/src/XSLT/FunctionKey.hpp
  
  Index: FunctionKey.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionKey.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FunctionKey.hpp   2000/12/06 21:19:35     1.8
  +++ FunctionKey.hpp   2001/09/14 20:49:43     1.9
  @@ -90,39 +90,14 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg1,
  +                     const XObjectPtr                arg2,
  +                     const Locator*                  locator) const;
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
   #else
  @@ -130,10 +105,12 @@
   #endif
        clone() const;
   
  -private:
  +protected:
   
        const XalanDOMString
        getError() const;
  +
  +private:
   
        // Not implemented...
        FunctionKey&
  
  
  
  1.18      +8 -60     xml-xalan/c/src/XSLT/FunctionSystemProperty.cpp
  
  Index: FunctionSystemProperty.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionSystemProperty.cpp,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FunctionSystemProperty.cpp        2001/05/14 01:03:10     1.17
  +++ FunctionSystemProperty.cpp        2001/09/14 20:49:43     1.18
  @@ -89,20 +89,9 @@
   XObjectPtr
   FunctionSystemProperty::execute(
                        XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionSystemProperty::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              /* 
context */,                  
  -             const XObjectPtr                                arg1)
  +                     XalanNode*                              context,        
                
  +                     const XObjectPtr                arg1,
  +                     const Locator*                  locator) const
   {
        assert(arg1.null() == false);
   
  @@ -149,7 +138,10 @@
                        }
                        else
                        {
  -                             executionContext.warn("Don't currently do 
anything with namespace " + *nspace + " in property: " + fullName);
  +                             executionContext.warn(
  +                                     "Don't currently do anything with 
namespace " + *nspace + " in property: " + fullName,
  +                                     context,
  +                                     locator);
   
                                result = 
TranscodeFromLocalCodePage(::getenv(c_str(TranscodeToLocalCodePage(propName))));
                        }
  @@ -172,49 +164,6 @@
   
   
   
  -XObjectPtr
  -FunctionSystemProperty::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionSystemProperty::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionSystemProperty::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
   Function*
   #else
  @@ -230,6 +179,5 @@
   const XalanDOMString
   FunctionSystemProperty::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The system-property() function takes a single argument!");
  +     return XALAN_STATIC_UCODE_STRING("The system-property() function 
accepts one argument!");
   }
  
  
  
  1.7       +7 -31     xml-xalan/c/src/XSLT/FunctionSystemProperty.hpp
  
  Index: FunctionSystemProperty.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionSystemProperty.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FunctionSystemProperty.hpp        2000/12/06 21:19:37     1.6
  +++ FunctionSystemProperty.hpp        2001/09/14 20:49:43     1.7
  @@ -81,39 +81,13 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg,
  +                     const Locator*                  locator) const;
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
   #else
  @@ -121,10 +95,12 @@
   #endif
        clone() const;
   
  -private:
  +protected:
   
        virtual const XalanDOMString
        getError() const;
  +
  +private:
   
        // Not implemented...
        FunctionSystemProperty&
  
  
  
  1.15      +21 -72    xml-xalan/c/src/XSLT/FunctionUnparsedEntityURI.cpp
  
  Index: FunctionUnparsedEntityURI.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionUnparsedEntityURI.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FunctionUnparsedEntityURI.cpp     2000/12/21 04:48:30     1.14
  +++ FunctionUnparsedEntityURI.cpp     2001/09/14 20:49:43     1.15
  @@ -81,89 +81,39 @@
   XObjectPtr
   FunctionUnparsedEntityURI::execute(
                        XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionUnparsedEntityURI::execute(
  -             XPathExecutionContext&                  executionContext,
  -             XalanNode*                                              
context,                        
  -             const XObjectPtr                                arg1)
  +                     XalanNode*                              context,        
                
  +                     const XObjectPtr                arg,
  +                     const Locator*                  locator) const
   {
  -     assert(arg1.null() == false);
  +     assert(arg.null() == false);
   
        if (context == 0)
        {
  -             executionContext.error("The unparsed-entity-uri() function 
requires a non-null context node!",
  -                                                        context);
  +             executionContext.error(
  +                     "The unparsed-entity-uri() function requires a non-null 
context node!",
  +                     context,
  +                     locator);
   
                return XObjectPtr();
        }
  -
  -     const XalanDOMString&   name = arg1->str();
  +     else
  +     {
  +             const XalanDOMString&   name = arg->str();
   
  -     XalanDocument* const    doc =
  -                     XalanNode::DOCUMENT_NODE == context->getNodeType() ?
  +             XalanDocument* const    doc =
  +                             XalanNode::DOCUMENT_NODE == 
context->getNodeType() ?
   #if defined(XALAN_OLD_STYLE_CASTS)
  -                             (XalanDocument*)context :
  +                                     (XalanDocument*)context :
   #else
  -                             static_cast<XalanDocument*>(context) :
  +                                     static_cast<XalanDocument*>(context) :
   #endif
  -                             context->getOwnerDocument();
  -     assert(doc != 0);
  -
  -     const XalanDOMString&   uri = 
executionContext.getUnparsedEntityURI(name, *doc);
  -
  -     return executionContext.getXObjectFactory().createStringReference(uri);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionUnparsedEntityURI::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  -}
  +                                     context->getOwnerDocument();
  +             assert(doc != 0);
   
  -
  -
  -XObjectPtr
  -FunctionUnparsedEntityURI::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,        
                
  -                     const XObjectPtr                /* arg1 */,
  -                     const XObjectPtr                /* arg2 */,
  -                     const XObjectPtr                /* arg3 */)
  -{
  -     executionContext.error(getError(), context);
  +             const XalanDOMString&   uri = 
executionContext.getUnparsedEntityURI(name, *doc);
   
  -     return XObjectPtr(0);
  -}
  -
  -
  -
  -XObjectPtr
  -FunctionUnparsedEntityURI::execute(
  -                     XPathExecutionContext&                  
executionContext,
  -                     XalanNode*                                              
context,
  -                     int                                                     
        /* opPos */,
  -                     const XObjectArgVectorType&             /* args */)
  -{
  -     executionContext.error(getError(), context);
  -
  -     return XObjectPtr(0);
  +             return 
executionContext.getXObjectFactory().createStringReference(uri);
  +     }
   }
   
   
  @@ -171,6 +121,5 @@
   const XalanDOMString
   FunctionUnparsedEntityURI::getError() const
   {
  -     return XALAN_STATIC_UCODE_STRING(
  -             "The unparsed-entity-uri function should take one argument!");
  +     return XALAN_STATIC_UCODE_STRING("The unparsed-entity-uri function 
accepts one argument!");
   }
  
  
  
  1.7       +7 -31     xml-xalan/c/src/XSLT/FunctionUnparsedEntityURI.hpp
  
  Index: FunctionUnparsedEntityURI.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionUnparsedEntityURI.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FunctionUnparsedEntityURI.hpp     2000/12/06 21:19:39     1.6
  +++ FunctionUnparsedEntityURI.hpp     2001/09/14 20:49:43     1.7
  @@ -88,39 +88,13 @@
   
        // These methods are inherited from Function ...
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context);
  -
        virtual XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        arg1);
  -
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */);
  -
  -     XObjectPtr
        execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      
context,                        
  -                     const XObjectPtr                        /* arg1 */,
  -                     const XObjectPtr                        /* arg2 */,
  -                     const XObjectPtr                        /* arg3 */);
  +                     XPathExecutionContext&  executionContext,
  +                     XalanNode*                              context,
  +                     const XObjectPtr                arg,
  +                     const Locator*                  locator) const;
   
  -     XObjectPtr
  -     execute(
  -                     XPathExecutionContext&          executionContext,
  -                     XalanNode*                                      context,
  -                     int                                                     
/* opPos */,
  -                     const XObjectArgVectorType&     /* args */);
  -
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
   #else
  @@ -131,10 +105,12 @@
                return new FunctionUnparsedEntityURI(*this);
        }
   
  -private:
  +protected:
   
        virtual const XalanDOMString
        getError() const;
  +
  +private:
   
        // Not implemented...
        FunctionUnparsedEntityURI&
  
  
  
  1.12      +36 -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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- StylesheetConstructionContext.hpp 2001/07/12 05:05:59     1.11
  +++ StylesheetConstructionContext.hpp 2001/09/14 20:49:43     1.12
  @@ -371,11 +371,23 @@
   
        virtual void
        error(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const = 0;
  +
  +     virtual void
  +     error(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode = 0,
                        const ElemTemplateElement*      styleNode = 0) const = 
0;
   
        virtual void
  +     error(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const = 0;
  +
  +     virtual void
        warn(
                        const XalanDOMString&           msg,
                        const XalanNode*                        sourceNode = 0,
  @@ -383,11 +395,23 @@
   
        virtual void
        warn(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const = 0;
  +
  +     virtual void
  +     warn(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode = 0,
                        const ElemTemplateElement*      styleNode = 0) const = 
0;
   
        virtual void
  +     warn(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const = 0;
  +
  +     virtual void
        message(
                        const XalanDOMString&           msg,
                        const XalanNode*                        sourceNode = 0,
  @@ -395,9 +419,21 @@
   
        virtual void
        message(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const = 0;
  +
  +     virtual void
  +     message(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode = 0,
                        const ElemTemplateElement*      styleNode = 0) const = 
0;
  +
  +     virtual void
  +     message(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const = 0;
   };
   
   
  
  
  
  1.18      +87 -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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- StylesheetConstructionContextDefault.cpp  2001/07/12 05:06:00     1.17
  +++ StylesheetConstructionContextDefault.cpp  2001/09/14 20:49:43     1.18
  @@ -136,6 +136,24 @@
   
   void
   StylesheetConstructionContextDefault::error(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const
  +{
  +     if (locator != 0)
  +     {
  +             m_processor.error(msg, *locator, sourceNode);
  +     }
  +     else
  +     {
  +             m_processor.error(msg, sourceNode);
  +     }
  +}
  +
  +
  +
  +void
  +StylesheetConstructionContextDefault::error(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode,
                        const ElemTemplateElement*      styleNode) const
  @@ -146,6 +164,17 @@
   
   
   void
  +StylesheetConstructionContextDefault::error(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const
  +{
  +     error(TranscodeFromLocalCodePage(msg), sourceNode, locator);
  +}
  +
  +
  +
  +void
   StylesheetConstructionContextDefault::warn(
                        const XalanDOMString&           msg,
                        const XalanNode*                        sourceNode,
  @@ -158,6 +187,24 @@
   
   void
   StylesheetConstructionContextDefault::warn(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const
  +{
  +     if (locator != 0)
  +     {
  +             m_processor.warn(msg, *locator, sourceNode);
  +     }
  +     else
  +     {
  +             m_processor.warn(msg, sourceNode);
  +     }
  +}
  +
  +
  +
  +void
  +StylesheetConstructionContextDefault::warn(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode,
                        const ElemTemplateElement*      styleNode) const
  @@ -168,6 +215,17 @@
   
   
   void
  +StylesheetConstructionContextDefault::warn(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const
  +{
  +     warn(TranscodeFromLocalCodePage(msg), sourceNode, locator);
  +}
  +
  +
  +
  +void
   StylesheetConstructionContextDefault::message(
                        const XalanDOMString&           msg,
                        const XalanNode*                        sourceNode,
  @@ -180,11 +238,40 @@
   
   void
   StylesheetConstructionContextDefault::message(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const
  +{
  +     if (locator != 0)
  +     {
  +             m_processor.message(msg, *locator, sourceNode);
  +     }
  +     else
  +     {
  +             m_processor.message(msg, sourceNode);
  +     }
  +}
  +
  +
  +
  +void
  +StylesheetConstructionContextDefault::message(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode,
                        const ElemTemplateElement*      styleNode) const
   {
        message(TranscodeFromLocalCodePage(msg), sourceNode, styleNode);
  +}
  +
  +
  +
  +void
  +StylesheetConstructionContextDefault::message(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const
  +{
  +     message(TranscodeFromLocalCodePage(msg), sourceNode, locator);
   }
   
   
  
  
  
  1.19      +36 -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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- StylesheetConstructionContextDefault.hpp  2001/07/12 05:06:01     1.18
  +++ StylesheetConstructionContextDefault.hpp  2001/09/14 20:49:43     1.19
  @@ -150,11 +150,23 @@
   
        virtual void
        error(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const;
  +
  +     virtual void
  +     error(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode = 0,
                        const ElemTemplateElement*      styleNode = 0) const;
   
        virtual void
  +     error(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const;
  +
  +     virtual void
        warn(
                        const XalanDOMString&           msg,
                        const XalanNode*                        sourceNode = 0,
  @@ -162,11 +174,23 @@
   
        virtual void
        warn(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const;
  +
  +     virtual void
  +     warn(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode = 0,
                        const ElemTemplateElement*      styleNode = 0) const;
   
        virtual void
  +     warn(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const;
  +
  +     virtual void
        message(
                        const XalanDOMString&           msg,
                        const XalanNode*                        sourceNode = 0,
  @@ -174,9 +198,21 @@
   
        virtual void
        message(
  +                     const XalanDOMString&   msg,
  +                     const XalanNode*                sourceNode,
  +                     const Locator*                  locator) const;
  +
  +     virtual void
  +     message(
                        const char*                                     msg,
                        const XalanNode*                        sourceNode = 0,
                        const ElemTemplateElement*      styleNode = 0) const;
  +
  +     virtual void
  +     message(
  +                     const char*                     msg,
  +                     const XalanNode*        sourceNode,
  +                     const Locator*          locator) const;
   
        // These interfaces are inherited from StylesheetConstructionContext...
   
  
  
  
  1.63      +5 -2      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.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- StylesheetExecutionContext.hpp    2001/08/13 17:08:53     1.62
  +++ StylesheetExecutionContext.hpp    2001/09/14 20:49:43     1.63
  @@ -1621,7 +1621,8 @@
                        const XalanDOMString&                   theNamespace,
                        const XalanDOMString&                   functionName,
                        XalanNode*                                              
context,
  -                     const XObjectArgVectorType&             argVec) = 0;
  +                     const XObjectArgVectorType&             argVec,
  +                     const Locator*                                  
locator) = 0;
   
        virtual XalanDocument*
        parseXML(
  @@ -1658,7 +1659,9 @@
                        MutableNodeRefList&             nodelist) = 0;
   
        virtual const XObjectPtr
  -     getVariable(const XalanQName&   name) = 0;
  +     getVariable(
  +                     const XalanQName&       name,
  +                     const Locator*          locator = 0) = 0;
   
        virtual const PrefixResolver*
        getPrefixResolver() const = 0;
  
  
  
  1.75      +33 -7     
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.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- StylesheetExecutionContextDefault.cpp     2001/08/20 22:10:58     1.74
  +++ StylesheetExecutionContextDefault.cpp     2001/09/14 20:49:43     1.75
  @@ -1543,9 +1543,10 @@
                        const XalanDOMString&                   theNamespace,
                        const XalanDOMString&                   functionName,
                        XalanNode*                                              
context,
  -                     const XObjectArgVectorType&             argVec)
  +                     const XObjectArgVectorType&             argVec,
  +                     const Locator*                                  locator)
   {
  -     return m_xpathExecutionContextDefault.extFunction(theNamespace, 
functionName, context, argVec);
  +     return m_xpathExecutionContextDefault.extFunction(theNamespace, 
functionName, context, argVec, locator);
   }
   
   
  @@ -1632,7 +1633,9 @@
   
   
   const XObjectPtr
  -StylesheetExecutionContextDefault::getVariable(const XalanQName&     name)
  +StylesheetExecutionContextDefault::getVariable(
  +                     const XalanQName&       name,
  +                     const Locator*          locator)
   {
        bool                            fFound;
   
  @@ -1648,7 +1651,9 @@
        {
                error(
                        TranscodeFromLocalCodePage("Variable reference given 
for variable out of context or without definition!  Name = '") +
  -                     name.getLocalPart() + "'");
  +                     name.getLocalPart() + "'",
  +                     getCurrentNode(),
  +                     locator);
   
                return getXObjectFactory().createUnknown(name.getLocalPart());
        }
  @@ -1917,7 +1922,14 @@
   {
        assert(m_xsltProcessor != 0);
   
  -     m_xsltProcessor->error(msg, sourceNode);
  +     if (locator != 0)
  +     {
  +             m_xsltProcessor->error(msg, *locator, sourceNode);
  +     }
  +     else
  +     {
  +             m_xsltProcessor->error(msg, sourceNode);
  +     }
   }
   
   
  @@ -1965,7 +1977,14 @@
   {
        assert(m_xsltProcessor != 0);
   
  -     m_xsltProcessor->warn(msg, sourceNode);
  +     if (locator != 0)
  +     {
  +             m_xsltProcessor->warn(msg, *locator, sourceNode);
  +     }
  +     else
  +     {
  +             m_xsltProcessor->warn(msg, sourceNode);
  +     }
   }
   
   
  @@ -2013,7 +2032,14 @@
   {
        assert(m_xsltProcessor != 0);
   
  -     m_xsltProcessor->message(msg, sourceNode);
  +     if (locator != 0)
  +     {
  +             m_xsltProcessor->message(msg, *locator, sourceNode);
  +     }
  +     else
  +     {
  +             m_xsltProcessor->message(msg, sourceNode);
  +     }
   }
   
   
  
  
  
  1.67      +5 -2      
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.66
  retrieving revision 1.67
  diff -u -r1.66 -r1.67
  --- StylesheetExecutionContextDefault.hpp     2001/08/20 22:10:58     1.66
  +++ StylesheetExecutionContextDefault.hpp     2001/09/14 20:49:43     1.67
  @@ -780,7 +780,8 @@
                        const XalanDOMString&                   theNamespace,
                        const XalanDOMString&                   functionName,
                        XalanNode*                                              
context,
  -                     const XObjectArgVectorType&             argVec);
  +                     const XObjectArgVectorType&             argVec,
  +                     const Locator*                                  
locator);
   
        virtual XalanDocument*
        parseXML(
  @@ -817,7 +818,9 @@
                        MutableNodeRefList&             nodelist);
   
        virtual const XObjectPtr
  -     getVariable(const XalanQName&   name);
  +     getVariable(
  +                     const XalanQName&       name,
  +                     const Locator*          locator = 0);
   
        virtual const PrefixResolver*
        getPrefixResolver() const;
  
  
  
  1.70      +176 -158  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.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- StylesheetHandler.cpp     2001/09/04 16:24:21     1.69
  +++ StylesheetHandler.cpp     2001/09/14 20:49:43     1.70
  @@ -63,7 +63,7 @@
   
   
   #include <sax/Locator.hpp>
  -#include <sax/SAXException.hpp>
  +#include <sax/SAXParseException.hpp>
   #include <util/XMLURL.hpp>
   
   
  @@ -128,17 +128,11 @@
   #include <Include/XalanAutoPtr.hpp>
   
   
  -const XalanDOMString StylesheetHandler::s_emptyString;
   
  -
  -
   StylesheetHandler::StylesheetHandler(
                        Stylesheet&                                             
stylesheetTree,
                        StylesheetConstructionContext&  constructionContext) :
        FormatterListener(OUTPUT_METHOD_OTHER),
  -     m_includeBase(stylesheetTree.getBaseIdentifier()),
  -     m_pendingException(),
  -     m_exceptionPending(false),
        m_stylesheet(stylesheetTree),
        m_constructionContext(constructionContext),
        m_elemStack(),
  @@ -151,6 +145,7 @@
        m_foundStylesheet(false),
        m_foundNotImport(false),
        m_accumulateText(),
  +     m_includeBase(stylesheetTree.getBaseIdentifier()),
        m_inExtensionElementStack(),
        m_inLXSLTScript(false),
        m_LXSLTScriptBody(),
  @@ -221,9 +216,6 @@
   
   void StylesheetHandler::startDocument()
   {
  -     m_exceptionPending = false;
  -
  -     clear(m_pendingException);
   }
   
   
  @@ -237,11 +229,6 @@
        }
   
        m_inExtensionElementStack.clear();
  -
  -     if (m_exceptionPending == true)
  -     {
  -             throw SAXException(c_wstr(m_pendingException));
  -     }
   }
   
   
  @@ -262,9 +249,12 @@
                        const XalanDOMChar*             aname,
                        const AttributeList&    atts,
                        int                                             which,
  +                     const Locator*                  locator,
                        bool&                                   fPreserve)
   {
  -     const bool      isSpaceAttr = equals(aname, 
Constants::ATTRNAME_XMLSPACE);
  +     const XalanQNameByValue         theName(XalanDOMString(aname), 
m_stylesheet.getNamespaces());
  +
  +     const bool                                      isSpaceAttr = 
s_spaceAttrQName.equals(theName);
   
        if(isSpaceAttr == false)
        {
  @@ -284,7 +274,7 @@
                }
                else
                {
  -                     throw SAXException("xml:space has an illegal value");
  +                     error("xml:space has an illegal value", locator);
                }
        }
   
  @@ -293,16 +283,33 @@
   
   
   
  +inline int
  +getLineNumber(const Locator* theLocator)
  +{
  +     return theLocator == 0 ? -1 : theLocator->getLineNumber();
  +}
  +
  +
  +
  +inline int
  +getColumnNumber(const Locator*       theLocator)
  +{
  +     return theLocator == 0 ? -1 : theLocator->getColumnNumber();
  +}
  +
  +
  +
   bool
   StylesheetHandler::processSpaceAttr(
                        const AttributeList&    atts,
  +                     const Locator*                  locator,
                        bool&                                   fPreserve)
   {
        const unsigned int      len = atts.getLength();
   
        for (unsigned int i = 0; i < len; ++i)
        {
  -             if (processSpaceAttr(atts.getName(i), atts, i, fPreserve) == 
true)
  +             if (processSpaceAttr(atts.getName(i), atts, i, locator, 
fPreserve) == true)
                {
                        return true;
                }
  @@ -318,10 +325,6 @@
                        const XMLCh* const      name,
                        AttributeList&          atts)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == true)
  -             return;
  -
        m_inExtensionElementStack.push_back(false);
   
        if (m_preserveSpaceStack.empty() == true)
  @@ -354,8 +357,8 @@
   
                const Locator* const    locator = 
m_constructionContext.getLocatorFromStack();
   
  -             const int       lineNumber = 0 != locator ? 
locator->getLineNumber() : 0;
  -             const int       columnNumber = 0 != locator ? 
locator->getColumnNumber() : 0;
  +             const int       lineNumber = getLineNumber(locator);
  +             const int       columnNumber = getColumnNumber(locator);
   
                // First push namespaces
                m_stylesheet.pushNamespaces(atts);
  @@ -388,11 +391,11 @@
                                m_stylesheet.setWrapperless(false);
                        }
   
  -                     const int xslToken = 
m_constructionContext.getElementToken(localName);
  +                     const int       xslToken = 
m_constructionContext.getElementToken(localName);
   
                        if(!m_inTemplate)
                        {
  -                             processTopLevelElement(name, localName, ns, 
atts, xslToken, lineNumber, columnNumber, fPreserveSpace, fSpaceAttrProcessed);
  +                             processTopLevelElement(name, localName, ns, 
atts, xslToken, locator, fPreserveSpace, fSpaceAttrProcessed);
                        }
                        else
                        {
  @@ -424,16 +427,33 @@
             
                                case Constants::ELEMNAME_SORT:
                                        {
  +                                             if (m_elemStack.empty() == true)
  +                                             {
  +                                                     error("Misplaced 
xsl:sort.", locator);
  +                                             }
  +
  +                                             ElemTemplateElement* const      
theElement =
  +                                                             
m_elemStack.back();
  +                                             assert(theElement != 0);
  +
  +                                             const int       xslToken = 
theElement->getXSLToken();
  +
  +                                             if (xslToken != 
Constants::ELEMNAME_FOREACH &&
  +                                                     xslToken != 
Constants::ELEMNAME_APPLY_TEMPLATES)
  +                                             {
  +                                                     error("Misplaced 
xsl:sort.", locator);
  +                                             }
  +
                                                ElemForEach* foreach =
   #if defined(XALAN_OLD_STYLE_CASTS)
  -                                                     
(ElemForEach*)m_elemStack.back();
  +                                                             
(ElemForEach*)theElement;
   #else
  -                                                     
static_cast<ElemForEach*>(m_elemStack.back());
  +                                                             
static_cast<ElemForEach*>(theElement);
   #endif
   
                                                ElemSort* sortElem = new 
ElemSort(m_constructionContext,
  -                                                                             
                         m_stylesheet,
  -                                                                             
                         atts, lineNumber, columnNumber);
  +                                                                             
                                 m_stylesheet,
  +                                                                             
                                 atts, lineNumber, columnNumber);
   
                                                // Note: deleted in ElemForEach 
destructor
                                                
foreach->getSortElems().push_back(sortElem);
  @@ -513,12 +533,12 @@
                                                        }
                                                        else
                                                        {
  -                                                             throw 
SAXException("(StylesheetHandler) misplaced xsl:when!");
  +                                                             
error("(StylesheetHandler) misplaced xsl:when.", locator);
                                                        }
                                                }
                                                else
                                                {
  -                                                     throw 
SAXException("(StylesheetHandler) xsl:when not parented by xsl:choose!");
  +                                                     
error("(StylesheetHandler) xsl:when not parented by xsl:choose.", locator);
                                                }
                                        }
                                        break;
  @@ -541,12 +561,12 @@
                                                        }
                                                        else
                                                        {
  -                                                             throw 
SAXException("(StylesheetHandler) misplaced xsl:otherwise!");
  +                                                             
error("Misplaced xsl:otherwise.", locator);
                                                        }
                                                }
                                                else
                                                {
  -                                                     throw 
SAXException("(StylesheetHandler) xsl:otherwise not parented by xsl:choose!");
  +                                                     error("xsl:otherwise 
not parented by xsl:choose.", locator);
                                                }
                                        }
                                        break;
  @@ -620,14 +640,15 @@
                                case Constants::ELEMNAME_PRESERVESPACE:
                                case Constants::ELEMNAME_STRIPSPACE:
                                        {
  -                                             XalanDOMString 
msg("(StylesheetHandler) " + XalanDOMString(name) + " is not allowed inside a 
template!");
  -                                             throw SAXException(c_wstr(msg));
  +                                             const XalanDOMString    
msg(XalanDOMString(name) + " is not allowed inside a template.");
  +
  +                                             error(msg, locator);
                                        }
                                        break;
   
                                default:
                                        {
  -                                             XalanDOMString msg("Unknown XSL 
element: " + localName);
  +                                             const XalanDOMString    
msg("Unknown XSL element: " + localName);
   
                                                // If this stylesheet is 
declared to be of a higher version than the one
                                                // supported, don't flag an 
error.
  @@ -637,7 +658,7 @@
                                                }
                                                else
                                                {
  -                                                     throw 
SAXException(c_wstr(msg));
  +                                                     error(msg, locator);
                                                }
                                        }
                                }
  @@ -645,7 +666,7 @@
                }
                else if (!m_inTemplate && startsWith(ns, 
m_constructionContext.getXalanXSLNameSpaceURL()))
                {
  -                     processExtensionElement(name, localName, atts);
  +                     processExtensionElement(name, localName, atts, locator);
                }
                else
                {
  @@ -694,7 +715,7 @@
                                // Guard against an exception in 
appendChildElem()...
                                XalanAutoPtr<ElemTemplateElement>       
theGuard(elem);
   
  -                             appendChildElementToParent(elem, lineNumber, 
columnNumber);
  +                             appendChildElementToParent(elem, locator);
   
                                // The element is parented and will now be
                                // deleted when the parent is delete...
  @@ -707,7 +728,7 @@
                // If we haven't processed an xml:space attribute already, look 
for one...
                if (fSpaceAttrProcessed == false)
                {
  -                     fSpaceAttrProcessed = processSpaceAttr(atts, 
fPreserveSpace);
  +                     fSpaceAttrProcessed = processSpaceAttr(atts, locator, 
fPreserveSpace);
                }
   
                // Only update the stack if we actually processed an xml:space 
attribute...
  @@ -733,24 +754,8 @@
                        }
                }
        } // end try
  -
  -     // Here's the story.  startElement throws exceptions for certain 
malformed constructs.  These
  -     // exceptions need to reach the end user.  But the parser eats all 
exceptions and we lose
  -     // the error messages and exit silently.  So, I'll eat the exceptions 
first, store the message
  -     // and then throw the exception during endDocument
  -     catch(SAXException&             e)
  -     {
  -             m_exceptionPending = true;
  -
  -             m_pendingException = e.getMessage();
  -
  -             doCleanup();
  -     }
        catch(...)
        {
  -             // $$$ ToDo: This probably should't happen, but it does...
  -             m_exceptionPending = true;
  -
                doCleanup();
   
                throw;
  @@ -857,8 +862,7 @@
                        const XalanDOMString&   ns,
                        const AttributeList&    atts,
                        int                                             
xslToken,
  -                     int                                             
lineNumber,
  -                     int                                             
columnNumber,
  +                     const Locator*                  locator,
                        bool&                                   fPreserveSpace,
                        bool&                                   
fSpaceAttrProcessed)
   {
  @@ -867,12 +871,18 @@
                m_foundNotImport = true;
        }
   
  +     const int       lineNumber = getLineNumber(locator);
  +     const int       columnNumber = getColumnNumber(locator);
  +
        switch(xslToken)
        {
        case Constants::ELEMNAME_TEMPLATE:
  -             m_pTemplate = new ElemTemplate(m_constructionContext,
  -                                                                     
m_stylesheet,
  -                                                                     atts, 
lineNumber, columnNumber);
  +             m_pTemplate = new ElemTemplate(
  +                             m_constructionContext,
  +                             m_stylesheet,
  +                             atts,
  +                             lineNumber,
  +                             columnNumber);
        
                m_elemStack.push_back(m_pTemplate);
                m_elemStackParentedElements.insert(m_pTemplate);
  @@ -909,12 +919,12 @@
        break;
   
        case Constants::ELEMNAME_LOCALE:
  -             
m_constructionContext.warn(StaticStringToDOMString(XALAN_STATIC_UCODE_STRING("xsl:locale
 not yet supported!")));
  +             
m_constructionContext.warn(StaticStringToDOMString(XALAN_STATIC_UCODE_STRING("xsl:locale
 not yet supported.")));
                break;
   
        case Constants::ELEMNAME_PRESERVESPACE:
        case Constants::ELEMNAME_STRIPSPACE:
  -             processPreserveStripSpace(name, atts, lineNumber, columnNumber, 
xslToken);
  +             processPreserveStripSpace(name, atts, locator, xslToken);
                break;
   
        case Constants::ELEMNAME_KEY:
  @@ -940,11 +950,11 @@
                break;
   
        case Constants::ELEMNAME_INCLUDE:
  -             processInclude(name, atts);
  +             processInclude(name, atts, locator);
                break;
   
        case Constants::ELEMNAME_IMPORT:
  -             processImport(name, atts);
  +             processImport(name, atts, locator);
                break;
   
        case Constants::ELEMNAME_OUTPUT:
  @@ -1000,21 +1010,22 @@
        case Constants::ELEMNAME_APPLY_IMPORTS:
                if (inExtensionElement() == false)
                {
  -                     XalanDOMString msg("(StylesheetHandler) " + 
XalanDOMString(name) + " not allowed inside a stylesheet!");
  -                             throw SAXException(c_wstr(msg));
  +                     const XalanDOMString    msg("(StylesheetHandler) " + 
XalanDOMString(name) + " not allowed inside a stylesheet.");
  +                             
  +                     error(msg, locator);
                }
                break;
   
        case Constants::ELEMNAME_STYLESHEET:
  -             processStylesheet(name, atts, lineNumber, columnNumber, 
fPreserveSpace, fSpaceAttrProcessed);
  +             processStylesheet(name, atts, locator, fPreserveSpace, 
fSpaceAttrProcessed);
                break;
   
        default:
                if (inExtensionElement() == false)
                {
  -                     XalanDOMString msg("Unknown XSL element: " + localName);
  +                     const XalanDOMString    msg("Unknown XSL element: " + 
localName);
   
  -                     throw 
SAXException(c_wstr(TranscodeFromLocalCodePage("Unknown XSL element: ") + 
localName));
  +                     error(msg, locator);
                }
                break;
        }
  @@ -1025,8 +1036,7 @@
   StylesheetHandler::processStylesheet(
                        const XalanDOMChar*             name,
                        const AttributeList&    atts,
  -                     int                                             /* 
lineNumber */,
  -                     int                                             /* 
columnNumber */,
  +                     const Locator*                  locator,
                        bool&                                   fPreserveSpace,
                        bool&                                   
fSpaceAttrProcessed)
   {
  @@ -1076,7 +1086,7 @@
   
                        fVersionFound = true;
                }
  -             else if(processSpaceAttr(aname, atts, i, fPreserveSpace) == 
true)
  +             else if(processSpaceAttr(aname, atts, i, locator, 
fPreserveSpace) == true)
                {
                        fSpaceAttrProcessed = true;
                }
  @@ -1090,7 +1100,7 @@
                                        " has an illegal attribute: " +
                                        aname);
   
  -                             throw SAXException(c_wstr(msg));
  +                             error(msg, locator);
                        }
                }
   
  @@ -1102,7 +1112,7 @@
   
        if (fVersionFound == false)
        {
  -             throw SAXException(c_wstr(TranscodeFromLocalCodePage("The 
stylesheet element did not specify a version attribute!")));
  +             error("The stylesheet element did not specify a version 
attribute.", locator);
        }
   }
   
  @@ -1112,7 +1122,8 @@
   StylesheetHandler::processExtensionElement(
                        const XalanDOMChar*             name,
                        const XalanDOMString&   localName,
  -                     const AttributeList&    atts)
  +                     const AttributeList&    atts,
  +                     const Locator*                  locator)
   {
        if (equals(localName, Constants::ATTRNAME_COMPONENTS))
        {
  @@ -1140,15 +1151,17 @@
                        }
                        else if(!isAttrOK(aname, atts, i))
                        {
  -                             
m_constructionContext.error(XalanDOMString(name) + " has an illegal attribute: 
" + aname);
  +                             const XalanDOMString    
msg(XalanDOMString(name) + " has an illegal attribute: " + aname);
  +
  +                             error(msg, locator);
                        }
                }
   
  -             if (isEmpty(prefix)) 
  +             if (isEmpty(prefix) == true) 
                {
  -                     XalanDOMString msg("StylesheetHandler) " + 
XalanDOMString(name) + " attribute 'prefix' is missing");
  +                     const XalanDOMString    msg("StylesheetHandler) " + 
XalanDOMString(name) + " attribute 'prefix' is missing");
   
  -                     throw SAXException(c_wstr(msg));
  +                     error(msg, locator);
                }
   
                // SCOTT: is the line below correct?
  @@ -1206,7 +1219,9 @@
                        }
                        else if(!isAttrOK(aname, atts, i))
                        {
  -                             
m_constructionContext.error(XalanDOMString(name) + " has an illegal attribute: 
" + aname);
  +                             const XalanDOMString    
msg(XalanDOMString(name) + " has an illegal attribute: " + aname);
  +
  +                             error(msg, locator);
                        }
                }
        }
  @@ -1222,11 +1237,10 @@
   StylesheetHandler::processPreserveStripSpace(
                        const XalanDOMChar*             name,
                        const AttributeList&    atts,
  -                     int                                             
lineNumber,
  -                     int                                             
columnNumber,
  +                     const Locator*                  locator,
                        int                                             
xslToken)
   {
  -     ElemEmpty nsNode(m_constructionContext, m_stylesheet, lineNumber, 
columnNumber);
  +     ElemEmpty nsNode(m_constructionContext, m_stylesheet, 
getLineNumber(locator), getColumnNumber(locator));
   
        const unsigned int      nAttrs = atts.getLength();
   
  @@ -1269,16 +1283,18 @@
                }
                else if(!isAttrOK(aname, atts, i))
                {
  -                     m_constructionContext.error(XalanDOMString(name) + " 
has an illegal attribute: " + aname);
  +                     const XalanDOMString    msg(XalanDOMString(name) + " 
has an illegal attribute: " + aname);
  +
  +                     error(msg, locator);
                }
        }
   
        if(!foundIt && inExtensionElement() == false)
        {
  -             XalanDOMString msg("(StylesheetHandler) " + 
XalanDOMString(name) +
  -                     " requires a " + Constants::ATTRNAME_ELEMENTS + " 
attribute!");
  +             const XalanDOMString    msg("(StylesheetHandler) " + 
XalanDOMString(name) +
  +                     " requires a " + Constants::ATTRNAME_ELEMENTS + " 
attribute.");
   
  -             throw SAXException(c_wstr(msg));
  +             error(msg, locator);
        }
   }
   
  @@ -1287,8 +1303,7 @@
   void
   StylesheetHandler::appendChildElementToParent(
                        ElemTemplateElement*    elem,
  -                     int                                             
lineNumber,
  -                     int                                             
columnNumber)
  +                     const Locator*                  locator)
   {
        ElemTemplateElement* const      parent = m_elemStack.back();
   
  @@ -1316,7 +1331,7 @@
                        append(theMessage, " is not a valid child of ");
                        append(theMessage, parent->getElementName());
   
  -                     error(theMessage, lineNumber, columnNumber);
  +                     error(theMessage, locator);
                }
   
                throw;
  @@ -1373,7 +1388,8 @@
   void
   StylesheetHandler::processImport(
                        const XalanDOMChar*             name,
  -                     const AttributeList&    atts)
  +                     const AttributeList&    atts,
  +                     const Locator*                  locator)
   {
        const unsigned int      nAttrs = atts.getLength();
   
  @@ -1389,7 +1405,7 @@
                        
                        if(m_foundNotImport)
                        {
  -                             throw SAXException("Imports can only occur as 
the first elements in the stylesheet!");
  +                             error("Imports can only occur as the first 
elements in the stylesheet.", locator);
                        }
   
                        const XalanDOMString    saved_XSLNameSpaceURL = 
m_stylesheet.getXSLTNamespaceURI();
  @@ -1406,9 +1422,9 @@
   
                        if(stackContains(importStack, hrefUrl))
                        {
  -                             XalanDOMString msg(hrefUrl + " is directly or 
indirectly importing itself!");
  +                             const XalanDOMString    msg(hrefUrl + " is 
directly or indirectly importing itself.");
   
  -                             throw SAXException(c_wstr(msg));
  +                             error(msg, locator);
                        }
   
                        importStack.push_back(hrefUrl);
  @@ -1434,15 +1450,17 @@
                }
                else if(!isAttrOK(aname, atts, i))
                {
  -                     m_constructionContext.error(XalanDOMString(name) + " 
has an illegal attribute: " + aname);
  +                     const XalanDOMString    msg(XalanDOMString(name) + " 
has an illegal attribute: " + aname);
  +
  +                     error(msg, locator);
                }
        }
   
        if(!foundIt)
        {
  -             XalanDOMString msg("Could not find href attribute for " + 
XalanDOMString(name));
  +             const XalanDOMString    msg("Could not find href attribute for 
" + XalanDOMString(name));
   
  -             throw SAXException(c_wstr(msg));
  +             error(msg, locator);
        }
   }
   
  @@ -1450,7 +1468,8 @@
   void
   StylesheetHandler::processInclude(
                        const XalanDOMChar*             name,
  -                     const AttributeList&    atts)
  +                     const AttributeList&    atts,
  +                     const Locator*                  locator)
   {
        const unsigned int      nAttrs = atts.getLength();
   
  @@ -1473,9 +1492,9 @@
   
                        if(stackContains(m_stylesheet.getIncludeStack(), 
hrefUrl))
                        {
  -                             XalanDOMString msg(hrefUrl + " is directly or 
indirectly including itself!");
  +                             XalanDOMString msg(hrefUrl + " is directly or 
indirectly including itself.");
   
  -                             throw SAXException(c_wstr(msg));
  +                             error(msg, locator);
                        }
   
                        m_stylesheet.getIncludeStack().push_back(hrefUrl);
  @@ -1487,15 +1506,17 @@
                }
                else if(!isAttrOK(aname, atts, i))
                {
  -                     m_constructionContext.error(XalanDOMString(name) + " 
has an illegal attribute: " + aname);
  +                     const XalanDOMString    msg(XalanDOMString(name) + " 
has an illegal attribute: " + aname);
  +
  +                     error(msg, locator);
                }
        }
   
        if(!foundIt)
        {
  -             XalanDOMString msg("Could not find href attribute for " + 
XalanDOMString(name));
  +             const XalanDOMString    msg("Could not find href attribute for 
" + XalanDOMString(name));
   
  -             throw SAXException(c_wstr(msg));
  +             error(msg, locator);
        }
   }
   
  @@ -1504,9 +1525,7 @@
   void
   StylesheetHandler::endElement(const XMLCh* const name)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == true)
  -             return;
  +     const Locator* const    locator = 
m_constructionContext.getLocatorFromStack();
   
   #if !defined(XALAN_NO_NAMESPACES)
        using std::for_each;
  @@ -1568,15 +1587,15 @@
        {
                if (isEmpty(m_LXSLTScriptLang)) 
                {
  -                     XalanDOMString msg(XalanDOMString(name) + " attribute 
\'lang\' is missing");
  +                     const XalanDOMString    msg(XalanDOMString(name) + " 
attribute \'lang\' is missing");
   
  -                     throw SAXException(c_wstr(msg));
  +                     error(msg, locator);
                }
                if (m_pLXSLTExtensionNSH == 0) 
                {
  -                     XalanDOMString msg("(StylesheetHandler) misplaced " + 
XalanDOMString(name) + " element?? Missing container element " + "'component'");
  +                     const XalanDOMString    msg("(StylesheetHandler) 
misplaced " + XalanDOMString(name) + " element?? Missing container element " + 
"'component'");
   
  -                     throw SAXException(c_wstr(msg));
  +                     error(msg, locator);
                }
   
                m_pLXSLTExtensionNSH->setScript(m_LXSLTScriptLang, 
m_LXSLTScriptSrcURL, m_LXSLTScriptBody);
  @@ -1606,10 +1625,6 @@
                        const XMLCh* const      chars,
                        const unsigned int      length)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == true)
  -             return;
  -
        accumulateText(chars, length);
   }
   
  @@ -1620,10 +1635,6 @@
                        const XMLCh* const      chars,
                        const unsigned int      length)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == true)
  -             return;
  -
        accumulateText(chars, length);
   
        processText(chars, length);
  @@ -1638,10 +1649,6 @@
                        const XMLCh* const      /*chars*/,
                        const unsigned int      /*length*/)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == true)
  -             return;
  -
        // Ignore!
        m_lastPopped = 0;
   }
  @@ -1653,10 +1660,6 @@
                        const XMLCh* const      /*target*/,
                        const XMLCh* const      /*data*/)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == true)
  -             return;
  -
        if (isXMLWhitespace(m_accumulateText) == false)
        {
                processAccumulatedText();
  @@ -1672,11 +1675,7 @@
   void
   StylesheetHandler::comment(const XMLCh* const /*data*/)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == false)
  -     {
  -             processAccumulatedText();
  -     }
  +     processAccumulatedText();
   }
   
   
  @@ -1684,11 +1683,7 @@
   void
   StylesheetHandler::entityReference(const XMLCh* const /*name*/)
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == false)
  -     {
  -             processAccumulatedText();
  -     }
  +     processAccumulatedText();
   }
   
   
  @@ -1696,11 +1691,7 @@
   void
   StylesheetHandler::resetDocument()
   {
  -     // if we have apending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == false)
  -     {
  -             clear(m_accumulateText);
  -     }
  +     clear(m_accumulateText);
   }
   
   
  @@ -1710,10 +1701,6 @@
                        const XMLCh* const      /* chars */,
                        const unsigned int      /* length */)
   {
  -     // if we have a pending exception, we don't want to even try to process 
this
  -     if (m_exceptionPending == true)
  -             return;
  -
     // No action for the moment.
   }
   
  @@ -1866,21 +1853,20 @@
   
   void
   StylesheetHandler::error(
  -                     const XalanDOMString&   theMessage,
  -                     int                                             
theLineNumber,
  -                     int                                             
theColumnNumber) const
  +                     const char*             theMessage,
  +                     const Locator*  theLocator) const
   {
  -     XalanDOMString  theErrorMessage(theMessage);
  -     
  -     append(theErrorMessage, ", at line ");
  -     LongToDOMString(theLineNumber, theErrorMessage);
  +     m_constructionContext.error(theMessage, 0, theLocator);
  +}
   
  -     append(theErrorMessage, ", offset ");
  -     LongToDOMString(theColumnNumber, theErrorMessage);
   
  -     append(theErrorMessage, ".");
   
  -     throw SAXException(c_wstr(theErrorMessage));
  +void
  +StylesheetHandler::error(
  +                     const XalanDOMString&   theMessage,
  +                     const Locator*                  theLocator) const
  +{
  +     m_constructionContext.error(theMessage, 0, theLocator);
   }
   
   
  @@ -1948,4 +1934,36 @@
        m_handler.m_stylesheet.getNamespacesHandler().swap(m_namespacesHandler);
        m_handler.m_inExtensionElementStack.swap(m_inExtensionElementStack);
        m_handler.m_preserveSpaceStack.swap(m_preserveSpaceStack);
  +}
  +
  +
  +
  +const XalanDOMString                 StylesheetHandler::s_emptyString;
  +
  +XalanDOMString                                       s_localPart;
  +
  +XalanQNameByReference                        s_spaceAttrQName;
  +
  +const XalanQName&                            
StylesheetHandler::s_spaceAttrQName = ::s_spaceAttrQName;
  +
  +
  +
  +void
  +StylesheetHandler::initialize()
  +{
  +     ::s_localPart = XALAN_STATIC_UCODE_STRING("space");
  +
  +     ::s_spaceAttrQName.setLocalPart(::s_localPart);
  +
  +     ::s_spaceAttrQName.setNamespace(DOMServices::s_XMLNamespaceURI);
  +}
  +
  +
  +
  +void
  +StylesheetHandler::terminate()
  +{
  +     releaseMemory(::s_localPart);
  +
  +     ::s_spaceAttrQName.clear();
   }
  
  
  
  1.30      +41 -24    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.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- StylesheetHandler.hpp     2001/05/14 01:03:12     1.29
  +++ StylesheetHandler.hpp     2001/09/14 20:49:43     1.30
  @@ -89,6 +89,7 @@
   class ElemTextLiteral;
   class ExtensionNSHandler;
   class StylesheetConstructionContext;
  +class XalanQName;
   
   
   
  @@ -117,11 +118,18 @@
   #endif
   
        /**
  -      * Stack to keep track of the current include base.
  +      * Perform static initialization.  See class XMLSupportInit.
         */
  -     XalanDOMString m_includeBase;
  +     static void
  +     initialize();
   
        /**
  +      * Perform static shut down.  See class XMLSupportInit.
  +      */
  +     static void
  +     terminate();
  +
  +     /**
         * Construct a StylesheetHandler ... it will add the DOM nodes 
         * to the document fragment.
         */
  @@ -378,6 +386,7 @@
         * @param aname The name of the attribute in question.
         * @param atts The attribute list that owns the attribute.
         * @param which The index of the attribute into the attribute list.
  +      * @param locator A Locator instance for error reporting.
         * @param fPreserve set to true if the attribute value is "preserve"
         * @return True if this is a xml:space attribute.
         */
  @@ -386,18 +395,21 @@
                        const XalanDOMChar*             aname,
                        const AttributeList&    atts,
                        int                                             which,
  +                     const Locator*                  locator,
                        bool&                                   fPreserve);
   
        /** 
         * Tell whether or not this is a xml:space attribute and, if so, 
process it.
         * 
         * @param atts The attribute list that owns the attribute.
  +      * @param locator A Locator instance for error reporting.
         * @param fPreserve set to true if an xml:space attribute value is 
"preserve"
         * @return True if this is a xml:space attribute.
         */
        bool
        processSpaceAttr(
                        const AttributeList&    atts,
  +                     const Locator*                  locator,
                        bool&                                   fPreserve);
   
        /**
  @@ -406,20 +418,17 @@
        void
        processImport(
                        const XalanDOMChar*             name,
  -                     const AttributeList&    atts);
  +                     const AttributeList&    atts,
  +                     const Locator*                  locator);
   
        /**
         * Process xsl:include.
         */
        void
  -     processInclude(const XalanDOMChar*              name,
  -                                const AttributeList&         atts);
  -
  -     void
  -     error(
  -                     const XalanDOMString&   theMessage,
  -                     int                                             
theLineNumber,
  -                     int                                             
theColumnNumber) const;
  +     processInclude(
  +                     const XalanDOMChar*             name,
  +                     const AttributeList&    atts,
  +                     const Locator*                  locator);
   
        void
        doCleanup();
  @@ -431,9 +440,19 @@
   
        StylesheetHandler&
        operator=(const StylesheetHandler&);
  +
  +     // Utility functions...
  +     void
  +     error(
  +                     const char*             theMessage,
  +                     const Locator*  theLocator) const;
   
  -     // Utility function...
        void
  +     error(
  +                     const XalanDOMString&   theMessage,
  +                     const Locator*                  theLocator) const;
  +
  +     void
        processText(
                        const XMLCh* const      chars,
                        const unsigned int      length);
  @@ -453,8 +472,7 @@
                        const XalanDOMString&   ns,
                        const AttributeList&    atts,
                        int                                             
xslToken,
  -                     int                                             
lineNumber,
  -                     int                                             
columnNumber,
  +                     const Locator*                  locator,
                        bool&                                   fPreserveSpace,
                        bool&                                   
fSpaceAttrProcessed);
   
  @@ -462,8 +480,7 @@
        processStylesheet(
                        const XalanDOMChar*             name,
                        const AttributeList&    atts,
  -                     int                                             
lineNumber,
  -                     int                                             
columnNumber,
  +                     const Locator*                  locator,
                        bool&                                   fPreserveSpace,
                        bool&                                   
fSpaceAttrProcessed);
   
  @@ -471,15 +488,13 @@
        processPreserveStripSpace(
                        const XalanDOMChar*             name,
                        const AttributeList&    atts,
  -                     int                                             
lineNumber,
  -                     int                                             
columnNumber,
  +                     const Locator*                  locator,
                        int                                             
xslToken);
   
        void
        appendChildElementToParent(
                        ElemTemplateElement*    elem,
  -                     int                                             
lineNumber,
  -                     int                                             
columnNumber);
  +                     const Locator*                  locator);
   
        bool
        inExtensionElement() const;
  @@ -488,13 +503,11 @@
        processExtensionElement(
                        const XalanDOMChar*             name,
                        const XalanDOMString&   localName,
  -                     const AttributeList&    atts);
  +                     const AttributeList&    atts,
  +                     const Locator*                  locator);
   
        // Data members...
  -     XalanDOMString  m_pendingException;
   
  -     bool                    m_exceptionPending;
  -
        /**
         * The owning stylesheet.
         */
  @@ -564,6 +577,8 @@
         */
        XalanDOMString  m_accumulateText;
   
  +     XalanDOMString  m_includeBase;
  +
        BoolStackType   m_inExtensionElementStack;
   
        BoolStackType   m_preserveSpaceStack;
  @@ -637,6 +652,8 @@
        friend class PushPopIncludeState;
   
        static const XalanDOMString                             s_emptyString;
  +
  +     static const XalanQName&                                
s_spaceAttrQName;
   };
   
   
  
  
  
  1.117     +67 -1     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.116
  retrieving revision 1.117
  diff -u -r1.116 -r1.117
  --- XSLTEngineImpl.cpp        2001/09/12 17:48:03     1.116
  +++ XSLTEngineImpl.cpp        2001/09/14 20:49:43     1.117
  @@ -1229,6 +1229,17 @@
   
   void
   XSLTEngineImpl::message(
  +                     const XalanDOMString&   msg,
  +                     const Locator&                  locator,
  +                     const XalanNode*                sourceNode) const
  +{
  +     problem(msg, ProblemListener::eMESSAGE, locator, sourceNode);
  +}
  +
  +
  +
  +void
  +XSLTEngineImpl::message(
                        const char*                     msg,
                        const XalanNode*        sourceNode,
                        const XalanNode*        styleNode) const
  @@ -1344,8 +1355,8 @@
                m_problemListener->problem(
                                        ProblemListener::eXSLPROCESSOR,
                                        classification,
  -                                     styleNode,
                                        sourceNode,
  +                                     styleNode,
                                        msg,
                                        id,
                                        lineNumber,
  @@ -1361,6 +1372,39 @@
   
   
   void
  +XSLTEngineImpl::problem(
  +                     const XalanDOMString&                           msg, 
  +                     ProblemListener::eClassification        classification,
  +                     const Locator&                                          
locator,
  +                     const XalanNode*                                        
sourceNode) const
  +{
  +     const XalanDOMChar* const       id = locator.getSystemId();
  +
  +     const int                                       lineNumber = 
locator.getLineNumber();
  +     const int                                       columnNumber = 
locator.getColumnNumber();
  +
  +     if (m_problemListener != 0)
  +     {
  +             m_problemListener->problem(
  +                                     ProblemListener::eXSLPROCESSOR,
  +                                     classification,
  +                                     sourceNode,
  +                                     0,
  +                                     msg,
  +                                     id,
  +                                     lineNumber,
  +                                     columnNumber);
  +     }
  +
  +     if (classification == ProblemListener::eERROR)
  +     {
  +             throw XSLTProcessorException(msg, XalanDOMString(id), 
lineNumber, columnNumber);
  +     }
  +}
  +
  +
  +
  +void
   XSLTEngineImpl::warn(
                        const XalanDOMString&   msg,
                        const XalanNode*                sourceNode,
  @@ -1384,6 +1428,17 @@
   
   void
   XSLTEngineImpl::warn(
  +                     const XalanDOMString&           msg,
  +                     const Locator&                          locator,
  +                     const XalanNode*                        sourceNode) 
const
  +{
  +     problem(msg, ProblemListener::eWARNING, locator, sourceNode);
  +}
  +
  +
  +
  +void
  +XSLTEngineImpl::warn(
                        const char*                     msg,
                        const XalanNode*        sourceNode,
                        const XalanNode*        styleNode) const
  @@ -1411,6 +1466,17 @@
                        const ElemTemplateElement*      styleNode) const
   {
        problem(msg, ProblemListener::eERROR, sourceNode, styleNode);
  +}
  +
  +
  +
  +void
  +XSLTEngineImpl::error(
  +                     const XalanDOMString&           msg,
  +                     const Locator&                          locator,
  +                     const XalanNode*                        sourceNode) 
const
  +{
  +     problem(msg, ProblemListener::eERROR, locator, sourceNode);
   }
   
   
  
  
  
  1.74      +25 -0     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.73
  retrieving revision 1.74
  diff -u -r1.73 -r1.74
  --- XSLTEngineImpl.hpp        2001/07/23 01:39:45     1.73
  +++ XSLTEngineImpl.hpp        2001/09/14 20:49:43     1.74
  @@ -773,6 +773,12 @@
                        const XalanNode*        styleNode = 0) const;
   
        virtual void
  +     message(
  +                     const XalanDOMString&   msg,
  +                     const Locator&                  locator,
  +                     const XalanNode*                sourceNode = 0) const;
  +
  +     virtual void
        warn(
                        const XalanDOMString&   msg,
                        const XalanNode*                sourceNode = 0,
  @@ -798,6 +804,12 @@
                        const XalanNode*        styleNode = 0) const;
   
        virtual void
  +     warn(
  +                     const XalanDOMString&   msg,
  +                     const Locator&                  locator,
  +                     const XalanNode*                sourceNode = 0) const;
  +
  +     virtual void
        error(
                        const XalanDOMString&   msg,
                        const XalanNode*                sourceNode = 0,
  @@ -809,6 +821,12 @@
                        const XalanNode*                        sourceNode,
                        const ElemTemplateElement*      styleNode) const;
   
  +     virtual void
  +     error(
  +                     const XalanDOMString&   msg,
  +                     const Locator&                  locator,
  +                     const XalanNode*                sourceNode = 0) const;
  +
        /**
         * Report an error, and throw an exception.
         * 
  @@ -1591,6 +1609,13 @@
                        ProblemListener::eClassification        classification,
                        const XalanNode*                                        
sourceNode,
                        const ElemTemplateElement*                      
styleNode) const;
  +
  +     void
  +     problem(
  +                     const XalanDOMString&                           msg, 
  +                     ProblemListener::eClassification        classification,
  +                     const Locator&                                          
locator,
  +                     const XalanNode*                                        
sourceNode) const;
   
     //==========================================================
     // SECTION: Function to do with attribute handling
  
  
  
  1.25      +44 -4     xml-xalan/c/src/XSLT/XSLTProcessor.hpp
  
  Index: XSLTProcessor.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTProcessor.hpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- XSLTProcessor.hpp 2001/08/13 17:08:54     1.24
  +++ XSLTProcessor.hpp 2001/09/14 20:49:43     1.25
  @@ -75,6 +75,7 @@
   class ElemTemplateElement;
   class FormatterListener;
   class GenerateEvent;
  +class Locator;
   class NodeRefListBase;
   class PrefixResolver;
   class PrintWriter;
  @@ -446,11 +447,24 @@
                        const ElemTemplateElement*      styleNode) const = 0;
   
        /**
  +      * Report a message.
  +      * 
  +      * @param msg            text of message to output
  +      * @param locator  A Locator for error reporting
  +      * @param sourceNode node in source where message occurred
  +      */
  +     virtual void
  +     message(
  +                     const XalanDOMString&   msg,
  +                     const Locator&                  locator,
  +                     const XalanNode*                sourceNode = 0) const = 
0;
  +
  +     /**
         * Report a warning.
         * 
         * @param msg            text of message to output
  -      * @param sourceNode node in source where error occurred
  -      * @param styleNode  node in stylesheet where error occurred
  +      * @param sourceNode node in source where the warning occurred
  +      * @param styleNode  node in stylesheet where the warning occurred
         */
        virtual void
        warn(
  @@ -462,8 +476,8 @@
         * Report a warning.
         * 
         * @param msg            text of message to output
  -      * @param sourceNode node in source where error occurred
  -      * @param styleNode  node in stylesheet where error occurred
  +      * @param sourceNode node in source where warning occurred
  +      * @param styleNode  node in stylesheet where warning occurred
         */
        virtual void
        warn(
  @@ -472,6 +486,19 @@
                        const ElemTemplateElement*      styleNode) const = 0;
   
        /**
  +      * Report a warning.
  +      * 
  +      * @param msg            text of message to output
  +      * @param locator  A Locator for error reporting
  +      * @param sourceNode node in source where error occurred
  +      */
  +     virtual void
  +     warn(
  +                     const XalanDOMString&   msg,
  +                     const Locator&                  locator,
  +                     const XalanNode*                sourceNode = 0) const = 
0;
  +
  +     /**
         * Report an error and throw an exception.
         * 
         * @param msg            text of message to output
  @@ -496,6 +523,19 @@
                        const XalanDOMString&           msg,
                        const XalanNode*                        sourceNode,
                        const ElemTemplateElement*      styleNode) const = 0;
  +
  +     /**
  +      * Report an error and throw an exception.
  +      * 
  +      * @param msg            text of message to output
  +      * @param locator  A Locator for error reporting
  +      * @param sourceNode node in source where error occurred
  +      */
  +     virtual void
  +     error(
  +                     const XalanDOMString&   msg,
  +                     const Locator&                  locator,
  +                     const XalanNode*                sourceNode = 0) const = 
0;
   };
   
   
  
  
  
  1.12      +2 -1      xml-xalan/c/src/XSLT/XSLTProcessorEnvSupport.hpp
  
  Index: XSLTProcessorEnvSupport.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTProcessorEnvSupport.hpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- XSLTProcessorEnvSupport.hpp       2001/07/18 04:33:15     1.11
  +++ XSLTProcessorEnvSupport.hpp       2001/09/14 20:49:43     1.12
  @@ -122,7 +122,8 @@
                        const XalanDOMString&                   theNamespace,
                        const XalanDOMString&                   functionName,
                        XalanNode*                                              
context,
  -                     const XObjectArgVectorType&             argVec) const = 
0;
  +                     const XObjectArgVectorType&             argVec,
  +                     const Locator*                                  
locator) const = 0;
   
        virtual bool
        problem(
  
  
  
  1.24      +9 -6      xml-xalan/c/src/XSLT/XSLTProcessorEnvSupportDefault.cpp
  
  Index: XSLTProcessorEnvSupportDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTProcessorEnvSupportDefault.cpp,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- XSLTProcessorEnvSupportDefault.cpp        2001/07/18 04:33:15     1.23
  +++ XSLTProcessorEnvSupportDefault.cpp        2001/09/14 20:49:43     1.24
  @@ -278,13 +278,16 @@
                        const XalanDOMString&                   theNamespace,
                        const XalanDOMString&                   functionName,
                        XalanNode*                                              
context,
  -                     const XObjectArgVectorType&             argVec) const
  +                     const XObjectArgVectorType&             argVec,
  +                     const Locator*                                  
locator) const
   {
  -     return m_defaultSupport.extFunction(executionContext,
  -                                                                             
theNamespace,
  -                                                                             
functionName,
  -                                                                             
context,
  -                                                                             
argVec);
  +     return m_defaultSupport.extFunction(
  +                     executionContext,
  +                     theNamespace,
  +                     functionName,
  +                     context,
  +                     argVec,
  +                     locator);
   }
   
   
  
  
  
  1.19      +2 -1      xml-xalan/c/src/XSLT/XSLTProcessorEnvSupportDefault.hpp
  
  Index: XSLTProcessorEnvSupportDefault.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTProcessorEnvSupportDefault.hpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XSLTProcessorEnvSupportDefault.hpp        2001/07/18 04:33:15     1.18
  +++ XSLTProcessorEnvSupportDefault.hpp        2001/09/14 20:49:43     1.19
  @@ -187,7 +187,8 @@
                        const XalanDOMString&                   theNamespace,
                        const XalanDOMString&                   functionName,
                        XalanNode*                                              
context,
  -                     const XObjectArgVectorType&             argVec) const;
  +                     const XObjectArgVectorType&             argVec,
  +                     const Locator*                                  
locator) const;
   
        virtual bool
        problem(
  
  
  

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

Reply via email to