All of the information you need is on the Xalan-C++ home page at xml.apache.org:
http://xml.apache.org/xalan-c/index.html There is a menu on the left with links to the repositories and to the docs. The docs are also included with the distribution. Dave Geoff <[EMAIL PROTECTED] To: [EMAIL PROTECTED] om> cc: Subject: Re: custom routines 12/29/2001 09:25 AM Please respond to xalan-dev David, Thank you for pointing me in the write direction (I strongly suspected I was missing something). However, one thing, I can't seem to find documented anywhere how to get the CVS updates. All I can find is how to download the latest full releases. Also, is there any documentation of the innards of the Xalan parser anywhere? The only thing I see in the docs are about the SAX and DOM interfaces. Geoff [EMAIL PROTECTED] wrote: >The error messages from the compiler are a result of not including the >correct header files. > >You should also take a look at the latest version of the Xalan C API. >There are already functions to use buffers for source tree and stylesheet >input. See the file XalanTransformer/XalanCAPI.h: > > XALAN_TRANSFORMER_EXPORT_FUNCTION(int) > XalanParseSourceFromStream( > const char* theXMLStream, > unsigned long theXMLStreamLength, > XalanHandle theXalanHandle, > XalanPSHandle* thePSHandle); > > XALAN_TRANSFORMER_EXPORT_FUNCTION(int) > XalanCompileStylesheetFromStream( > const char* theXSLStream, > unsigned long theXSLStreamLength, > XalanHandle theXalanHandle, > XalanCSSHandle* theCSSHandle); > > XALAN_TRANSFORMER_EXPORT_FUNCTION(int) > XalanTransformToHandlerPrebuilt( > XalanPSHandle thePSHandle, > XalanCSSHandle theCSSHandle, > XalanHandle theXalanHandle, > void* theOutputHandle, > XalanOutputHandlerType theOutputHandler, > XalanFlushHandlerType theFlushHandler); > >Be sure to read the comments in the header file carefully, because you'll >need to destroy the parsed source and compiled stylesheets instances once >the transformation is finished. Don't worry if you think this is less >efficient -- sources are always parsed and stylesheets are always compiled, >so there's no loss of efficiency if you do it yourself in your code. > >You may need to get the latest source code from CVS. You can also wait >until we finish the 1.3 release, which ought to be early next week. > >Dave > > > > > Geoff > <[EMAIL PROTECTED] To: [EMAIL PROTECTED] > om> cc: > Subject: custom routines > 12/28/2001 08:36 > PM > Please respond > to xalan-dev > > > > > > >Hi all, > >I've been working on something for a few days now and I can't seem to get >it to work (and I may also be re-inventing the wheel to). I'm writing an >apache module that needs to generate XHTML pages by feeding in XML and XSL >to Xalan as strings. These strings will be built on the fly by the >module. Since the apache module is in C and Xalan is in C++ I think I >need to make a custom api of sorts. Here's what I have thus far (it is >meant to be a cross between mod_xslt.c and streamtransform.cpp): > >#include <XalanTransformer/XalanTransformerDefinitions.hpp> >#include <util/PlatformUtils.hpp> >#include <cassert> >#if defined(XALAN_OLD_STREAM_HEADERS) >#include <strstream.h> >#else >#include <strstream> >#endif > >#include "primary_xalan_api.h" > >#include <XalanTransformer/XalanCAPI.h> >#include <XalanTransformer/XalanTransformer.hpp> > > >XALAN_TRANSFORMER_EXPORT_FUNCTION(void) >CustomStreamTransform(const char **xml, > const char **xsl, > XalanHandle >theXalanHandle, > void* >theOutputHandle, > XalanOutputHandlerType theOutputHandler, > XalanFlushHandlerType theFlushHandler) >{ > int theResult = 0; > istrstream theXMLInStream(*xml, strlen(*xml)); > istrstream theXSLInStream(*xsl, strlen(*xsl)); > > XSLTInputSource theInputSource(&theXMLInStream); > XSLTInputSource theStylesheetSource(&theXSLInStream); > > XalanTransformerOutputStream theOutputStream(theOutputHandle, >theOutputHandler, theFlushHandler); > > XalanOutputStreamPrintWriter thePrintWriter(theOutputStream); > XSLTResultTarget >theResultTarget(&thePrintWriter); > > // Do the transformation... > return theXalanHandle.transform( > theInputSource, > theStylesheetSource, > theResultTarget); >} > > >Unfortunately, this does not compile. I wind up with this error: > >primary_xalan_api.cpp: In function `void CustomStreamTransform(const >char **, const char **, void *, void *, long unsigned int >(*)(const char *, long unsigned int, void *), void (*)(void *))': >primary_xalan_api.cpp:37: variable `class XalanTransformerOutputStream >theOutputStream' has initializer but incomplete type >primary_xalan_api.cpp:39: `XalanOutputStreamPrintWriter' undeclared >(first use this function) >primary_xalan_api.cpp:39: (Each undeclared identifier is reported only once >primary_xalan_api.cpp:39: for each function it appears in.) >primary_xalan_api.cpp:39: parse error before `(' >primary_xalan_api.cpp:40: `thePrintWriter' undeclared (first use this >function) >primary_xalan_api.cpp:46: request for member `transform' in >`theXalanHandle', which is of non-aggregate type `void *' >primary_xalan_api.cpp:37: warning: unused variable `{error} >theOutputStream' >primary_xalan_api.cpp:30: warning: unused variable `int theResult' > > >Can someone please point me in the right direction as to how to make this >work? Thanks in advance. > >Geoff > > > >
