The method which calls selectNodeList (and wherein selectNodeList dies):

    //! evaluate an XPath expression for a given XalanDOM and a given starting 
context
    void evaluateQuery( XalanDocument * const pXalanDoc,
      XalanNode * const theContextNode,
      XalanDOMString xdsPathExpr,
      NodeRefList& theResult,
      bool * const pbFound )
    {
      *pbFound = false;
      
      if ( (XalanDocument * const) NULL != pXalanDoc )
      {      
        // a null node indicates that the context couldn't be found
        if ( (XalanNode * const) NULL != theContextNode)
        {
          // OK, let's evaluate the expression...
          pMyXPathEvaluator->selectNodeList(
                                theResult,
                                *pMyXalanSourceTreeDOMSupport,
                                theContextNode,
                                xdsPathExpr.c_str(),
                                pXalanDoc->getDocumentElement() );
  
          * pbFound = ( !theResult.empty() );
        }
      }
    }
    
The calling method (in a derived class which contains the above method):

    NodeRefList nodeRefList;
    bool bFound = false;
    pDBDXMLProcessor->evaluateQuery( pRequestXalanDoc,
      "/casperAPI", "trigger", nodeRefList, &bFound );

The context initialization in the base class' constructor:

      try
      {
        XMLPlatformUtils::Initialize();

        // Initialize Xalan.
        XalanTransformer::initialize();
        
        // initialize the XalanSourceTree
        pMyXalanSourceTreeInit = new XalanSourceTreeInit();
        
        // We'll use these to parse the XML file.
        pMyXalanSourceTreeDOMSupport = new XalanSourceTreeDOMSupport();
        pMyXalanSourceTreeParserLiaison = new 
XalanSourceTreeParserLiaison( *pMyXalanSourceTreeDOMSupport );

        // Hook the two DOM manager and the Xalan parser together
        
pMyXalanSourceTreeDOMSupport->setParserLiaison( pMyXalanSourceTreeParserLiaison 
);
        
        // our XPathEvaluator
        XPathEvaluator::initialize();
        pMyXPathEvaluator = new XPathEvaluator();

        // instantiate an Xalan Transformer
        pMyXalanTransformer = new XalanTransformer();
      }    
      catch (const XMLException& toCatch)
      {
         std::cerr << "Xalan and Xerces initialization failed. Error code was 
"
                    << toCatch.getCode() << "." << std::endl;
    
         //throw toCatch;
      }

And, finally, parsing of pRequestXalanDoc:

    //! parse the given XML input into a read-only Xalan DOM Document
    XalanDocument * const parseString( const char * const sXmlInputCharArray ) 
const  
    {
      // wrap the input string within a stream handler
      std::istringstream issXml( sXmlInputCharArray );
      
      // promote the input XML character buffer into an XSLTInputSource
      const XSLTInputSource xisXml( issXml );
      
      XalanDocument * const pXalanDoc = 
pMyXalanSourceTreeParserLiaison->parseXMLStream( xisXml );
      
      return pXalanDoc;
    }

On Thursday 16 June 2005 07:59 am, Axel Weiß wrote:
> Lonnie VanZandt wrote:
> > Not quite, the crash still occurs in the same location - but assuredly
> > it is a good idea to call that initialize() method nevertheless.
>
> Hi Lonnie,
>
> would you, please, provide us with some example you're working on?
>
> Just to be in-line with what you're telling about...
>
> Cheers,
>                       Axel


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

Reply via email to