From 256f6e5222d11be55c06a91a4db360bac0e3a6d6 Mon Sep 17 00:00:00 2001 From: Stef Date: Tue, 29 Jun 2004 22:51:34 +0000 Subject: Updated to new sablot library --- win32/sablot/include/sablot.h | 594 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 584 insertions(+), 10 deletions(-) (limited to 'win32/sablot/include/sablot.h') diff --git a/win32/sablot/include/sablot.h b/win32/sablot/include/sablot.h index 71b05a2..0d63579 100644 --- a/win32/sablot/include/sablot.h +++ b/win32/sablot/include/sablot.h @@ -1,560 +1,1134 @@ /* + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is the Sablotron XSLT Processor. + * + * The Initial Developer of the Original Code is Ginger Alliance Ltd. - * Portions created by Ginger Alliance are Copyright (C) 2000-2002 + + * Portions created by Ginger Alliance are Copyright (C) 2000-2003 + * Ginger Alliance Ltd. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU General Public License Version 2 or later (the + * "GPL"), in which case the provisions of the GPL are applicable + * instead of those above. If you wish to allow use of your + * version of this file only under the terms of the GPL and not to + * allow others to use your version of this file under the MPL, + * indicate your decision by deleting the provisions above and + * replace them with the notice and other provisions required by + * the GPL. If you do not delete the provisions above, a recipient + * may use your version of this file under either the MPL or the + * GPL. + */ + + /* + sablot.h + TK Dec 14, 99 + header file for Sablot.cpp + */ + + #ifndef SablotHIncl + #define SablotHIncl + + + /* version info */ -#define SAB_VERSION "0.96" -#define SAB_DATE "Sep 5, 2002" + +#define SAB_VERSION "1.0.1" + +#define SAB_DATE "November 24, 2003" + + /* common types */ + typedef void *SablotHandle; + typedef void *SDOM_Document; + typedef void *SablotSituation; -#if defined(WIN32) && defined(_MSC_VER) + + +#if defined(WIN32) && defined(_MSC_VER) && !defined(SABLOT_STATIC) + #if defined(SablotAsExport) + #define DllImpExp __declspec( dllexport ) + #else + #define DllImpExp __declspec( dllimport ) + #endif /* SablotAsExport */ + #else /* WIN32 && _MSC_VER */ + #define DllImpExp extern + #endif + + #ifdef __cplusplus + #define DeclBegin extern "C" { DllImpExp + #define DeclEnd } + #else + #define DeclBegin DllImpExp + #define DeclEnd + #endif + + #define Declare(STATEMENT) DeclBegin STATEMENT DeclEnd + + #include "shandler.h" + #include "sxpath.h" + + typedef enum + { - SAB_NO_ERROR_REPORTING = 0x1, - SAB_PARSE_PUBLIC_ENTITIES = 0x2, - SAB_DISABLE_ADDING_META = 0x4, - SAB_DISABLE_STRIPPING = 0x8, - SAB_IGNORE_DOC_NOT_FOUND =0x10 + + SAB_NO_ERROR_REPORTING = 0x1, + + SAB_PARSE_PUBLIC_ENTITIES = 0x2, + + SAB_DISABLE_ADDING_META = 0x4, + + SAB_DISABLE_STRIPPING = 0x8, + + SAB_IGNORE_DOC_NOT_FOUND = 0x10, + + SAB_FILES_TO_HANDLER = 0x20, + + SAB_DUMP_SHEET_STRUCTURE = 0x40, + + SAB_NO_EXTERNAL_ENTITIES = 0x80 + } SablotFlag; + + /* create a new document */ + + Declare + ( + int SablotCreateDocument( + SablotSituation S, + SDOM_Document *D); + ) + + /* parse in a document from the given URI */ + + Declare + ( + int SablotParse( + SablotSituation S, + const char *uri, + SDOM_Document *D); + ) + + /* parse a document given in an in-memory buffer */ + + Declare + ( + int SablotParseBuffer( + SablotSituation S, + const char *buffer, + SDOM_Document *D); + ) + + Declare + ( + int SablotParseStylesheet( + SablotSituation S, + const char *uri, + SDOM_Document *D); + ) + + + Declare + ( + int SablotParseStylesheetBuffer( + SablotSituation S, + const char *buffer, + SDOM_Document *D); + ) + + + /* lock document before using it */ + + Declare + ( + int SablotLockDocument( + SablotSituation S, + SDOM_Document D); + ) + + Declare + ( + int SablotDestroyDocument( + SablotSituation S, + SDOM_Document D); + ) + + Declare + ( + int SablotAddParam( + SablotSituation S, + void *processor_, + const char *paramName, + const char *paramValue); + ) + + Declare + ( + int SablotAddArgBuffer( + SablotSituation S, + void *processor_, + const char *argName, + const char *bufferValue); + ) + + Declare( + int SablotAddArgTree( + SablotSituation S, + void *processor_, + const char *argName, + SDOM_Document tree); + ) + + Declare + ( + int SablotRunProcessorGen( + SablotSituation S, + void *processor_, + const char *sheetURI, + const char *inputURI, + const char *resultURI); + ) + + Declare + ( + int SablotRunProcessorExt( + SablotSituation S, + void *processor_, + const char *sheetURI, + const char *resultURI, + NodeHandle doc); + ) + + /* + * Situation functions + */ + + /* Creates a new situation. */ + + Declare + ( + int SablotCreateSituation(SablotSituation *sPtr); + ) + + /* Sets situation flags. */ + + Declare + ( + int SablotSetOptions(SablotSituation S, int flags); + ) + + Declare + ( + + int SablotGetOptions(SablotSituation S); + +) + + + +Declare + +( + int SablotClearSituation(SablotSituation S); + ) + + Declare + ( + const char* SablotGetErrorURI(SablotSituation S); + ) + + Declare + ( + int SablotGetErrorLine(SablotSituation S); + ) + + Declare + ( + const char* SablotGetErrorMsg(SablotSituation S); + ) + + /* Disposes of the situation. */ + + Declare + ( + int SablotDestroySituation(SablotSituation S); + ) + + + /***************************************************************** + SablotCreateProcessor + creates a new instance of the processor + *****************************************************************/ + + Declare + ( + int SablotCreateProcessor(SablotHandle *processorPtr); + ) + + /***************************************************************** + SablotCreateProcessorForSituation + use this instead of SablotCreateProcessor with any of the + situation-aware functions like SablotRunProcessorGen, + SablotAddArgTree etc. + *****************************************************************/ + + Declare + ( + int SablotCreateProcessorForSituation(SablotSituation S, void **processorPtr); + ) + + + /***************************************************************** + SablotDestroyProcessor + destroys the processor + *****************************************************************/ + + Declare + ( + int SablotDestroyProcessor(SablotHandle processor_); + ) + + /***************************************************************** + SablotRunProcessor + runs the existing instance on the given documents + *****************************************************************/ + + Declare + ( + int SablotRunProcessor(SablotHandle processor_, + const char *sheetURI, + const char *inputURI, + const char *resultURI, + const char **params, + const char **arguments); + ) + + /***************************************************************** + SablotGetResultArg + gets the result arg buffer from the last Sablot run + the buffer is identified by an URI (to enable output to + multiple documents) + *****************************************************************/ + + Declare + ( + int SablotGetResultArg(SablotHandle processor_, + const char *argURI, + char **argValue); + ) + + /***************************************************************** + SablotFreeResultArgs + kill all result arg buffers from the last Sablot run + *****************************************************************/ + + Declare + ( + int SablotFreeResultArgs(SablotHandle processor_); + ) + + /***************************************************************** + SablotRegHandler + General handler registrator. + type the type of the handler (scheme etc.) + handler pointer to the struct of callbacks of the given type + userData the user data this handler wishes to receive + *****************************************************************/ + + Declare + ( + int SablotRegHandler( + SablotHandle processor_, + HandlerType type, /* HLR_MESSAGE, HLR_SCHEME, HLR_SAX */ + void *handler, + void *userData); + ) + + /***************************************************************** + SablotUnregHandler + + General handler unregistrator. + *****************************************************************/ + + Declare + ( + int SablotUnregHandler( + SablotHandle processor_, + HandlerType type, /* HLR_MESSAGE, HLR_SCHEME, HLR_SAX */ + void *handler, + void *userData); + ) + + /***************************************************************** + SablotSetBase + + overrides the default base URI for relative reference + resolution. + *****************************************************************/ + + Declare + ( + int SablotSetBase( + SablotHandle processor_, + const char *theBase); + ) + + /***************************************************************** + SablotSetBaseForScheme + + a softer form of SablotSetBase: the hard base URI will only + be in effect for relative references whose bases have + the given scheme. + + Example: assume we call + SablotSetBaseForScheme( P, "arg", "http://server" ) + and then runs a stylesheet at "arg:/xxx" which contains "document('foo.xml')". + The relative reference is resolved as "http://server/foo.xml" + but if the stylesheet were at "file:/xxx" it would become "file:/foo.xml". + *****************************************************************/ + + Declare + ( + int SablotSetBaseForScheme(void* processor_, + const char *scheme, + const char *base); + ) + + /**************************************************************** + SablotSetLog + + sets the logging options. Logging is off by default. + *****************************************************************/ + + Declare + ( + int SablotSetLog( + SablotHandle processor_, + const char *logFilename, + int logLevel); + ) + + + /***************************************************************** + SablotProcess + + the main function published by Sablotron. Feeds given XML + input to a stylesheet. Both of these as well as the location for + output are identified by a URI. One can also pass top-level + stylesheet parameters and named buffers ('args'). + ARGS + sheetURI URI of the XSLT stylesheet + inputURI URI of the XML document + resultURI URI of the output document + params a NULL-terminated array of char*'s defining the top-level + parameters to be passed, interpreted as a + sequence of (name, value) pairs. + arguments a NULL-terminated array of char*'s defining the named + buffers to be passed, interpreted as a + sequence of (name, value) pairs. Both params and arguments + may be NULL. + RETURNS + . nonzero iff error + resultArg in case output goes to a named buffer, *resultArg is set to + point to it (otherwise to NULL). Free it using SablotFree(). + *****************************************************************/ + + Declare + ( + int SablotProcess( + const char *sheetURI, const char *inputURI, const char *resultURI, + const char **params, const char **arguments, char **resultArg); + ) + + /***************************************************************** + SablotProcessFiles + + calls SablotProcess to process files identified by their + file names. No named buffers or params are passed. Included + for backward compatibility. + ARGUMENTS + styleSheetName, inputName, resultName + file names of the stylesheet, XML input and output, + respectively. + RETURNS + . error flag + *****************************************************************/ + + Declare + ( + int SablotProcessFiles( + const char *styleSheetName, + const char *inputName, + const char *resultName); + ) + + /***************************************************************** + SablotProcessStrings + + calls SablotProcess to process documents in memory, passing + pointers to the documents. No named buffers or params are passed. + Included for backward compatibility. + ARGUMENTS + styleSheetStr, inputStr + text of the stylesheet and the XML input + RETURNS + . error flag + *resultStr pointer to the newly allocated block containing + the result + *****************************************************************/ + + Declare + ( + int SablotProcessStrings( + const char *styleSheetStr, + const char *inputStr, + char **resultStr); + ) + + /***************************************************************** + SablotProcessStringsWithBase + + Like SablotProcessStrings but lets you pass an URI that replaces + the stylesheet's URI in relative address resolution. + + ARGUMENTS + styleSheetStr, inputStr + text of the stylesheet and the XML input + theHardBase the "hard base URI" replacing the stylesheet's URI + in all relevant situations + RETURNS + . error flag + *resultStr pointer to the newly allocated block containing + the result + *****************************************************************/ + + Declare + ( + int SablotProcessStringsWithBase( + const char *styleSheetStr, + const char *inputStr, + char **resultStr, + const char *theHardBase); + ) + + /***************************************************************** + SablotFree + + Frees the Sablotron-allocated buffer. The user cannot free it + directly by free(). + *****************************************************************/ + + Declare + ( + int SablotFree(char *resultStr); + ) + + /***************************************************************** + SablotClearError + + Clears the pending error for the given instance of Sablot. + *****************************************************************/ + + Declare + ( + int SablotClearError(SablotHandle processor_); + ) + + /***************************************************************** + SablotGetMsgText + + Returns the text of a message with the given code. + *****************************************************************/ + + Declare + ( + const char* SablotGetMsgText(int code); + ) + + /***************************************************************** + SablotSetInstanceData + *****************************************************************/ + + Declare + ( + void SablotSetInstanceData(SablotHandle processor_, void *idata); + ) + + /***************************************************************** + SablotGetInstanceData + *****************************************************************/ + + Declare + ( + void* SablotGetInstanceData(SablotHandle processor_); + ) + + /* + SablotSetEncoding + sets the output encoding to be used regardless of the encoding + specified by the stylesheet + To unset, call with encoding_ NULL. + */ + + Declare + ( + void SablotSetEncoding(SablotHandle processor_, char *encoding_); + ) -#endif /* defined SablotHIncl */ + + +#endif -- cgit v1.2.3