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)->ns != NULL) && \
56 (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__ */