You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@locus.apache.org on 2000/11/29 22:00:36 UTC

cvs commit: xml-xalan/c/samples/StreamTransform StreamTransform.cpp StreamTransform.dsp

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