21 #define PATH_MAX _MAX_PATH 25 #ifdef WITH_XSLT_DEBUG 26 #define WITH_XSLT_DEBUG_EXTENSIONS 97 "xsltNewExtDef : malloc failed\n");
117 if (extensiond ==
NULL)
137 while (extensiond !=
NULL) {
139 extensiond = extensiond->
next;
166 "xsltNewExtModule : malloc failed\n");
169 cur->initFunc = initFunc;
170 cur->shutdownFunc = shutdownFunc;
171 cur->styleInitFunc = styleInitFunc;
172 cur->styleShutdownFunc = styleShutdownFunc;
209 if (extModule ==
NULL)
214 "xsltNewExtData : malloc failed\n");
217 cur->extModule = extModule;
218 cur->extData = extData;
263 "xsltNewExtElement : malloc failed\n");
266 cur->precomp = precomp;
292 typedef void (*exsltRegisterFunction) (
void);
295 #define PATH_MAX 4096 322 exsltRegisterFunction regfunc;
357 if (ext_name ==
NULL) {
363 if ((
'/' == *
i) || (
'\\' == *
i) || (
'.' == *
i) || (
'-' == *
i))
369 while (
i > ext_name && *(
i - 1) ==
'_') {
377 if (
NULL == ext_directory) {
378 ext_directory =
BAD_CAST LIBXSLT_DEFAULT_PLUGINS_PATH();
379 if (
NULL == ext_directory)
382 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 385 "LIBXSLT_PLUGINS_PATH is %s\n", ext_directory);
392 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 394 "Attempting to load plugin: %s for URI: %s\n",
395 module_filename, URI);
400 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 402 "xmlCheckFilename failed for plugin: %s\n", module_filename);
410 m = xmlModuleOpen(module_filename, 0);
413 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 415 "xmlModuleOpen failed for plugin: %s\n", module_filename);
427 rc = xmlModuleSymbol(
m, (
const char *) regfunc_name, &vregfunc);
443 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 445 "xmlModuleSymbol failed for plugin: %s, regfunc: %s\n",
446 module_filename, regfunc_name);
455 return (
NULL == regfunc) ? -1 : 0;
511 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 513 "Registering extension namespace '%s'.\n", URI);
516 #ifdef XSLT_REFACTORED
526 while (def !=
NULL) {
542 #ifdef XSLT_REFACTORED
588 const xmlChar * URI, xmlXPathFunction
function)
593 (URI ==
NULL) || (
function ==
NULL))
596 xmlXPathRegisterFuncNS(ctxt->
xpathCtxt,
name, URI,
function);
625 (URI ==
NULL) || (
function ==
NULL))
667 void *userData =
NULL;
674 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 676 "Not registered extension module: %s\n", URI);
688 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 690 "Not registered extension module: %s\n", URI);
706 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 708 "Initializing module with *no* callback: %s\n", URI);
711 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 713 "Initializing module with callback: %s\n", URI);
724 if (dataContainer ==
NULL)
728 (
void *) dataContainer) < 0)
731 "Failed to register module '%s'.\n", URI);
733 if (
module->styleShutdownFunc)
739 return(dataContainer);
766 #ifdef XSLT_REFACTORED 773 tmpStyle = tmpStyle->
parent;
777 if (dataContainer !=
NULL) {
783 return(dataContainer->
extData);
791 while (tmpStyle !=
NULL) {
795 if (dataContainer !=
NULL) {
796 return(dataContainer->
extData);
806 if (dataContainer !=
NULL)
807 return (dataContainer->
extData);
811 #ifdef XSLT_REFACTORED 840 return(dataContainer->
extData);
845 if (dataContainer !=
NULL)
846 return (dataContainer->
extData);
866 if ((ctxt ==
NULL) || (URI ==
NULL))
887 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 889 "Not registered extension module: %s\n", URI);
896 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 898 "Initializing module: %s\n", URI);
901 extData =
module->initFunc(ctxt, URI);
910 "Failed to register module data: %s\n",
913 module->shutdownFunc(ctxt, URI, extData);
919 return (
data->extData);
945 if ((styleData ==
NULL) || (ctxt ==
NULL) || (URI ==
NULL) ||
947 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 949 "xsltInitCtxtExt: NULL param or error\n");
955 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 957 "xsltInitCtxtExt: no module or no initFunc\n");
963 if (ctxtData !=
NULL) {
964 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 966 "xsltInitCtxtExt: already initialized\n");
972 if (extData ==
NULL) {
973 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 975 "xsltInitCtxtExt: no extData\n");
979 if (ctxtData ==
NULL) {
993 "Failed to register module data: %s\n", URI);
995 module->shutdownFunc(ctxt->
ctxt, URI, extData);
1000 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 1039 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 1067 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 1069 "Shutting down module : %s\n", URI);
1071 module->shutdownFunc(ctxt, URI,
data->extData);
1113 #ifdef WITH_XSLT_DEBUG_EXTENSIONS 1115 "Shutting down module : %s\n", URI);
1160 #ifdef XSLT_REFACTORED 1171 xsltPointerListPtr
list = XSLT_CCTXT(
style)->inode->extElemNs;
1173 for (
i = 0;
i <
list->number;
i++) {
1257 if ((URI ==
NULL) || (initFunc ==
NULL))
1269 if ((
module->initFunc == initFunc) &&
1270 (
module->shutdownFunc == shutdownFunc))
1277 styleInitFunc, styleShutdownFunc);
1369 if ((ctxt ==
NULL) || (ctxt->context ==
NULL))
1371 return (ctxt->context->extra);
1386 xmlXPathFunction
function)
1418 xmlXPathFunction
ret;
1511 "xsltNewExtElement : malloc failed\n");
1540 comp->
func =
function;
1542 comp->
free = freeFunc;
1545 style->preComps = comp;
1728 return (
ext->transform);
1768 return (
ext->precomp);
1949 return data->extData;
1981 "xsltExtFunctionTest: not initialized," 1982 " calling xsltGetExtData\n");
1986 "xsltExtElementTest: not initialized\n");
1990 if (tctxt ==
NULL) {
1992 "xsltExtFunctionTest: failed to get the transformation context\n");
1999 "xsltExtFunctionTest: failed to get module data\n");
2004 "xsltExtFunctionTest: got wrong module data\n");
2007 #ifdef WITH_XSLT_DEBUG_FUNCTION 2009 "libxslt:test() called with %d args\n", nargs);
2028 "xsltExtElementTest: no transformation context\n");
2033 "xsltExtElementPreCompTest: not initialized," 2034 " calling xsltStyleGetExtData\n");
2038 "xsltExtElementPreCompTest: not initialized\n");
2046 "xsltExtElementPreCompTest: no instruction\n");
2073 "xsltExtElementTest: not initialized," 2074 " calling xsltGetExtData\n");
2078 "xsltExtElementTest: not initialized\n");
2084 "xsltExtElementTest: no transformation context\n");
2089 "xsltExtElementTest: no current node\n");
2094 "xsltExtElementTest: no instruction\n");
2099 "xsltExtElementTest: no insertion point\n");
2103 "libxslt:test element test worked");
2121 "xsltExtInitTest: not initialized," 2122 " calling xsltStyleGetExtData\n");
2126 "xsltExtInitTest: not initialized\n");
2132 "xsltExtInitTest: already initialized\n");
2137 "Registered test module : %s\n", URI);
2156 "xsltExtShutdownTest: not initialized\n");
2161 "xsltExtShutdownTest: wrong data\n");
2165 "Unregistered test module : %s\n", URI);
2183 "xsltExtInitTest: already initialized\n");
2188 "Registered test module : %s\n", URI);
2207 "xsltExtShutdownTest: not initialized\n");
2212 "xsltExtShutdownTest: wrong data\n");
2216 "Unregistered test module : %s\n", URI);
2247 xmlModuleClose(payload);
2328 "Registered XSLT Extensions\n--------------------------\n");
2330 fprintf(output,
"No registered extension functions\n");
2332 fprintf(output,
"Registered Extension Functions:\n");
2339 fprintf(output,
"\nNo registered extension elements\n");
2341 fprintf(output,
"\nRegistered Extension Elements:\n");
2348 fprintf(output,
"\nNo registered extension modules\n");
2350 fprintf(output,
"\nRegistered Extension Modules:\n");
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
xsltElemPreCompPtr xsltNewElemPreComp(xsltStylesheetPtr style, xmlNodePtr inst, xsltTransformFunction function)
int xsltInitCtxtExts(xsltTransformContextPtr ctxt)
XMLPUBFUN int XMLCALL xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name, xmlHashDeallocator f)
xsltExtData * xsltExtDataPtr
static void xsltFreeExtDefList(xsltExtDefPtr extensiond)
static xmlHashTablePtr xsltExtensionsHash
XMLPUBFUN const xmlChar *XMLCALL xmlStrstr(const xmlChar *str, const xmlChar *val)
static xsltElemPreCompPtr xsltExtElementPreCompTest(xsltStylesheetPtr style, xmlNodePtr inst, xsltTransformFunction function)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
XMLPUBFUN void XMLCALL xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data)
xsltTopLevelFunction xsltExtModuleTopLevelLookup(const xmlChar *name, const xmlChar *URI)
void * xsltStyleGetExtData(xsltStylesheetPtr style, const xmlChar *URI)
static void xsltExtShutdownTest(xsltTransformContextPtr ctxt, const xmlChar *URI, void *data)
xsltExtElement * xsltExtElementPtr
void(* xsltTransformFunction)(xsltTransformContextPtr ctxt, xmlNodePtr node, xmlNodePtr inst, xsltElemPreCompPtr comp)
void xsltFreeExts(xsltStylesheetPtr style)
XMLPUBFUN int XMLCALL xmlCheckFilename(const char *path)
xsltStylesheetPtr xsltNextImport(xsltStylesheetPtr cur)
XMLPUBFUN int XMLCALL xmlHashAddEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, void *userdata)
int xsltCheckExtURI(xsltStylesheetPtr style, const xmlChar *URI)
void xsltRegisterTestModule(void)
static xsltExtElementPtr xsltNewExtElement(xsltPreComputeFunction precomp, xsltTransformFunction transform)
xmlHashTablePtr xsltGetExtInfo(xsltStylesheetPtr style, const xmlChar *URI)
XMLPUBFUN void XMLCALL xmlMutexUnlock(xmlMutexPtr tok)
xsltExtDef * xsltExtDefPtr
int xsltRegisterExtFunction(xsltTransformContextPtr ctxt, const xmlChar *name, const xmlChar *URI, xmlXPathFunction function)
void xsltDebugDumpExtensions(FILE *output)
XMLPUBFUN void XMLCALL xmlMutexLock(xmlMutexPtr tok)
int xsltUnregisterExtModule(const xmlChar *URI)
static void xsltDebugDumpExtModulesCallback(void *function ATTRIBUTE_UNUSED, void *data, const xmlChar *URI, const xmlChar *not_used ATTRIBUTE_UNUSED, const xmlChar *not_used2 ATTRIBUTE_UNUSED)
XMLPUBFUN int XMLCALL xmlHashAddEntry(xmlHashTablePtr table, const xmlChar *name, void *userdata)
xsltExtModulePtr extModule
XMLPUBFUN void *XMLCALL xmlHashLookup2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2)
static void xsltShutdownCtxtExt(void *payload, void *vctxt, const xmlChar *URI)
xsltTransformFunction transform
xsltExtInitFunction initFunc
static xmlMutexPtr xsltExtMutex
static void xsltHashScannerModuleFree(void *payload ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED, const xmlChar *name ATTRIBUTE_UNUSED)
void xsltShutdownCtxtExts(xsltTransformContextPtr ctxt)
struct _xsltStylesheet * parent
xsltStyleExtInitFunction styleInitFunc
static void xsltExtStyleShutdownTest(xsltStylesheetPtr style ATTRIBUTE_UNUSED, const xmlChar *URI, void *data)
void xsltFreeLocales(void)
xsltTransformFunction xsltExtModuleElementLookup(const xmlChar *name, const xmlChar *URI)
int xsltRegisterExtModule(const xmlChar *URI, xsltExtInitFunction initFunc, xsltExtShutdownFunction shutdownFunc)
int xsltUnregisterExtModuleTopLevel(const xmlChar *name, const xmlChar *URI)
void(* xsltStyleExtShutdownFunction)(xsltStylesheetPtr style, const xmlChar *URI, void *data)
XMLPUBFUN void XMLCALL xmlHashFree(xmlHashTablePtr table, xmlHashDeallocator f)
static xmlChar * testStyleData
xmlGenericErrorFunc xsltGenericError
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
static int xsltExtModuleRegisterDynamic(const xmlChar *URI ATTRIBUTE_UNUSED)
static void * xsltExtStyleInitTest(xsltStylesheetPtr style ATTRIBUTE_UNUSED, const xmlChar *URI)
XMLPUBFUN xmlChar *XMLCALL xmlStrcat(xmlChar *cur, const xmlChar *add)
static void xsltUnregisterAllExtModules(void)
static void xsltFreeExtDef(xsltExtDefPtr extensiond)
xsltTransformContext * xsltTransformContextPtr
xsltElemPreCompPtr(* xsltPreComputeFunction)(xsltStylesheetPtr style, xmlNodePtr inst, xsltTransformFunction function)
struct _xsltExtDef * next
xmlHashTablePtr extFunctions
xsltExtShutdownFunction shutdownFunc
static xmlHashTablePtr xsltModuleHash
xmlXPathContextPtr xpathCtxt
int xsltRegisterExtElement(xsltTransformContextPtr ctxt, const xmlChar *name, const xmlChar *URI, xsltTransformFunction function)
xsltTransformFunction xsltExtElementLookup(xsltTransformContextPtr ctxt, const xmlChar *name, const xmlChar *URI)
int xsltRegisterExtPrefix(xsltStylesheetPtr style, const xmlChar *prefix, const xmlChar *URI)
int xsltRegisterExtModuleTopLevel(const xmlChar *name, const xmlChar *URI, xsltTopLevelFunction function)
xmlXPathFunction xsltExtModuleFunctionLookup(const xmlChar *name, const xmlChar *URI)
xsltStyleExtShutdownFunction styleShutdownFunc
static void xsltUnregisterAllExtModuleFunction(void)
void * xsltGetExtData(xsltTransformContextPtr ctxt, const xmlChar *URI)
xsltPreComputeFunction precomp
void * xsltGenericDebugContext
XMLPUBFUN xmlNodePtr XMLCALL xmlAddChild(xmlNodePtr parent, xmlNodePtr cur)
int xsltRegisterExtModuleFunction(const xmlChar *name, const xmlChar *URI, xmlXPathFunction function)
xsltElemPreCompPtr xsltPreComputeExtModuleElement(xsltStylesheetPtr style, xmlNodePtr inst)
XMLPUBFUN int XMLCALL xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, xmlHashDeallocator f)
XMLPUBFUN int XMLCALL xmlStrPrintf(xmlChar *buf, int len, const char *msg,...) LIBXML_ATTR_FORMAT(3
int xsltCheckExtPrefix(xsltStylesheetPtr style, const xmlChar *URI)
static void xsltUnregisterAllExtModuleTopLevel(void)
static void xsltFreeExtModuleEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED)
XMLPUBVAR xmlFreeFunc xmlFree
xsltTransformFunction func
xmlGenericErrorFunc xsltGenericDebug
void xsltInitElemPreComp(xsltElemPreCompPtr comp, xsltStylesheetPtr style, xmlNodePtr inst, xsltTransformFunction function, xsltElemPreCompDeallocator freeFunc)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
XMLPUBFUN xmlHashTablePtr XMLCALL xmlHashCreate(int size)
void * xsltGenericErrorContext
xmlHashTablePtr extElements
static void xsltFreeExtElementEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED)
XMLPUBFUN void XMLCALL xmlHashScanFull(xmlHashTablePtr table, xmlHashScannerFull f, void *data)
void xsltCleanupGlobals(void)
XMLPUBFUN xmlNodePtr XMLCALL xmlNewComment(const xmlChar *content)
static void xsltDebugDumpExtensionsCallback(void *function ATTRIBUTE_UNUSED, void *data, const xmlChar *name, const xmlChar *URI, const xmlChar *not_used ATTRIBUTE_UNUSED)
xsltExtModule * xsltExtModulePtr
static xmlHashTablePtr xsltTopLevelsHash
xsltElemPreCompDeallocator free
static void xsltInitCtxtExt(void *payload, void *data, const xmlChar *URI)
static void xsltExtElementTest(xsltTransformContextPtr ctxt, xmlNodePtr node, xmlNodePtr inst, xsltElemPreCompPtr comp ATTRIBUTE_UNUSED)
int xsltUnregisterExtModuleFunction(const xmlChar *name, const xmlChar *URI)
XMLPUBFUN void XMLCALL xmlFreeMutex(xmlMutexPtr tok)
void(* xsltElemPreCompDeallocator)(xsltElemPreCompPtr comp)
xsltElemPreComp * xsltElemPreCompPtr
XMLPUBFUN int XMLCALL xmlHashUpdateEntry2(xmlHashTablePtr table, const xmlChar *name, const xmlChar *name2, void *userdata, xmlHashDeallocator f)
static void xsltUnregisterAllExtModuleElement(void)
static void xsltFreeExtElement(xsltExtElementPtr ext)
static xsltExtDataPtr xsltNewExtData(xsltExtModulePtr extModule, void *extData)
void xsltShutdownExts(xsltStylesheetPtr style)
_Check_return_ char *__cdecl getenv(_In_z_ const char *_VarName)
static xmlHashTablePtr xsltFunctionsHash
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
void(* xsltTopLevelFunction)(xsltStylesheetPtr style, xmlNodePtr inst)
#define XML_CAST_FPTR(fptr)
void(* xsltExtShutdownFunction)(xsltTransformContextPtr ctxt, const xmlChar *URI, void *data)
#define LIBXML_MODULE_EXTENSION
static void * xsltExtInitTest(xsltTransformContextPtr ctxt, const xmlChar *URI)
XMLPUBVAR xmlMallocFunc xmlMalloc
static xsltExtModulePtr xsltNewExtModule(xsltExtInitFunction initFunc, xsltExtShutdownFunction shutdownFunc, xsltStyleExtInitFunction styleInitFunc, xsltStyleExtShutdownFunction styleShutdownFunc)
XMLPUBFUN xmlMutexPtr XMLCALL xmlNewMutex(void)
void xsltFreeCtxtExts(xsltTransformContextPtr ctxt)
static void xsltShutdownExt(void *payload, void *vctxt, const xmlChar *URI)
static xsltExtDefPtr xsltNewExtDef(const xmlChar *prefix, const xmlChar *URI)
xsltTransformContextPtr xsltXPathGetTransformContext(xmlXPathParserContextPtr ctxt)
static void xsltFreeExtDataEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED)
static void xsltFreeExtModule(xsltExtModulePtr ext)
GLuint GLenum GLenum transform
static void xsltFreeElemPreComp(xsltElemPreCompPtr comp)
XMLPUBFUN void *XMLCALL xmlHashLookup(xmlHashTablePtr table, const xmlChar *name)
static void xsltExtFunctionTest(xmlXPathParserContextPtr ctxt, int nargs ATTRIBUTE_UNUSED)
static xmlChar * testData
int xsltRegisterExtModuleFull(const xmlChar *URI, xsltExtInitFunction initFunc, xsltExtShutdownFunction shutdownFunc, xsltStyleExtInitFunction styleInitFunc, xsltStyleExtShutdownFunction styleShutdownFunc)
static void xsltFreeExtData(xsltExtDataPtr ext)
XMLPUBFUN int XMLCALL xmlStrEqual(const xmlChar *str1, const xmlChar *str2)
void xsltTransformError(xsltTransformContextPtr ctxt, xsltStylesheetPtr style, xmlNodePtr node, const char *msg,...)
void *(* xsltStyleExtInitFunction)(xsltStylesheetPtr style, const xmlChar *URI)
void xsltInitGlobals(void)
int xsltUnregisterExtModuleElement(const xmlChar *name, const xmlChar *URI)
void *(* xsltExtInitFunction)(xsltTransformContextPtr ctxt, const xmlChar *URI)
xsltTransformContextPtr ctxt
XMLPUBFUN xmlChar *XMLCALL xmlStrdup(const xmlChar *cur)
int xsltRegisterExtModuleElement(const xmlChar *name, const xmlChar *URI, xsltPreComputeFunction precomp, xsltTransformFunction transform)
xsltPreComputeFunction xsltExtModuleElementPreComputeLookup(const xmlChar *name, const xmlChar *URI)
static xmlHashTablePtr xsltElementsHash
static xsltExtDataPtr xsltStyleInitializeStylesheetModule(xsltStylesheetPtr style, const xmlChar *URI)
xsltStylesheet * xsltStylesheetPtr