dbertoni    00/11/29 13:00:33

  Added:       c/samples/StreamTransform StreamTransform.cpp
                        StreamTransform.dsp
  Log:
  Initial revision.
  
  Revision  Changes    Path
  1.1                  xml-xalan/c/samples/StreamTransform/StreamTransform.cpp
  
  Index: StreamTransform.cpp
  ===================================================================
  // Base header file.  Must be first.
  #include <Include/PlatformDefinitions.hpp>
  
  
  
  #include <iostream>
  #include <strstream>
  #include <fstream>
  
  
  
  #include <util/PlatformUtils.hpp>
  
  
  
  #include <PlatformSupport/DOMStringHelper.hpp>
  
  
  
  #include <XPath/XObjectFactoryDefault.hpp>
  #include <XPath/XPathSupportDefault.hpp>
  #include <XPath/XPathFactoryDefault.hpp>
  
  
  
  #include <XSLT/StylesheetConstructionContextDefault.hpp>
  #include <XSLT/StylesheetExecutionContextDefault.hpp>
  #include <XSLT/XSLTEngineImpl.hpp>
  #include <XSLT/XSLTInit.hpp>
  #include <XSLT/XSLTInputSource.hpp>
  #include <XSLT/XSLTProcessorEnvSupportDefault.hpp>
  #include <XSLT/XSLTResultTarget.hpp>
  
  
  
  #include <XercesParserLiaison/XercesDOMSupport.hpp>
  #include <XercesParserLiaison/XercesParserLiaison.hpp>
  
  
  
  int
  main(
                        int                             argc,
                        const char*             /* argv */[])
  {
  #if !defined(XALAN_NO_NAMESPACES)
        using std::cerr;
        using std::cout;
        using std::endl;
        using std::istrstream;
        using std::ofstream;
        using std::ostrstream;
  #endif
  
        if (argc != 1)
        {
                cerr << "Usage: StreamTransform"
                         << endl
                         << endl;
        }
        else
        {
                try
                {
                        // Call the static initializer for Xerces...
                        XMLPlatformUtils::Initialize();
  
                        {
                                // Initialize the Xalan XSLT subsystem...
                                XSLTInit                                        
        theInit;
  
                                // Create the support objects that are 
necessary for running the processor...
                                XercesDOMSupport                                
theDOMSupport;
                                XercesParserLiaison                             
theParserLiaison(theDOMSupport);
                                XPathSupportDefault                             
theXPathSupport(theDOMSupport);
                                XSLTProcessorEnvSupportDefault  
theXSLTProcessorEnvSupport;
                                XObjectFactoryDefault                   
theXObjectFactory;
                                XPathFactoryDefault                             
theXPathFactory;
  
                                // Create a processor...
                                XSLTEngineImpl  theProcessor(
                                                theParserLiaison,
                                                theXPathSupport,
                                                theXSLTProcessorEnvSupport,
                                                theDOMSupport,
                                                theXObjectFactory,
                                                theXPathFactory);
  
                                // Connect the processor to the support 
object...
                                
theXSLTProcessorEnvSupport.setProcessor(&theProcessor);
  
                                // Create a stylesheet construction context, 
and a stylesheet
                                // execution context...
                                StylesheetConstructionContextDefault    
theConstructionContext(
                                                        theProcessor,
                                                        
theXSLTProcessorEnvSupport,
                                                        theXPathFactory);
  
                                StylesheetExecutionContextDefault               
theExecutionContext(
                                                        theProcessor,
                                                        
theXSLTProcessorEnvSupport,
                                                        theXPathSupport,
                                                        theXObjectFactory);
  
                                // A simple input document...
                                const char* const  theInputDocument = "<?xml 
version='1.0'?><doc>Hello world!</doc>";
  
                                // A "hello world" stylesheet.  Note that the 
encoding for the output is US-ASCII,
                                // since we're writing to a string.  It could 
be any encoding, but "binary" encodings,
                                // or encodings that could produce multi-byte 
characters would require transcoding on
                                // some platforms.
                                const char* const  theStylesheet =
  "<?xml version='1.0'?>\
  <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' 
version='1.0'>\
  <xsl:output encoding='US-ASCII'/>\
  <xsl:template match='doc'>\
  <out><xsl:value-of select='.'/></out>\
  </xsl:template>\
  </xsl:stylesheet>";
  
                                // Our input streams...
                                istrstream      
theInputDocumentStream(theInputDocument, strlen(theInputDocument));
                                istrstream      
theStylesheetStream(theStylesheet, strlen(theStylesheet));
  
                                // Our input sources...
                                XSLTInputSource         
theInputSource(&theInputDocumentStream);
                                XSLTInputSource         
theStylesheetSource(&theStylesheetStream);
  
                                // Our output target.  By default, we'll use an 
ostrstream that will allocate
                                // memory dynamically, although we could also 
use a static buffer since we 
                                // know the size of the output.
  #if defined(SIMPLE_STREAM_USE_STATIC_BUFFER)
                                char                            theData[100];
  
                                ostrstream                      
theOutputStream(theData, sizeof(theData));
  #else
                                ostrstream                      theOutputStream;
  #endif
  
                                XSLTResultTarget        
theResultTarget(&theOutputStream);
  
                                theProcessor.process(
                                                        theInputSource,
                                                        theStylesheetSource,
                                                        theResultTarget,
                                                        theConstructionContext,
                                                        theExecutionContext);
  
                                // OK, we'll now write the data from the string 
buffer to cout.
  
                                // Null-terminate the data first, to make 
things easier...
                                theOutputStream << '\0';
  
  #if !defined(SIMPLE_STREAM_USE_STATIC_BUFFER)
                                // Get a pointer to the string...
                                const char* const       theData = 
theOutputStream.str();
  
                                // Unfreeze the stream, so the memory is 
automatically
                                // delete when the stream goes out of scope...
                                theOutputStream.freeze(false);
  #endif
  
                                cout << theData;
                        }
  
                        // Call the static terminator for Xerces...
                        XMLPlatformUtils::Terminate();
                }
                catch(...)
                {
                        cerr << "Exception caught!!!"
                                 << endl
                                 << endl;
                }
        }
  
        return 0;
  }
  
  
  
  1.1                  xml-xalan/c/samples/StreamTransform/StreamTransform.dsp
  
  Index: StreamTransform.dsp
  ===================================================================
  # Microsoft Developer Studio Project File - Name="StreamTransform" - Package 
