2 * Summary: set of utilities for the XSLT engine
3 * Description: interfaces for the utilities module of the XSLT engine.
4 * things like message handling, profiling, and other
5 * generally useful routines.
7 * Copy: See Copyright for the status of this software.
9 * Author: Daniel Veillard
12 #ifndef __XML_XSLTUTILS_H__
13 #define __XML_XSLTUTILS_H__
15 #include <libxslt/xsltconfig.h>
19 #include <libxml/xpath.h>
20 #include <libxml/dict.h>
21 #include <libxml/xmlerror.h>
22 #include "xsltexports.h"
23 #include "xsltInternals.h"
32 * Macro to flag unimplemented blocks.
35 xsltGenericError(xsltGenericErrorContext, \
36 "Unimplemented block at %s:%d\n", \
42 * Macro to flag that a problem was detected internally.
44 #define XSLT_STRANGE \
45 xsltGenericError(xsltGenericErrorContext, \
46 "Internal error at %s:%d\n", \
52 * Checks that the element pertains to XSLT namespace.
54 #define IS_XSLT_ELEM(n) \
55 (((n) != NULL) && ((n)->type == XML_ELEMENT_NODE) && \
56 ((n)->ns != NULL) && (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
61 * Checks the value of an element in XSLT namespace.
63 #define IS_XSLT_NAME(n, val) \
64 (xmlStrEqual((n)->name, (const xmlChar *) (val)))
69 * Check that a node is a 'real' one: document, element, text or attribute.
71 #define IS_XSLT_REAL_NODE(n) \
73 (((n)->type == XML_ELEMENT_NODE) || \
74 ((n)->type == XML_TEXT_NODE) || \
75 ((n)->type == XML_CDATA_SECTION_NODE) || \
76 ((n)->type == XML_ATTRIBUTE_NODE) || \
77 ((n)->type == XML_DOCUMENT_NODE) || \
78 ((n)->type == XML_HTML_DOCUMENT_NODE) || \
79 ((n)->type == XML_COMMENT_NODE) || \
80 ((n)->type == XML_PI_NODE)))
83 * Our own version of namespaced atributes lookup.
85 XSLTPUBFUN xmlChar * XSLTCALL
86 xsltGetNsProp (xmlNodePtr node,
88 const xmlChar *nameSpace);
89 XSLTPUBFUN const xmlChar * XSLTCALL
90 xsltGetCNsProp (xsltStylesheetPtr style,
93 const xmlChar *nameSpace);
94 XSLTPUBFUN int XSLTCALL
95 xsltGetUTF8Char (const unsigned char *utf,
99 * XSLT Debug Tracing Tracing Types
104 XSLT_TRACE_COPY_TEXT = 1<<0,
105 XSLT_TRACE_PROCESS_NODE = 1<<1,
106 XSLT_TRACE_APPLY_TEMPLATE = 1<<2,
107 XSLT_TRACE_COPY = 1<<3,
108 XSLT_TRACE_COMMENT = 1<<4,
109 XSLT_TRACE_PI = 1<<5,
110 XSLT_TRACE_COPY_OF = 1<<6,
111 XSLT_TRACE_VALUE_OF = 1<<7,
112 XSLT_TRACE_CALL_TEMPLATE = 1<<8,
113 XSLT_TRACE_APPLY_TEMPLATES = 1<<9,
114 XSLT_TRACE_CHOOSE = 1<<10,
115 XSLT_TRACE_IF = 1<<11,
116 XSLT_TRACE_FOR_EACH = 1<<12,
117 XSLT_TRACE_STRIP_SPACES = 1<<13,
118 XSLT_TRACE_TEMPLATES = 1<<14,
119 XSLT_TRACE_KEYS = 1<<15,
120 XSLT_TRACE_VARIABLES = 1<<16
121 } xsltDebugTraceCodes;
126 * Control the type of xsl debugtrace messages emitted.
128 #define XSLT_TRACE(ctxt,code,call) \
129 if (ctxt->traceCode && (*(ctxt->traceCode) & code)) \
132 XSLTPUBFUN void XSLTCALL
133 xsltDebugSetDefaultTrace(xsltDebugTraceCodes val);
134 XSLTPUBFUN xsltDebugTraceCodes XSLTCALL
135 xsltDebugGetDefaultTrace(void);
138 * XSLT specific error and debug reporting functions.
140 XSLTPUBVAR xmlGenericErrorFunc xsltGenericError;
141 XSLTPUBVAR void *xsltGenericErrorContext;
142 XSLTPUBVAR xmlGenericErrorFunc xsltGenericDebug;
143 XSLTPUBVAR void *xsltGenericDebugContext;
145 XSLTPUBFUN void XSLTCALL
146 xsltPrintErrorContext (xsltTransformContextPtr ctxt,
147 xsltStylesheetPtr style,
149 XSLTPUBFUN void XSLTCALL
150 xsltMessage (xsltTransformContextPtr ctxt,
153 XSLTPUBFUN void XSLTCALL
154 xsltSetGenericErrorFunc (void *ctx,
155 xmlGenericErrorFunc handler);
156 XSLTPUBFUN void XSLTCALL
157 xsltSetGenericDebugFunc (void *ctx,
158 xmlGenericErrorFunc handler);
159 XSLTPUBFUN void XSLTCALL
160 xsltSetTransformErrorFunc (xsltTransformContextPtr ctxt,
162 xmlGenericErrorFunc handler);
163 XSLTPUBFUN void XSLTCALL
164 xsltTransformError (xsltTransformContextPtr ctxt,
165 xsltStylesheetPtr style,
170 XSLTPUBFUN int XSLTCALL
171 xsltSetCtxtParseOptions (xsltTransformContextPtr ctxt,
177 XSLTPUBFUN void XSLTCALL
178 xsltDocumentSortFunction (xmlNodeSetPtr list);
179 XSLTPUBFUN void XSLTCALL
180 xsltSetSortFunc (xsltSortFunc handler);
181 XSLTPUBFUN void XSLTCALL
182 xsltSetCtxtSortFunc (xsltTransformContextPtr ctxt,
183 xsltSortFunc handler);
184 XSLTPUBFUN void XSLTCALL
185 xsltDefaultSortFunction (xsltTransformContextPtr ctxt,
188 XSLTPUBFUN void XSLTCALL
189 xsltDoSortFunction (xsltTransformContextPtr ctxt,
192 XSLTPUBFUN xmlXPathObjectPtr * XSLTCALL
193 xsltComputeSortResult (xsltTransformContextPtr ctxt,
200 XSLTPUBFUN const xmlChar * XSLTCALL
201 xsltSplitQName (xmlDictPtr dict,
203 const xmlChar **prefix);
204 XSLTPUBFUN const xmlChar * XSLTCALL
205 xsltGetQNameURI (xmlNodePtr node,
208 XSLTPUBFUN const xmlChar * XSLTCALL
209 xsltGetQNameURI2 (xsltStylesheetPtr style,
211 const xmlChar **name);
214 * Output, reuse libxml I/O buffers.
216 XSLTPUBFUN int XSLTCALL
217 xsltSaveResultTo (xmlOutputBufferPtr buf,
219 xsltStylesheetPtr style);
220 XSLTPUBFUN int XSLTCALL
221 xsltSaveResultToFilename (const char *URI,
223 xsltStylesheetPtr style,
225 XSLTPUBFUN int XSLTCALL
226 xsltSaveResultToFile (FILE *file,
228 xsltStylesheetPtr style);
229 XSLTPUBFUN int XSLTCALL
230 xsltSaveResultToFd (int fd,
232 xsltStylesheetPtr style);
233 XSLTPUBFUN int XSLTCALL
234 xsltSaveResultToString (xmlChar **doc_txt_ptr,
237 xsltStylesheetPtr style);
242 XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL
243 xsltXPathCompile (xsltStylesheetPtr style,
249 XSLTPUBFUN void XSLTCALL
250 xsltSaveProfiling (xsltTransformContextPtr ctxt,
252 XSLTPUBFUN xmlDocPtr XSLTCALL
253 xsltGetProfileInformation (xsltTransformContextPtr ctxt);
255 XSLTPUBFUN long XSLTCALL
256 xsltTimestamp (void);
257 XSLTPUBFUN void XSLTCALL
258 xsltCalibrateAdjust (long delta);
261 * XSLT_TIMESTAMP_TICS_PER_SEC:
263 * Sampling precision for profiling
265 #define XSLT_TIMESTAMP_TICS_PER_SEC 100000l
268 * Hooks for the debugger.
272 XSLT_DEBUG_NONE = 0, /* no debugging allowed */
280 XSLT_DEBUG_RUN_RESTART,
282 } xsltDebugStatusCodes;
284 XSLTPUBVAR int xslDebugStatus;
286 typedef void (*xsltHandleDebuggerCallback) (xmlNodePtr cur, xmlNodePtr node,
287 xsltTemplatePtr templ, xsltTransformContextPtr ctxt);
288 typedef int (*xsltAddCallCallback) (xsltTemplatePtr templ, xmlNodePtr source);
289 typedef void (*xsltDropCallCallback) (void);
291 XSLTPUBFUN void XSLTCALL
292 xsltSetDebuggerStatus (int value);
293 XSLTPUBFUN int XSLTCALL
294 xsltGetDebuggerStatus (void);
295 XSLTPUBFUN int XSLTCALL
296 xsltSetDebuggerCallbacks (int no, void *block);
297 XSLTPUBFUN int XSLTCALL
298 xslAddCall (xsltTemplatePtr templ,
300 XSLTPUBFUN void XSLTCALL
307 #endif /* __XML_XSLTUTILS_H__ */