msxml3: Implement put_nodeTypedValue() for bin.base64 type and commonly used input...
[wine] / dlls / msxml3 / xmlparser.idl
1 /*
2  * Copyright (C) 2011 Alistair Leslie-Hughes
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "unknwn.idl";
20 import "objidl.idl";
21 import "oaidl.idl";
22
23 interface IXMLNodeSource;
24 interface IXMLParser;
25 interface IXMLNodeFactory;
26 interface IMoniker;
27
28 typedef enum
29 {
30     XML_ELEMENT = 1,
31     XML_ATTRIBUTE,
32     XML_PI,
33     XML_XMLDECL,
34     XML_DOCTYPE,
35     XML_DTDATTRIBUTE,
36     XML_ENTITYDECL,
37     XML_ELEMENTDECL,
38     XML_ATTLISTDECL,
39     XML_NOTATION,
40     XML_GROUP,
41     XML_INCLUDESECT,
42     XML_PCDATA,
43     XML_CDATA,
44     XML_IGNORESECT,
45     XML_COMMENT,
46     XML_ENTITYREF,
47     XML_WHITESPACE,
48     XML_NAME,
49     XML_NMTOKEN,
50     XML_STRING,
51     XML_PEREF,
52     XML_MODEL,
53     XML_ATTDEF,
54     XML_ATTTYPE,
55     XML_ATTPRESENCE,
56     XML_DTDSUBSET,
57     XML_LASTNODETYPE
58 } XML_NODE_TYPE;
59
60 typedef enum
61 {
62     XML_VERSION = XML_LASTNODETYPE,
63     XML_ENCODING,
64     XML_STANDALONE,
65     XML_NS,
66     XML_XMLSPACE,
67     XML_XMLLANG,
68     XML_SYSTEM,
69     XML_PUBLIC,
70     XML_NDATA,
71     XML_AT_CDATA,
72     XML_AT_ID,
73     XML_AT_IDREF,
74     XML_AT_IDREFS,
75     XML_AT_ENTITY,
76     XML_AT_ENTITIES,
77     XML_AT_NMTOKEN,
78     XML_AT_NMTOKENS,
79     XML_AT_NOTATION,
80     XML_AT_REQUIRED,
81     XML_AT_IMPLIED,
82     XML_AT_FIXED,
83     XML_PENTITYDECL,
84     XML_EMPTY,
85     XML_ANY,
86     XML_MIXED,
87     XML_SEQUENCE,
88     XML_CHOICE,
89     XML_STAR,
90     XML_PLUS,
91     XML_QUESTIONMARK,
92     XML_LASTSUBNODETYPE
93 }
94 XML_NODE_SUBTYPE;
95
96 typedef enum
97 {
98     XML_E_PARSEERRORBASE = 0xC00CE500L,
99
100     XML_E_ENDOFINPUT            = XML_E_PARSEERRORBASE,
101     XML_E_MISSINGEQUALS         = 0xC00CE501,
102     XML_E_MISSINGQUOTE          = 0xC00CE502,
103     XML_E_COMMENTSYNTAX         = 0xC00CE503,
104     XML_E_BADSTARTNAMECHAR      = 0xC00CE504,
105     XML_E_BADNAMECHAR           = 0xC00CE505,
106     XML_E_BADCHARINSTRING       = 0xC00CE506,
107     XML_E_XMLDECLSYNTAX         = 0xC00CE507,
108     XML_E_BADCHARDATA           = 0xC00CE508,
109     XML_E_MISSINGWHITESPACE     = 0xC00CE509,
110     XML_E_EXPECTINGTAGEND       = 0xC00CE50A,
111     XML_E_BADCHARINDTD          = 0xC00CE50B,
112     XML_E_BADCHARINDECL         = 0xC00CE50C,
113     XML_E_MISSINGSEMICOLON      = 0xC00CE50D,
114     XML_E_BADCHARINENTREF       = 0xC00CE50E,
115     XML_E_UNBALANCEDPAREN       = 0xC00CE50F,
116     XML_E_EXPECTINGOPENBRACKET  = 0xC00CE510,
117     XML_E_BADENDCONDSECT        = 0xC00CE511,
118     XML_E_INTERNALERROR         = 0xC00CE512,
119     XML_E_UNEXPECTED_WHITESPACE = 0xC00CE513,
120     XML_E_INCOMPLETE_ENCODING   = 0xC00CE514,
121     XML_E_BADCHARINMIXEDMODEL   = 0xC00CE515,
122     XML_E_MISSING_STAR          = 0xC00CE516,
123     XML_E_BADCHARINMODEL        = 0xC00CE517,
124     XML_E_MISSING_PAREN         = 0xC00CE518,
125     XML_E_BADCHARINENUMERATION  = 0xC00CE519,
126     XML_E_PIDECLSYNTAX          = 0xC00CE51A,
127     XML_E_EXPECTINGCLOSEQUOTE   = 0xC00CE51B,
128     XML_E_MULTIPLE_COLONS       = 0xC00CE51C,
129     XML_E_INVALID_DECIMAL       = 0xC00CE51D,
130     XML_E_INVALID_HEXIDECIMAL   = 0xC00CE51E,
131     XML_E_INVALID_UNICODE       = 0xC00CE51F,
132     XML_E_WHITESPACEORQUESTIONMARK  = 0xC00CE520,
133     XML_E_ENDOFPE               = 0xC00CE521,
134
135     XML_E_TOKEN_ERROR = XML_E_PARSEERRORBASE + 0x50,
136     XML_E_SUSPENDED                     =  0xC00CE550,
137     XML_E_STOPPED                       = 0xC00CE551,
138     XML_E_UNEXPECTEDENDTAG              = 0xC00CE552,
139     XML_E_UNCLOSEDTAG                   = 0xC00CE553,
140     XML_E_DUPLICATEATTRIBUTE            = 0xC00CE554,
141     XML_E_MULTIPLEROOTS                 = 0xC00CE555,
142     XML_E_INVALIDATROOTLEVEL            = 0xC00CE556,
143     XML_E_BADXMLDECL                    = 0xC00CE557,
144     XML_E_MISSINGROOT                   = 0xC00CE558,
145     XML_E_UNEXPECTEDEOF                 = 0xC00CE559,
146     XML_E_BADPEREFINSUBSET              = 0xC00CE55A,
147     XML_E_PE_NESTING                    = 0xC00CE55B,
148     XML_E_INVALID_CDATACLOSINGTAG       = 0xC00CE55C,
149     XML_E_UNCLOSEDPI                    = 0xC00CE55D,
150     XML_E_UNCLOSEDSTARTTAG              = 0xC00CE55E,
151     XML_E_UNCLOSEDENDTAG                = 0xC00CE55F,
152     XML_E_UNCLOSEDSTRING                = 0xC00CE560,
153     XML_E_UNCLOSEDCOMMENT               = 0xC00CE561,
154     XML_E_UNCLOSEDDECL                  = 0xC00CE562,
155     XML_E_UNCLOSEDMARKUPDECL            = 0xC00CE563,
156     XML_E_UNCLOSEDCDATA                 = 0xC00CE564,
157     XML_E_BADDECLNAME                   = 0xC00CE565,
158     XML_E_BADEXTERNALID                 = 0xC00CE566,
159     XML_E_BADELEMENTINDTD               = 0xC00CE567,
160     XML_E_RESERVEDNAMESPACE             = 0xC00CE568,
161     XML_E_EXPECTING_VERSION             = 0xC00CE569,
162     XML_E_EXPECTING_ENCODING            = 0xC00CE56A,
163     XML_E_EXPECTING_NAME                = 0xC00CE56B,
164     XML_E_UNEXPECTED_ATTRIBUTE          = 0xC00CE56C,
165     XML_E_ENDTAGMISMATCH                = 0xC00CE56D,
166     XML_E_INVALIDENCODING               = 0xC00CE56E,
167     XML_E_INVALIDSWITCH                 = 0xC00CE56F,
168     XML_E_EXPECTING_NDATA               = 0xC00CE570,
169     XML_E_INVALID_MODEL                 = 0xC00CE571,
170     XML_E_INVALID_TYPE                  = 0xC00CE572,
171     XML_E_INVALIDXMLSPACE               = 0xC00CE573,
172     XML_E_MULTI_ATTR_VALUE              = 0xC00CE574,
173     XML_E_INVALID_PRESENCE              = 0xC00CE575,
174     XML_E_BADXMLCASE                    = 0xC00CE576,
175     XML_E_CONDSECTINSUBSET              = 0xC00CE577,
176     XML_E_CDATAINVALID                  = 0xC00CE578,
177     XML_E_INVALID_STANDALONE            = 0xC00CE579,
178     XML_E_UNEXPECTED_STANDALONE         = 0xC00CE57A,
179     XML_E_DOCTYPE_IN_DTD                = 0xC00CE57B,
180     XML_E_MISSING_ENTITY                = 0xC00CE57C,
181     XML_E_ENTITYREF_INNAME              = 0xC00CE57D,
182     XML_E_DOCTYPE_OUTSIDE_PROLOG        = 0xC00CE57E,
183     XML_E_INVALID_VERSION               = 0xC00CE57F,
184     XML_E_DTDELEMENT_OUTSIDE_DTD        = 0xC00CE580,
185     XML_E_DUPLICATEDOCTYPE              = 0xC00CE581,
186     XML_E_RESOURCE                      = 0xC00CE582,
187     XML_E_MISSINGNAME                   = 0xC00CE583,
188     XML_E_LASTERROR                     = 0xC00CE584
189 } XML_ERROR_CODE;
190
191 typedef enum
192 {
193     XMLPARSER_IDLE,
194     XMLPARSER_WAITING,
195     XMLPARSER_BUSY,
196     XMLPARSER_ERROR,
197     XMLPARSER_STOPPED,
198     XMLPARSER_SUSPENDED
199 } XML_PARSER_STATE;
200
201 typedef enum
202 {
203     XMLFLAG_FLOATINGAMP       = 0x00000001,
204     XMLFLAG_SHORTENDTAGS      = 0x00000002,
205     XMLFLAG_CASEINSENSITIVE   = 0x00000004,
206     XMLFLAG_NONAMESPACES      = 0x00000008,
207     XMLFLAG_NOWHITESPACE      = 0x00000010,
208     XMLFLAG_IE4QUIRKS         = 0x00000020,
209     XMLFLAG_NODTDNODES        = 0x00000040,
210     XMLFLAG_IE4COMPATIBILITY  = 0x000000FF,
211     XMLFLAG_IE5COMPATIBILITY  = 0x00000100,
212     XMLFLAG_SAX               = 0x00000200,
213     XMLFLAG_NORMALIZELB       = 0x00000400,
214     XMLFLAG_IGNOREENCODING    = 0x00000800,
215     XMLFLAG_USEWINHTTP        = 0x00001000,
216     XMLFLAG_RUNBUFFERONLY     = 0x00002000,
217     XMLFLAG_PROHIBIT_DTD      = 0x00008000
218 } XML_PARSER_FLAGS;
219
220
221 typedef enum
222 {
223     XMLNF_STARTDOCUMENT,
224     XMLNF_STARTDTD,
225     XMLNF_ENDDTD,
226     XMLNF_STARTDTDSUBSET,
227     XMLNF_ENDDTDSUBSET,
228     XMLNF_ENDPROLOG,
229     XMLNF_STARTENTITY,
230     XMLNF_ENDENTITY,
231     XMLNF_ENDDOCUMENT,
232     XMLNF_DATAAVAILABLE,
233     XMLNF_LASTEVENT = XMLNF_DATAAVAILABLE
234 } XML_NODEFACTORY_EVENT;
235
236 typedef struct _XML_NODE_INFO
237 {
238     DWORD           dwSize;
239     DWORD           dwType;
240     DWORD           dwSubType;
241     BOOL            fTerminal;
242     const WCHAR*    pwcText;
243     ULONG           ulLen;
244     ULONG           ulNsPrefixLen;
245     PVOID           pNode;
246     PVOID           pReserved;
247 } XML_NODE_INFO;
248
249 [
250     uuid(d242361c-51a0-11d2-9caf-0060b0ec3d39),
251     helpstring("Microsoft XML Parser 1.0"),
252     lcid(0x0000),
253     version(1.0)
254 ]
255 library XMLPSR
256 {
257 importlib("stdole32.tlb");
258 importlib("stdole2.tlb");
259
260 [
261     local,
262     object,
263     pointer_default(unique),
264     helpstring("IXMLNodeFactory Interface"),
265     uuid(d242361f-51a0-11d2-9caf-0060b0ec3d39)
266 ]
267 interface IXMLNodeFactory : IUnknown
268 {
269     HRESULT NotifyEvent([in] IXMLNodeSource* pSource,[in] XML_NODEFACTORY_EVENT iEvt);
270     HRESULT BeginChildren([in] IXMLNodeSource* pSource, [in] XML_NODE_INFO* pNodeInfo);
271     HRESULT EndChildren([in] IXMLNodeSource* pSource, [in] BOOL fEmpty, [in] XML_NODE_INFO* pNodeInfo);
272     HRESULT Error([in] IXMLNodeSource* pSource,[in] HRESULT hrErrorCode,
273                 [in] USHORT cNumRecs, [in] XML_NODE_INFO** ppNodeInfo);
274     HRESULT CreateNode([in] IXMLNodeSource* pSource, [in] PVOID pNodeParent, [in] USHORT cNumRecs,
275                 [in] XML_NODE_INFO** ppNodeInfo);
276 };
277
278 [
279     local,
280     object,
281     pointer_default(unique),
282     uuid(d242361d-51a0-11d2-9caf-0060b0ec3d39)
283 ]
284 interface IXMLNodeSource : IUnknown
285 {
286     HRESULT SetFactory([in] IXMLNodeFactory* pNodeFactory);
287     HRESULT GetFactory([out] IXMLNodeFactory** ppNodeFactory);
288     HRESULT Abort([in] BSTR bstrErrorInfo);
289     ULONG GetLineNumber();
290     ULONG GetLinePosition();
291     ULONG GetAbsolutePosition();
292     HRESULT GetLineBuffer([out] const WCHAR** ppBuf,[out] ULONG* Len, [out] ULONG* StartPos);
293     HRESULT GetLastError();
294     HRESULT GetErrorInfo([out] BSTR* pErrorInfo);
295     ULONG GetFlags();
296     HRESULT GetURL([out] const WCHAR** ppBuf);
297 };
298
299 [
300     local,
301     object,
302     pointer_default(unique),
303     helpstring("IXMLParser Interface"),
304     uuid(d242361e-51a0-11d2-9caf-0060b0ec3d39)
305 ]
306 interface IXMLParser : IXMLNodeSource
307 {
308     HRESULT SetURL([in] const WCHAR* pszBaseUrl,[in] const WCHAR* pszRelativeUrl,[in] BOOL fAsync);
309     HRESULT Load([in] BOOL fFullyAvailable, [in] IMoniker *pimkName, [in] LPBC pibc, [in] DWORD grfMode);
310     HRESULT SetInput([in] IUnknown *pStm);
311     HRESULT PushData([in] const char* pData, [in] ULONG ulChars, [in] BOOL fLastBuffer);
312     HRESULT LoadDTD([in] const WCHAR* pszBaseUrl, [in] const WCHAR* pszRelativeUrl);
313     HRESULT LoadEntity([in] const WCHAR* pszBaseUrl, [in] const WCHAR* pszRelativeUrl, [in] BOOL fpe);
314     HRESULT ParseEntity([in] const WCHAR* pwcText, [in] ULONG ulLen, [in] BOOL fpe);
315     HRESULT ExpandEntity([in] const WCHAR* pwcText, [in] ULONG ulLen);
316     HRESULT SetRoot([in] PVOID pRoot);
317     HRESULT GetRoot([in] PVOID* ppRoot);
318     HRESULT Run([in] long lChars);
319     HRESULT GetParserState();
320     HRESULT Suspend();
321     HRESULT Reset();
322     HRESULT SetFlags([in] ULONG iFlags);
323     HRESULT SetSecureBaseURL([in] const WCHAR* pszBaseUrl);
324     HRESULT GetSecureBaseURL([out] const WCHAR** ppwcBuf);
325 };
326
327 }
328
329 [
330     helpstring("XML Parser"),
331     uuid(f5078f19-c551-11d3-89b9-0000f81fe221),
332     threading(both),
333     progid("Msxml2.XMLParser"),
334     vi_progid("Msxml2.XMLParser"),
335     version(3.0)
336 ]
337 coclass XMLParser
338 {
339     [default] interface IXMLParser;
340 };
341
342 [
343     helpstring("XML Parser 2.6"),
344     uuid(f5078f20-c551-11d3-89b9-0000f81fe221),
345     threading(both),
346     progid("Msxml2.XMLParser.2.6"),
347     vi_progid("Msxml2.XMLParser"),
348     version(2.6)
349 ]
350 coclass XMLParser26
351 {
352     [default] interface IXMLParser;
353 };
354
355 [
356     helpstring("XML Parser 3.0"),
357     uuid(f5078f31-c551-11d3-89b9-0000f81fe221),
358     threading(both),
359     progid("Msxml2.XMLParser.3.0"),
360     vi_progid("Msxml2.XMLParser"),
361     version(3.0)
362 ]
363 coclass XMLParser30
364 {
365     [default] interface IXMLParser;
366 };
367
368 [
369     helpstring("XML Document"),
370     threading(apartment),
371     uuid(48123bc4-99d9-11d1-a6b3-00c04fd91555),
372     progid("xmlfile"),
373     version(1.0)
374 ]
375 coclass XMLView
376 {
377     interface IPersistMoniker;
378     interface IPersistHistory;
379     interface IOleCommandTarget;
380     interface IOleObject;
381 }