Owner=<4>
  # Microsoft Developer Studio Generated Build File, Format Version 6.00
  # ** DO NOT EDIT **
  
  # TARGTYPE "Win32 (x86) Console Application" 0x0103
  
  CFG=StreamTransform - Win32 Debug
  !MESSAGE This is not a valid makefile. To build this project using NMAKE,
  !MESSAGE use the Export Makefile command and run
  !MESSAGE 
  !MESSAGE NMAKE /f "StreamTransform.mak".
  !MESSAGE 
  !MESSAGE You can specify a configuration when running NMAKE
  !MESSAGE by defining the macro CFG on the command line. For example:
  !MESSAGE 
  !MESSAGE NMAKE /f "StreamTransform.mak" CFG="StreamTransform - Win32 Debug"
  !MESSAGE 
  !MESSAGE Possible choices for configuration are:
  !MESSAGE 
  !MESSAGE "StreamTransform - Win32 Release" (based on "Win32 (x86) Console 
Application")
  !MESSAGE "StreamTransform - Win32 Debug" (based on "Win32 (x86) Console 
Application")
  !MESSAGE 
  
  # Begin Project
  # PROP AllowPerConfigDependencies 0
  # PROP Scc_ProjName ""
  # PROP Scc_LocalPath ""
  CPP=cl.exe
  RSC=rc.exe
  
  !IF  "$(CFG)" == "StreamTransform - Win32 Release"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 0
  # PROP BASE Output_Dir "Release"
  # PROP BASE Intermediate_Dir "Release"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 0
  # PROP Output_Dir "..\..\Build\Win32\VC6\Release"
  # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Release\StreamTransform"
  # PROP Ignore_Export_Lib 0
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D 
"_MBCS" /YX /FD /c
  # ADD CPP /nologo /MD /W4 /GR /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I 
"..\..\src" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
  # ADD BASE RSC /l 0x409 /d "NDEBUG"
  # ADD RSC /l 0x409 /d "NDEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /subsystem:console /machine:I386
  # ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\*.lib 
..\..\Build\Win32\VC6\Release\*.lib kernel32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  
  !ELSEIF  "$(CFG)" == "StreamTransform - Win32 Debug"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 1
  # PROP BASE Output_Dir "Debug"
  # PROP BASE Intermediate_Dir "Debug"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 1
  # PROP Output_Dir "..\..\Build\Win32\VC6\Debug"
  # PROP Intermediate_Dir "..\..\Build\Win32\VC6\Debug\StreamTransform"
  # PROP Ignore_Export_Lib 0
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D 
"_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
  # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /Zi /Od /I 
"..\..\..\..\xml-xerces\c\src" /I "..\..\src" /D "WIN32" /D "_DEBUG" /D 
"_CONSOLE" /D "_MBCS" /D "XML_DEBUG" /YX /FD /GZ /c
  # ADD BASE RSC /l 0x409 /d "_DEBUG"
  # ADD RSC /l 0x409 /d "_DEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
  # ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug\*.lib 
..\..\Build\Win32\VC6\Debug\*.lib kernel32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  
  !ENDIF 
  
  # Begin Target
  
  # Name "StreamTransform - Win32 Release"
  # Name "StreamTransform - Win32 Debug"
  # Begin Group "Source Files"
  
  # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
  # Begin Source File
  
  SOURCE=.\StreamTransform.cpp
  # End Source File
  # End Group
  # Begin Group "Header Files"
  
  # PROP Default_Filter "h;hpp;hxx;hm;inl"
  # End Group
  # Begin Group "Resource Files"
  
  # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
  # End Group
  # End Target
  # End Project
  
  
  

Reply via email to