+Thu May 16 19:31:35 CEST 2002 Daniel Veillard <daniel@veillard.com>
+
+ * libxslt/extensions.[ch] xsltproc/xsltproc.c win32/libxslt.def.src:
+ Applied Mark Vakoc patch to show registered extensions in xsltproc
+ * doc/*: rebuilt the API, docs and website
+ * python/libxsltclass.txt: this added an entry point
+
Wed May 15 00:20:10 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>
* libxslt/xslt.c: xsl:include crash fix
<dt>Returns</dt>
<dd>
<a href="html/libxslt-imports.html#XSLTNEEDELEMSPACEHANDLING">xsltNeedElemSpaceHandling</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETIMPORT">xsltParseStylesheetImport</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETINCLUDE">xsltParseStylesheetInclude</a>
<a href="html/libxslt-extensions.html#XSLTXPATHGETTRANSFORMCONTEXT">xsltXPathGetTransformContext</a>
</dd>
</dl>
<dd>
<a href="html/libxslt-xsltutils.html#XSLTGETQNAMEURI">xsltGetQNameURI</a>
</dd>
+<dt>amiss</dt>
+<dd>
+<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
+</dd>
<dt>analyzes</dt>
<dd>
<a href="html/libxslt-xsltutils.html#XSLTGETQNAMEURI">xsltGetQNameURI</a>
<a href="html/libxslt-transform.html#XSLTREGISTERALLELEMENT">xsltRegisterAllElement</a>
<a href="html/libxslt-xsltinternals.html#XSLTTRANSFORMFUNCTION">xsltTransformFunction</a>
</dd>
+<dt>else</dt>
+<dd>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETIMPORT">xsltParseStylesheetImport</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETINCLUDE">xsltParseStylesheetInclude</a>
+</dd>
<dt>emitted</dt>
<dd>
<a href="html/libxslt-xsltutils.html#XSLTSETGENERICDEBUGFUNC">xsltSetGenericDebugFunc</a>
<dt>everything</dt>
<dd>
<a href="html/libxslt-imports.html#XSLTFINDELEMSPACEHANDLING">xsltFindElemSpaceHandling</a>
+<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
</dd>
<dt>example</dt>
<dd>
<a href="html/libxslt-keys.html#XSLTADDKEY">xsltAddKey</a>
<a href="html/libxslt-variables.html#XSLTADDSTACKELEMLIST">xsltAddStackElemList</a>
<a href="html/libxslt-pattern.html#XSLTCOMPILEPATTERN">xsltCompilePattern</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETIMPORT">xsltParseStylesheetImport</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETINCLUDE">xsltParseStylesheetInclude</a>
<a href="html/libxslt-extensions.html#XSLTREGISTEREXTELEMENT">xsltRegisterExtElement</a>
<a href="html/libxslt-extensions.html#XSLTREGISTEREXTFUNCTION">xsltRegisterExtFunction</a>
<a href="html/libxslt-extensions.html#XSLTREGISTEREXTPREFIX">xsltRegisterExtPrefix</a>
<a href="html/libxslt-transform.html#XSLTNEWTRANSFORMCONTEXT">xsltNewTransformContext</a>
<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETDOC">xsltParseStylesheetDoc</a>
<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETFILE">xsltParseStylesheetFile</a>
-<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
<a href="html/libxslt-xsltutils.html#XSLTSETGENERICDEBUGFUNC">xsltSetGenericDebugFunc</a>
<a href="html/libxslt-xsltutils.html#XSLTSETGENERICERRORFUNC">xsltSetGenericErrorFunc</a>
<a href="html/libxslt-templates.html#XSLTTEMPLATEPROCESS">xsltTemplateProcess</a>
<dt>parameter</dt>
<dd>
<a href="html/libxslt-variables.html#XSLTEVALONEUSERPARAM">xsltEvalOneUserParam</a>
+<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
<a href="html/libxslt-variables.html#XSLTQUOTEONEUSERPARAM">xsltQuoteOneUserParam</a>
</dd>
<dt>parameters</dt>
<dd>
<a href="html/libxslt-xsltinternals.html#XSLTPARSETEMPLATECONTENT">xsltParseTemplateContent</a>
</dd>
+<dt>ret</dt>
+<dd>
+<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
+</dd>
<dt>retrieve</dt>
<dd>
<a href="html/libxslt-extensions.html#XSLTXPATHGETTRANSFORMCONTEXT">xsltXPathGetTransformContext</a>
<dd>
<a href="html/libxslt-namespaces.html#XSLTGETNAMESPACE">xsltGetNamespace</a>
<a href="html/libxslt-namespaces.html#XSLTGETSPECIALNAMESPACE">xsltGetSpecialNamespace</a>
+<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
</dd>
<dt>rule</dt>
<dd>
<a href="html/libxslt-xsltinternals.html#XSLTALLOCATEEXTRA">xsltAllocateExtra</a>
<a href="html/libxslt-xsltinternals.html#XSLTALLOCATEEXTRACTXT">xsltAllocateExtraCtxt</a>
</dd>
+<dt>something</dt>
+<dd>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETIMPORT">xsltParseStylesheetImport</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETINCLUDE">xsltParseStylesheetInclude</a>
+<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
+</dd>
<dt>sort</dt>
<dd>
<a href="html/libxslt-xsltutils.html#XSLTDOSORTFUNCTION">xsltDoSortFunction</a>
<a href="html/libxslt-xsltinternals.html#XSLTLOADSTYLESHEETPI">xsltLoadStylesheetPI</a>
<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETDOC">xsltParseStylesheetDoc</a>
<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETFILE">xsltParseStylesheetFile</a>
-<a href="html/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">xsltParseStylesheetProcess</a>
<a href="html/libxslt-xsltinternals.html#XSLTSTYLEPRECOMP">xsltStylePreComp</a>
<a href="html/libxslt-xsltinternals.html#XSLTTEMPLATE">xsltTemplate</a>
</dd>
<a href="html/libxslt-variables.html#XSLTEVALGLOBALVARIABLES">xsltEvalGlobalVariables</a>
<a href="html/libxslt-variables.html#XSLTEVALONEUSERPARAM">xsltEvalOneUserParam</a>
<a href="html/libxslt-variables.html#XSLTEVALUSERPARAMS">xsltEvalUserParams</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETIMPORT">xsltParseStylesheetImport</a>
+<a href="html/libxslt-imports.html#XSLTPARSESTYLESHEETINCLUDE">xsltParseStylesheetInclude</a>
<a href="html/libxslt-variables.html#XSLTQUOTEONEUSERPARAM">xsltQuoteOneUserParam</a>
<a href="html/libxslt-variables.html#XSLTQUOTEUSERPARAMS">xsltQuoteUserParams</a>
<a href="html/libxslt-extensions.html#XSLTREGISTEREXTELEMENT">xsltRegisterExtElement</a>
<a href="html/libxslt-extensions.html#XSLTFREEEXTS">xsltFreeExts</a>
<a href="html/libxslt-extensions.html#XSLTPRECOMPUTEEXTMODULEELEMENT">xsltPreComputeExtModuleElement</a>
<a href="html/libxslt-extensions.html#XSLTREGISTERTESTMODULE">xsltRegisterTestModule</a>
+<a href="">xsltDebugDumpExtensions</a>
</p>
<h2>Module extra:</h2>
<p>
<td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd">
<h2>Type FILE *:</h2>
<p>
+<a href="">xsltDebugDumpExtensions</a>
<a href="html/libxslt-transform.html#XSLTAPPLYSTYLESHEETUSER">xsltApplyStylesheetUser</a>
<a href="html/libxslt-transform.html#XSLTPROFILESTYLESHEET">xsltProfileStylesheet</a>
<a href="html/libxslt-transform.html#XSLTRUNSTYLESHEETUSER">xsltRunStylesheetUser</a>
<exports symbol='xsltFreeExts'/>
<exports symbol='xsltPreComputeExtModuleElement'/>
<exports symbol='xsltRegisterTestModule'/>
+ <exports symbol='xsltDebugDumpExtensions'/>
</file>
<file name='attributes'>
<exports symbol='xsltParseStylesheetAttributeSet'/>
<arg name='inst' type='xmlNodePtr' info='the instruction in the stylesheet '/>
<arg name='comp' type='xsltStylePreCompPtr' info='precomputed informations '/>
</function>
+ <function name='xsltDebugDumpExtensions' file='extensions'>
+ <return type='void'/>
+ <arg name='output' type='FILE *'/>
+ </function>
<enum name='xsltDebugStatusCodes' file='xsltutils'/>
<struct name='xsltDecimalFormat' file='xsltInternals' info='Data structure of decimal-format.'/>
<function name='xsltDecimalFormatGetByName' file='xsltInternals'>
<arg name='filename' type='const xmlChar*' info='the filename/URL to the stylesheet '/>
</function>
<function name='xsltParseStylesheetImport' file='imports'>
- <info>parse an XSLT stylesheet strip-space element and record elements needing stripping</info>
- <return type='void'/>
+ <info>parse an XSLT stylesheet strip-space element and record elements needing stripping. Returns zero on success and something else on failure.</info>
+ <return type='int'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet '/>
<arg name='cur' type='xmlNodePtr'/>
</function>
<function name='xsltParseStylesheetInclude' file='imports'>
- <info>parse an XSLT stylesheet strip-space element and record elements needing stripping</info>
- <return type='void'/>
+ <info>parse an XSLT stylesheet strip-space element and record elements needing stripping. Returns zero on success, something else on failure.</info>
+ <return type='int'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet '/>
<arg name='cur' type='xmlNodePtr'/>
</function>
</function>
<function name='xsltParseStylesheetProcess' file='xsltInternals'>
<info>parse an XSLT stylesheet adding the associated structures</info>
- <return type='xsltStylesheetPtr' info='a new XSLT stylesheet structure. '/>
+ <return type='xsltStylesheetPtr' info='the value of the 'ret' parameter if everything went right, NULL if something went amiss. '/>
<arg name='ret' type='xsltStylesheetPtr' info='the XSLT stylesheet '/>
<arg name='doc' type='xmlDocPtr' info='and xmlDoc parsed XML '/>
</function>
<RETURNS>void </RETURNS>
void
</FUNCTION>
+<FUNCTION>
+<NAME>xsltDebugDumpExtensions</NAME>
+<RETURNS>void </RETURNS>
+FILE * output
+</FUNCTION>
<MACRO>
<NAME>XSLT_REGISTER_FUNCTION_LOOKUP</NAME>
#define XSLT_REGISTER_FUNCTION_LOOKUP(ctxt) \
</MACRO>
<FUNCTION>
<NAME>xsltParseStylesheetImport</NAME>
-<RETURNS>void </RETURNS>
+<RETURNS>int </RETURNS>
xsltStylesheetPtr style,xmlNodePtr cur
</FUNCTION>
<FUNCTION>
<NAME>xsltParseStylesheetInclude</NAME>
-<RETURNS>void </RETURNS>
+<RETURNS>int </RETURNS>
xsltStylesheetPtr style,xmlNodePtr cur
</FUNCTION>
<FUNCTION>
</constructors>
<functions>
<type name='FILE *'>
+ <ref name='xsltDebugDumpExtensions'/>
<ref name='xsltApplyStylesheetUser'/>
<ref name='xsltProfileStylesheet'/>
<ref name='xsltRunStylesheetUser'/>
<ref name='xsltFreeExts'/>
<ref name='xsltPreComputeExtModuleElement'/>
<ref name='xsltRegisterTestModule'/>
+ <ref name='xsltDebugDumpExtensions'/>
</file>
<file name='extra'>
<ref name='XSLT_LIBXSLT_NAMESPACE'/>
</word>
<word name='Returns'>
<ref name='xsltNeedElemSpaceHandling'/>
+ <ref name='xsltParseStylesheetImport'/>
+ <ref name='xsltParseStylesheetInclude'/>
<ref name='xsltXPathGetTransformContext'/>
</word>
</letter>
<word name='also'>
<ref name='xsltGetQNameURI'/>
</word>
+ <word name='amiss'>
+ <ref name='xsltParseStylesheetProcess'/>
+ </word>
<word name='analyzes'>
<ref name='xsltGetQNameURI'/>
</word>
<ref name='xsltRegisterAllElement'/>
<ref name='xsltTransformFunction'/>
</word>
+ <word name='else'>
+ <ref name='xsltParseStylesheetImport'/>
+ <ref name='xsltParseStylesheetInclude'/>
+ </word>
<word name='emitted'>
<ref name='xsltSetGenericDebugFunc'/>
<ref name='xsltSetGenericErrorFunc'/>
</word>
<word name='everything'>
<ref name='xsltFindElemSpaceHandling'/>
+ <ref name='xsltParseStylesheetProcess'/>
</word>
<word name='example'>
<ref name='xsltEvalTemplateString'/>
<ref name='xsltAddKey'/>
<ref name='xsltAddStackElemList'/>
<ref name='xsltCompilePattern'/>
+ <ref name='xsltParseStylesheetImport'/>
+ <ref name='xsltParseStylesheetInclude'/>
<ref name='xsltRegisterExtElement'/>
<ref name='xsltRegisterExtFunction'/>
<ref name='xsltRegisterExtPrefix'/>
<ref name='xsltNewTransformContext'/>
<ref name='xsltParseStylesheetDoc'/>
<ref name='xsltParseStylesheetFile'/>
- <ref name='xsltParseStylesheetProcess'/>
<ref name='xsltSetGenericDebugFunc'/>
<ref name='xsltSetGenericErrorFunc'/>
<ref name='xsltTemplateProcess'/>
</word>
<word name='parameter'>
<ref name='xsltEvalOneUserParam'/>
+ <ref name='xsltParseStylesheetProcess'/>
<ref name='xsltQuoteOneUserParam'/>
</word>
<word name='parameters'>
<word name='results'>
<ref name='xsltParseTemplateContent'/>
</word>
+ <word name='ret'>
+ <ref name='xsltParseStylesheetProcess'/>
+ </word>
<word name='retrieve'>
<ref name='xsltXPathGetTransformContext'/>
</word>
<word name='right'>
<ref name='xsltGetNamespace'/>
<ref name='xsltGetSpecialNamespace'/>
+ <ref name='xsltParseStylesheetProcess'/>
</word>
<word name='rule'>
<ref name='xsltFindTemplate'/>
<ref name='xsltAllocateExtra'/>
<ref name='xsltAllocateExtraCtxt'/>
</word>
+ <word name='something'>
+ <ref name='xsltParseStylesheetImport'/>
+ <ref name='xsltParseStylesheetInclude'/>
+ <ref name='xsltParseStylesheetProcess'/>
+ </word>
<word name='sort'>
<ref name='xsltDoSortFunction'/>
<ref name='xsltSort'/>
<ref name='xsltLoadStylesheetPI'/>
<ref name='xsltParseStylesheetDoc'/>
<ref name='xsltParseStylesheetFile'/>
- <ref name='xsltParseStylesheetProcess'/>
<ref name='xsltStylePreComp'/>
<ref name='xsltTemplate'/>
</word>
<ref name='xsltEvalGlobalVariables'/>
<ref name='xsltEvalOneUserParam'/>
<ref name='xsltEvalUserParams'/>
+ <ref name='xsltParseStylesheetImport'/>
+ <ref name='xsltParseStylesheetInclude'/>
<ref name='xsltQuoteOneUserParam'/>
<ref name='xsltQuoteUserParams'/>
<ref name='xsltRegisterExtElement'/>
<word name='well'>
<ref name='xsltNamespaceAlias'/>
</word>
+ <word name='went'>
+ <ref name='xsltParseStylesheetProcess'/>
+ </word>
<word name='wether'>
<ref name='xsltTestCompMatchList'/>
</word>
<ref name='xsltRunStylesheetUser'/>
</word>
</letter>
+ <letter name='z'>
+ <word name='zero'>
+ <ref name='xsltParseStylesheetImport'/>
+ <ref name='xsltParseStylesheetInclude'/>
+ </word>
+ </letter>
</chunk>
<chunks>
<chunk name='chunk0' start='A' end='T'/>
<arg>--catalogs</arg>
<arg>--xinclude</arg>
<arg>--profile</arg>
+ <arg>--dumpextensions</arg>
</group>
<arg><option><replaceable>stylesheet</replaceable></option></arg>
<arg><replaceable>file1</replaceable></arg>
</simpara>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>--dumpextensions</option></term>
+ <listitem>
+ <simpara>Dumps the list of all registered extensions on stdout.
+ </simpara>
+ </listitem>
+ </varlistentry>
+
+
</variablelist>
</refsect1>
xsltUnregisterAllExtModuleTopLevel();
}
+static void
+xsltDebugDumpExtensionsCallback(void* function, FILE *output, const xmlChar* name, const xmlChar* URI, const xmlChar* not_used) {
+ if (!name||!URI)
+ return;
+ fprintf(output,"{%s}%s\n",URI,name);
+}
+
+/**
+ * xsltDebugDumpExtensions:
+ * @output: the FILE * for the output, if NULL stdout is used
+ *
+ * Dumps a list of the registered XSLT extension functions and elements
+ */
+void
+xsltDebugDumpExtensions(FILE * output)
+{
+ if (output == NULL)
+ output = stdout;
+ fprintf(output,"Registered XSLT Extensions\n--------------------------\n");
+ if (!xsltFunctionsHash)
+ fprintf(output,"No registered extension functions\n");
+ else {
+ fprintf(output,"Registered Extension Functions:\n");
+ xmlHashScanFull(xsltFunctionsHash,(xmlHashScannerFull)xsltDebugDumpExtensionsCallback,output);
+ }
+ if (!xsltElementsHash)
+ fprintf(output,"\nNo registered extension elements\n");
+ else {
+ fprintf(output,"\nRegistered Extension Elements:\n");
+ xmlHashScanFull(xsltElementsHash,(xmlHashScannerFull)xsltDebugDumpExtensionsCallback,output);
+ }
+
+}
+
* Test module http://xmlsoft.org/XSLT/
*/
void xsltRegisterTestModule (void);
+void xsltDebugDumpExtensions(FILE * output);
+
#ifdef __cplusplus
}
# functions from module extensions
+debugDumpExtensions()
registerTestModule()
unregisterExtModule()
unregisterExtModuleElement()
/* Test module http://xmlsoft.org/XSLT/ */
xsltRegisterTestModule
+ xsltDebugDumpExtensions
/* extra.h
static int debug = 0;
static int repeat = 0;
static int timing = 0;
+static int dumpextensions = 0;
static int novalid = 0;
static int noout = 0;
#ifdef LIBXML_DOCB_ENABLED
xsltProcess(xmlDocPtr doc, xsltStylesheetPtr cur, const char *filename) {
xmlDocPtr res;
xsltTransformContextPtr ctxt;
+
#ifdef LIBXML_XINCLUDE_ENABLED
if (xinclude) {
printf("\t--timing: display the time used\n");
printf("\t--repeat: run the transformation 20 times\n");
printf("\t--debug: dump the tree of the result instead\n");
+ printf("\t--dumpextensions: dump the registered extension elements and functions to stdout\n");
printf("\t--novalid skip the Dtd loading phase\n");
printf("\t--noout: do not dump the result\n");
printf("\t--maxdepth val : increase the maximum depth\n");
if (value > 0)
xsltMaxDepth = value;
}
- } else {
+ } else if ((!strcmp(argv[i],"-dumpextensions"))||
+ (!strcmp(argv[i],"--dumpextensions"))) {
+ dumpextensions++;
+
+ } else {
fprintf(stderr, "Unknown option %s\n", argv[i]);
usage(argv[0]);
return (3);
i += 2;
continue;
}
+ if (dumpextensions)
+ xsltDebugDumpExtensions(NULL);
+
if ((argv[i][0] != '-') || (strcmp(argv[i], "-") == 0)) {
if (timing)
startTimer();