ReactOS 0.4.16-dev-2208-g6350669
main.c
Go to the documentation of this file.
1/*
2 * MSXML Class Factory
3 *
4 * Copyright 2002 Lionel Ulmer
5 * Copyright 2005 Mike McCormack
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#define COBJMACROS
23
24#include <stdarg.h>
25#include <libxml/parser.h>
26#include <libxml/xmlerror.h>
27#include <libxml/xmlsave.h>
28#include <libxslt/pattern.h>
29#include <libxslt/transform.h>
30#include <libxslt/imports.h>
31#include <libxslt/xsltutils.h>
32#include <libxslt/variables.h>
34#include <libxslt/documents.h>
35#include <libxslt/extensions.h>
36#include <libxslt/extra.h>
37
38#include "windef.h"
39#include "winbase.h"
40#include "winuser.h"
41#include "ole2.h"
42#include "rpcproxy.h"
43#include "msxml.h"
44#include "msxml2.h"
45#include "msxml6.h"
46
47#include "wine/debug.h"
48
49#include "msxml_private.h"
50
52
54
55void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg, va_list ap)
56{
57 enum __wine_debug_class dbcl;
58 char buff[200];
59 const int max_size = ARRAY_SIZE(buff);
60 int len;
61
62 switch (lvl)
63 {
64 case XML_ERR_NONE:
65 dbcl = __WINE_DBCL_TRACE;
66 break;
67 case XML_ERR_WARNING:
68 dbcl = __WINE_DBCL_WARN;
69 break;
70 default:
71 dbcl = __WINE_DBCL_ERR;
72 break;
73 }
74
76 if (len == -1 || len >= max_size) buff[max_size-1] = 0;
77
78 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "%s", buff);
79}
80
81void wineXmlCallbackError(char const* caller, const xmlError* err)
82{
83 enum __wine_debug_class dbcl;
84
85 switch (err->level)
86 {
87 case XML_ERR_NONE: dbcl = __WINE_DBCL_TRACE; break;
88 case XML_ERR_WARNING: dbcl = __WINE_DBCL_WARN; break;
89 default: dbcl = __WINE_DBCL_ERR; break;
90 }
91
92 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "error code %d", err->code);
93 if (err->message)
94 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, ": %s", err->message);
95 else
96 wine_dbg_log(dbcl, &__wine_dbch_msxml, caller, "\n");
97}
98
99/* Support for loading xml files from a Wine Windows drive */
100static int wineXmlMatchCallback (char const * filename)
101{
102 int nRet = 0;
103
104 TRACE("%s\n", filename);
105
106 /*
107 * We will deal with loading XML files from the file system
108 * We only care about files that linux cannot find.
109 * e.g. C:,D: etc
110 */
111 if(isalpha(filename[0]) && filename[1] == ':')
112 nRet = 1;
113
114 return nRet;
115}
116
117static void *wineXmlOpenCallback (char const * filename)
118{
119 BSTR sFilename = bstr_from_xmlChar( (const xmlChar*)filename);
121
122 TRACE("%s\n", debugstr_w(sFilename));
123
127 SysFreeString(sFilename);
128 return hFile;
129}
130
131static int wineXmlReadCallback(void * context, char * buffer, int len)
132{
133 DWORD dwBytesRead;
134
135 TRACE("%p %s %d\n", context, buffer, len);
136
137 if ((context == NULL) || (buffer == NULL))
138 return(-1);
139
140 if(!ReadFile( context, buffer,len, &dwBytesRead, NULL))
141 {
142 ERR("Failed to read file\n");
143 return -1;
144 }
145
146 TRACE("Read %ld bytes.\n", dwBytesRead);
147
148 return dwBytesRead;
149}
150
152{
153 return CloseHandle(context) ? 0 : -1;
154}
155
156static void init_libxslt(void)
157{
158 xsltInit();
161 (const xmlChar *)"node-set",
162 (const xmlChar *)"urn:schemas-microsoft-com:xslt",
164}
165
166static int to_utf8(int cp, unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
167{
168 WCHAR *tmp;
169 int len = 0;
170
171 if (!in || !inlen || !*inlen) goto done;
172
173 len = MultiByteToWideChar(cp, 0, (const char *)in, *inlen, NULL, 0);
174 tmp = malloc(len * sizeof(WCHAR));
175 if (!tmp) return -1;
176 MultiByteToWideChar(cp, 0, (const char *)in, *inlen, tmp, len);
177
178 len = WideCharToMultiByte(CP_UTF8, 0, tmp, len, (char *)out, *outlen, NULL, NULL);
179 free(tmp);
180 if (!len) return -1;
181done:
182 *outlen = len;
183 return len;
184}
185
186static int from_utf8(int cp, unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
187{
188 WCHAR *tmp;
189 int len = 0;
190
191 if (!in || !inlen || !*inlen) goto done;
192
193 len = MultiByteToWideChar(CP_UTF8, 0, (const char *)in, *inlen, NULL, 0);
194 tmp = malloc(len * sizeof(WCHAR));
195 if (!tmp) return -1;
196 MultiByteToWideChar(CP_UTF8, 0, (const char *)in, *inlen, tmp, len);
197
198 len = WideCharToMultiByte(cp, 0, tmp, len, (char *)out, *outlen, NULL, NULL);
199 free(tmp);
200 if (!len) return -1;
201done:
202 *outlen = len;
203 return len;
204}
205
206static int gbk_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
207{
208 return to_utf8(936, out, outlen, in, inlen);
209}
210
211static int utf8_to_gbk(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
212{
213 return from_utf8(936, out, outlen, in, inlen);
214}
215
216static int iso8859_1_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
217{
218 return to_utf8(28591, out, outlen, in, inlen);
219}
220
221static int utf8_to_iso8859_1(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
222{
223 return from_utf8(28591, out, outlen, in, inlen);
224}
225
226static int win1250_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
227{
228 return to_utf8(1250, out, outlen, in, inlen);
229}
230
231static int utf8_to_win1250(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
232{
233 return from_utf8(1250, out, outlen, in, inlen);
234}
235
236static int win1251_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
237{
238 return to_utf8(1251, out, outlen, in, inlen);
239}
240
241static int utf8_to_win1251(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
242{
243 return from_utf8(1251, out, outlen, in, inlen);
244}
245
246static int win1252_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
247{
248 return to_utf8(1252, out, outlen, in, inlen);
249}
250
251static int utf8_to_win1252(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
252{
253 return from_utf8(1252, out, outlen, in, inlen);
254}
255
256static int win1253_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
257{
258 return to_utf8(1253, out, outlen, in, inlen);
259}
260
261static int utf8_to_win1253(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
262{
263 return from_utf8(1253, out, outlen, in, inlen);
264}
265static int win1254_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
266{
267 return to_utf8(1254, out, outlen, in, inlen);
268}
269
270static int utf8_to_win1254(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
271{
272 return from_utf8(1254, out, outlen, in, inlen);
273}
274
275static int win1255_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
276{
277 return to_utf8(1255, out, outlen, in, inlen);
278}
279
280static int utf8_to_win1255(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
281{
282 return from_utf8(1255, out, outlen, in, inlen);
283}
284
285static int win1256_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
286{
287 return to_utf8(1256, out, outlen, in, inlen);
288}
289
290static int utf8_to_win1256(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
291{
292 return from_utf8(1256, out, outlen, in, inlen);
293}
294
295static int win1257_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
296{
297 return to_utf8(1257, out, outlen, in, inlen);
298}
299
300static int utf8_to_win1257(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
301{
302 return from_utf8(1257, out, outlen, in, inlen);
303}
304
305static int win1258_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
306{
307 return to_utf8(1258, out, outlen, in, inlen);
308}
309
310static int utf8_to_win1258(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
311{
312 return from_utf8(1258, out, outlen, in, inlen);
313}
314
315static void init_char_encoders(void)
316{
317 static const struct
318 {
319 const char *encoding;
322 } encoder[] =
323 {
324 { "gbk", gbk_to_utf8, utf8_to_gbk },
325 { "iso8859-1", iso8859_1_to_utf8, utf8_to_iso8859_1 },
326 { "windows-1250", win1250_to_utf8, utf8_to_win1250 },
327 { "windows-1251", win1251_to_utf8, utf8_to_win1251 },
328 { "windows-1252", win1252_to_utf8, utf8_to_win1252 },
329 { "windows-1253", win1253_to_utf8, utf8_to_win1253 },
330 { "windows-1254", win1254_to_utf8, utf8_to_win1254 },
331 { "windows-1255", win1255_to_utf8, utf8_to_win1255 },
332 { "windows-1256", win1256_to_utf8, utf8_to_win1256 },
333 { "windows-1257", win1257_to_utf8, utf8_to_win1257 },
334 { "windows-1258", win1258_to_utf8, utf8_to_win1258 }
335 };
336 int i;
337
338 for (i = 0; i < ARRAY_SIZE(encoder); i++)
339 {
340 if (!xmlFindCharEncodingHandler(encoder[i].encoding))
341 {
342 TRACE("Adding %s encoding handler\n", encoder[i].encoding);
344 }
345 }
346}
347
349{
350 switch (v)
351 {
352 default:
353 case MSXML_DEFAULT: return &CLSID_DOMDocument;
354 case MSXML3: return &CLSID_DOMDocument30;
355 case MSXML4: return &CLSID_DOMDocument40;
356 case MSXML6: return &CLSID_DOMDocument60;
357 }
358}
359
361{
362 MSXML_hInstance = hInstDLL;
363
364 switch(fdwReason)
365 {
368
369 /* Set the default indent character to a single tab,
370 for this thread and as default for new threads */
371 xmlTreeIndentString = "\t";
372 xmlThrDefTreeIndentString("\t");
373
374 /* Register callbacks for loading XML files */
377 WARN("Failed to register callbacks\n");
378
380
381 schemasInit();
382 init_libxslt();
384 break;
386 if (reserved) break;
388 /* Restore default Callbacks */
391
395 break;
396 }
397 return TRUE;
398}
void xsltCleanupGlobals(void)
Definition: extensions.c:2295
int xsltRegisterExtModuleFunction(const xmlChar *name, const xmlChar *URI, xmlXPathFunction function)
Definition: extensions.c:1410
void xsltFunctionNodeSet(xmlXPathParserContextPtr ctxt, int nargs)
Definition: extra.c:129
#define isalpha(c)
Definition: acclib.h:74
static DWORD const fdwReason
void release_typelib(void)
Definition: apps.c:159
#define msg(x)
Definition: auth_time.c:54
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define ARRAY_SIZE(A)
Definition: main.h:20
BOOL NTAPI DllMain(_In_ HINSTANCE hDll, _In_ ULONG dwReason, _In_opt_ PVOID pReserved)
Definition: main.c:33
static INT max_size
Definition: history.c:51
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define CloseHandle
Definition: compat.h:739
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
#define OPEN_EXISTING
Definition: compat.h:775
#define ReadFile(a, b, c, d, e)
Definition: compat.h:742
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
OLECHAR * BSTR
Definition: compat.h:2293
#define GENERIC_READ
Definition: compat.h:135
#define CreateFileW
Definition: compat.h:741
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
#define WideCharToMultiByte
Definition: compat.h:111
#define MultiByteToWideChar
Definition: compat.h:110
#define FILE_SHARE_READ
Definition: compat.h:136
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
char * va_list
Definition: vadefs.h:50
static int win1256_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:285
static int utf8_to_win1258(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:310
static void init_libxslt(void)
Definition: main.c:156
static int utf8_to_win1252(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:251
static int utf8_to_win1250(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:231
static int utf8_to_iso8859_1(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:221
static int win1252_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:246
static void * wineXmlOpenCallback(char const *filename)
Definition: main.c:117
static int from_utf8(int cp, unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:186
static int to_utf8(int cp, unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:166
static int iso8859_1_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:216
static int utf8_to_win1254(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:270
static int utf8_to_win1257(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:300
static void init_char_encoders(void)
Definition: main.c:315
static int win1253_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:256
static int wineXmlFileCloseCallback(void *context)
Definition: main.c:151
static int win1257_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:295
void wineXmlCallbackError(char const *caller, const xmlError *err)
Definition: main.c:81
static int utf8_to_win1256(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:290
static int win1258_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:305
static int wineXmlReadCallback(void *context, char *buffer, int len)
Definition: main.c:131
static int utf8_to_gbk(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:211
const CLSID * DOMDocument_version(MSXML_VERSION v)
Definition: main.c:348
static int wineXmlMatchCallback(char const *filename)
Definition: main.c:100
static int utf8_to_win1251(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:241
void wineXmlCallbackLog(char const *caller, xmlErrorLevel lvl, char const *msg, va_list ap)
Definition: main.c:55
static int gbk_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:206
static int win1251_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:236
static int utf8_to_win1253(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:261
static int win1255_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:275
static int utf8_to_win1255(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:280
static int win1250_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:226
static int win1254_to_utf8(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: main.c:265
HINSTANCE MSXML_hInstance
Definition: main.c:51
void xsltSetLoaderFunc(xsltDocLoaderFunc f)
Definition: documents.c:119
r reserved
Definition: btrfs.c:3006
xmlCharEncodingHandlerPtr xmlFindCharEncodingHandler(const char *name)
Definition: encoding.c:1677
xmlCharEncodingHandlerPtr xmlNewCharEncodingHandler(const char *name, xmlCharEncodingInputFunc input, xmlCharEncodingOutputFunc output)
Definition: encoding.c:1394
int(* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: encoding.h:130
int(* xmlCharEncodingInputFunc)(unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
Definition: encoding.h:108
static unsigned char buff[32768]
Definition: fatten.c:17
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
const GLdouble * v
Definition: gl.h:2040
GLuint buffer
Definition: glext.h:5915
GLuint in
Definition: glext.h:9616
GLenum GLsizei len
Definition: glext.h:6722
GLenum GLenum GLenum input
Definition: glext.h:9031
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
Definition: glfuncs.h:248
const char * filename
Definition: ioapi.h:137
#define debugstr_w
Definition: kernel32.h:32
POINT cp
Definition: magnifier.c:59
_In_ HANDLE hFile
Definition: mswsock.h:90
const struct _GUID CLSID_DOMDocument
MSXML_VERSION
Definition: msxml_dispex.h:27
@ MSXML_DEFAULT
Definition: msxml_dispex.h:28
@ MSXML4
Definition: msxml_dispex.h:32
@ MSXML6
Definition: msxml_dispex.h:33
@ MSXML3
Definition: msxml_dispex.h:31
void schemasCleanup(void)
Definition: schema.c:748
static BSTR bstr_from_xmlChar(const xmlChar *str)
void schemasInit(void)
Definition: schema.c:717
xmlDocPtr xslt_doc_default_loader(const xmlChar *uri, xmlDictPtr dict, int options, void *_ctxt, xsltLoadType type)
Definition: node.c:1401
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
#define err(...)
#define CP_UTF8
Definition: nls.h:20
__wine_debug_class
Definition: debug.h:50
@ __WINE_DBCL_ERR
Definition: debug.h:52
@ __WINE_DBCL_TRACE
Definition: debug.h:54
@ __WINE_DBCL_WARN
Definition: debug.h:53
const char int int wine_dbg_log(enum __wine_debug_class cls, struct __wine_debug_channel *ch, const char *func, const char *format,...) __WINE_PRINTF_ATTR(4
XML_GLOBALS_PARSER XMLPUBFUN void xmlInitParser(void)
Definition: threads.c:569
XMLPUBFUN void xmlCleanupParser(void)
Definition: threads.c:630
#define TRACE(s)
Definition: solgame.cpp:4
Definition: http.c:7252
#define vsnprintf
Definition: tif_win32.c:406
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define WINAPI
Definition: msvc.h:6
void int int ULONGLONG int va_list * ap
Definition: winesup.h:36
XMLPUBFUN void xmlRegisterDefaultInputCallbacks(void)
XML_GLOBALS_IO XMLPUBFUN void xmlCleanupInputCallbacks(void)
XMLPUBFUN int xmlRegisterInputCallbacks(xmlInputMatchCallback matchFunc, xmlInputOpenCallback openFunc, xmlInputReadCallback readFunc, xmlInputCloseCallback closeFunc)
xmlErrorLevel
Definition: xmlerror.h:24
@ XML_ERR_WARNING
Definition: xmlerror.h:26
@ XML_ERR_NONE
Definition: xmlerror.h:25
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char xmlChar
Definition: xmlstring.h:28
void xsltInit(void)
Definition: xslt.c:216