auriemma    01/04/19 11:44:40

  Modified:    c/samples/CompileStylesheet CompileStylesheet.cpp
  Log:
  Updated to use the XalanTransformer class.
  
  Revision  Changes    Path
  1.17      +51 -133   
xml-xalan/c/samples/CompileStylesheet/CompileStylesheet.cpp
  
  Index: CompileStylesheet.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/samples/CompileStylesheet/CompileStylesheet.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- CompileStylesheet.cpp     2001/01/08 20:26:22     1.16
  +++ CompileStylesheet.cpp     2001/04/19 18:44:38     1.17
  @@ -23,31 +23,10 @@
   
   
   
  -#include <PlatformSupport/DOMStringHelper.hpp>
  +#include <XalanTransformer/XalanTransformer.hpp>
   
   
   
  -#include <XPath/XObjectFactoryDefault.hpp>
  -#include <XPath/XPathFactoryDefault.hpp>
  -
  -
  -
  -#include <XSLT/StylesheetConstructionContextDefault.hpp>
  -#include <XSLT/StylesheetExecutionContextDefault.hpp>
  -#include <XSLT/StylesheetRoot.hpp>
  -#include <XSLT/XSLTEngineImpl.hpp>
  -#include <XSLT/XSLTInit.hpp>
  -#include <XSLT/XSLTInputSource.hpp>
  -#include <XSLT/XSLTProcessorEnvSupportDefault.hpp>
  -#include <XSLT/XSLTResultTarget.hpp>
  -
  -
  -
  -#include <XalanSourceTree/XalanSourceTreeDOMSupport.hpp>
  -#include <XalanSourceTree/XalanSourceTreeParserLiaison.hpp>
  -
  -
  -
   int
   main(
                        int                             argc,
  @@ -60,6 +39,8 @@
        using std::ostrstream;
   #endif
   
  +     int     theResult = 0;
  +
        if (argc != 1)
        {
                cerr << "Usage: CompileStylesheet"
  @@ -68,121 +49,58 @@
        }
        else
        {
  -             try
  -             {
  -                     // Call the static initializer for Xerces...
  -                     XMLPlatformUtils::Initialize();
  +             // Call the static initializer for Xerces.
  +             XMLPlatformUtils::Initialize();
   
  -                     {
  -                             // Initialize the Xalan XSLT subsystem...
  -                             XSLTInit                                        
        theInit;
  +             // Initialize Xalan.
  +             XalanTransformer::initialize();
   
  -                             // Create some support objects that are 
necessary for running the processor...
  -                             XalanSourceTreeDOMSupport               
theDOMSupport;
  -                             XalanSourceTreeParserLiaison    
theParserLiaison(theDOMSupport);
  -
  -                             // Hook the two together...
  -                             
theDOMSupport.setParserLiaison(&theParserLiaison);
  -
  -                             // Create some more support objects.
  -                             XSLTProcessorEnvSupportDefault  
theXSLTProcessorEnvSupport;
  -                             XObjectFactoryDefault                   
theXObjectFactory;
  -                             XPathFactoryDefault                             
theXPathFactory;
  -
  -                             // Create a processor...
  -                             XSLTEngineImpl  theProcessor(
  -                                             theParserLiaison,
  -                                             theXSLTProcessorEnvSupport,
  -                                             theDOMSupport,
  -                                             theXObjectFactory,
  -                                             theXPathFactory);
  -
  -                             // Connect the processor to the support 
object...
  -                             
theXSLTProcessorEnvSupport.setProcessor(&theProcessor);
  -
  -                             // Create separate factory support objects so 
the stylesheet's
  -                             // factory-created XPath instances are 
independent from the
  -                             // processor's.
  -                             XPathFactoryDefault                             
theStylesheetXPathFactory;
  -
  -                             // Create a stylesheet construction context, 
using the
  -                             // stylesheet's factory support objects.
  -                             StylesheetConstructionContextDefault    
theConstructionContext(
  -                                                     theProcessor,
  -                                                     
theXSLTProcessorEnvSupport,
  -                                                     
theStylesheetXPathFactory);
  -
  -                             // The execution context uses the same factory 
support objects as
  -                             // the processor, since those objects have the 
same lifetime as
  -                             // other objects created as a result of the 
execution.
  -                             StylesheetExecutionContextDefault               
theExecutionContext(
  -                                                     theProcessor,
  -                                                     
theXSLTProcessorEnvSupport,
  -                                                     theDOMSupport,
  -                                                     theXObjectFactory);
  -
  -                             // Our input file.  The assumption is that the 
executable will be run
  -                             // from same directory as the input files.
  -                             const XalanDOMString    
theXSLFileName("foo.xsl");
  -
  -                             // Our stylesheet input source...
  -                             XSLTInputSource                 
theStylesheetSource(c_wstr(theXSLFileName));
  -
  -                             // Ask the processor to create a StylesheetRoot 
for the specified
  -                             // input XSL.  This is the compiled stylesheet. 
 We don't have to
  -                             // delete it, since it is owned by the 
StylesheetConstructionContext
  -                             // instance.
  -                             StylesheetRoot* const   theStylesheetRoot =
  -                                     theProcessor.processStylesheet(
  -                                                             
theStylesheetSource,
  -                                                             
theConstructionContext);
  -                             assert(theStylesheetRoot != 0);
  -
  -                             for (unsigned int i = 0; i < 10; i++)
  -                             {
  -                                     
theExecutionContext.setStylesheetRoot(theStylesheetRoot);
  -
  -                                     // Buffers passed in to ostrstream.
  -                                     char            inBuffer[10];
  -                                     char            outBuffer[10];
  -
  -                                     // Generate the input and output file 
names.
  -                                     ostrstream      
theFormatterIn(inBuffer, sizeof(inBuffer));
  -                                     ostrstream      
theFormatterOut(outBuffer, sizeof(outBuffer));
  -                                     
  -                                     theFormatterIn << "foo" << i + 1 << 
".xml" << '\0';
  -                                     theFormatterOut << "foo" << i + 1 << 
".out" << '\0';
  -
  -                                     //Generate the XML input and output 
objects.
  -                                     XSLTInputSource         
theInputSource(theFormatterIn.str());
  -                                     XSLTResultTarget        
theResultTarget(XalanDOMString(theFormatterOut.str()));
  -
  -                                     // Do the tranformation...
  -                                     theProcessor.process(
  -                                              theInputSource,
  -                                              theResultTarget,
  -                                              theExecutionContext);
  -
  -                                     // Reset the processor and the 
execution context
  -                                     // so we can perform the next 
transformation.
  -                                     // Reset the parser liaison to clear 
out the
  -                                     // source document we just transformed.
  -                                     theProcessor.reset();
  -                                     theExecutionContext.reset();
  -                                     theParserLiaison.reset();
  -                             }
  -                     }
  +             // Create a XalanTransformer.
  +             XalanTransformer theXalanTransformer;
   
  -                     // Call the static terminator for Xerces...
  -                     XMLPlatformUtils::Terminate();
  -             }
  -             catch(...)
  -             {
  -                     cerr << "Exception caught!!!"
  -                              << endl
  -                              << endl;
  +             // Our input files...The assumption is that the executable will 
be run
  +             // from same directory as the input files.
  +             const char*             theXSLFileName = "foo.xsl";
  +             
  +             // Compile the stylesheet.
  +             const XalanCompiledStylesheet* const    theCompiledStylesheet = 
  +                     theXalanTransformer.compileStylesheet(theXSLFileName);
  +
  +             assert(theCompiledStylesheet != 0);
  +
  +             for (unsigned int i = 0; i < 10; i++)
  +             {               
  +                     // Buffers passed in to ostrstream.
  +                     char            inBuffer[10];
  +                     char            outBuffer[10];  
  +
  +                     // Generate the input and output file names.
  +                     ostrstream      theFormatterIn(inBuffer, 
sizeof(inBuffer));
  +                     ostrstream      theFormatterOut(outBuffer, 
sizeof(outBuffer));
  +
  +                     theFormatterIn << "foo" << i + 1 << ".xml" << '\0';
  +                     theFormatterOut << "foo" << i + 1 << ".out" << '\0';
  +
  +                     char*           theXMLFileName = theFormatterIn.str();
  +                     char*           theOutputFileName = 
theFormatterOut.str();
  +
  +                     // Do the transform.
  +                     theResult = 
theXalanTransformer.transform(theXMLFileName, theCompiledStylesheet, 
theOutputFileName);
  +    
  +                     if(theResult != 0)
  +                     {
  +                             cerr << "CompileStylesheet Error: \n" << 
theXalanTransformer.getLastError()
  +                                      << endl
  +                                      << endl;
  +                     }
                }
  +
  +             // Terminate Xalan.
  +             XalanTransformer::terminate();
  +
  +             // Call the static terminator for Xerces.
  +             XMLPlatformUtils::Terminate();
        }
   
  -     return 0;
  +     return theResult;
   }
  
  
  

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

Reply via email to