|  | /* | 
|  | * Copyright (C) 2011 Alistair Leslie-Hughes | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "unknwn.idl"; | 
|  | import "objidl.idl"; | 
|  | import "oaidl.idl"; | 
|  |  | 
|  | interface IXMLNodeSource; | 
|  | interface IXMLParser; | 
|  | interface IXMLNodeFactory; | 
|  | interface IMoniker; | 
|  |  | 
|  | typedef enum | 
|  | { | 
|  | XML_ELEMENT = 1, | 
|  | XML_ATTRIBUTE, | 
|  | XML_PI, | 
|  | XML_XMLDECL, | 
|  | XML_DOCTYPE, | 
|  | XML_DTDATTRIBUTE, | 
|  | XML_ENTITYDECL, | 
|  | XML_ELEMENTDECL, | 
|  | XML_ATTLISTDECL, | 
|  | XML_NOTATION, | 
|  | XML_GROUP, | 
|  | XML_INCLUDESECT, | 
|  | XML_PCDATA, | 
|  | XML_CDATA, | 
|  | XML_IGNORESECT, | 
|  | XML_COMMENT, | 
|  | XML_ENTITYREF, | 
|  | XML_WHITESPACE, | 
|  | XML_NAME, | 
|  | XML_NMTOKEN, | 
|  | XML_STRING, | 
|  | XML_PEREF, | 
|  | XML_MODEL, | 
|  | XML_ATTDEF, | 
|  | XML_ATTTYPE, | 
|  | XML_ATTPRESENCE, | 
|  | XML_DTDSUBSET, | 
|  | XML_LASTNODETYPE | 
|  | } XML_NODE_TYPE; | 
|  |  | 
|  | typedef enum | 
|  | { | 
|  | XML_VERSION = XML_LASTNODETYPE, | 
|  | XML_ENCODING, | 
|  | XML_STANDALONE, | 
|  | XML_NS, | 
|  | XML_XMLSPACE, | 
|  | XML_XMLLANG, | 
|  | XML_SYSTEM, | 
|  | XML_PUBLIC, | 
|  | XML_NDATA, | 
|  | XML_AT_CDATA, | 
|  | XML_AT_ID, | 
|  | XML_AT_IDREF, | 
|  | XML_AT_IDREFS, | 
|  | XML_AT_ENTITY, | 
|  | XML_AT_ENTITIES, | 
|  | XML_AT_NMTOKEN, | 
|  | XML_AT_NMTOKENS, | 
|  | XML_AT_NOTATION, | 
|  | XML_AT_REQUIRED, | 
|  | XML_AT_IMPLIED, | 
|  | XML_AT_FIXED, | 
|  | XML_PENTITYDECL, | 
|  | XML_EMPTY, | 
|  | XML_ANY, | 
|  | XML_MIXED, | 
|  | XML_SEQUENCE, | 
|  | XML_CHOICE, | 
|  | XML_STAR, | 
|  | XML_PLUS, | 
|  | XML_QUESTIONMARK, | 
|  | XML_LASTSUBNODETYPE | 
|  | } | 
|  | XML_NODE_SUBTYPE; | 
|  |  | 
|  | typedef enum | 
|  | { | 
|  | XML_E_PARSEERRORBASE = 0xC00CE500L, | 
|  |  | 
|  | XML_E_ENDOFINPUT            = XML_E_PARSEERRORBASE, | 
|  | XML_E_MISSINGEQUALS         = 0xC00CE501, | 
|  | XML_E_MISSINGQUOTE          = 0xC00CE502, | 
|  | XML_E_COMMENTSYNTAX         = 0xC00CE503, | 
|  | XML_E_BADSTARTNAMECHAR      = 0xC00CE504, | 
|  | XML_E_BADNAMECHAR           = 0xC00CE505, | 
|  | XML_E_BADCHARINSTRING       = 0xC00CE506, | 
|  | XML_E_XMLDECLSYNTAX         = 0xC00CE507, | 
|  | XML_E_BADCHARDATA           = 0xC00CE508, | 
|  | XML_E_MISSINGWHITESPACE     = 0xC00CE509, | 
|  | XML_E_EXPECTINGTAGEND       = 0xC00CE50A, | 
|  | XML_E_BADCHARINDTD          = 0xC00CE50B, | 
|  | XML_E_BADCHARINDECL         = 0xC00CE50C, | 
|  | XML_E_MISSINGSEMICOLON      = 0xC00CE50D, | 
|  | XML_E_BADCHARINENTREF       = 0xC00CE50E, | 
|  | XML_E_UNBALANCEDPAREN       = 0xC00CE50F, | 
|  | XML_E_EXPECTINGOPENBRACKET  = 0xC00CE510, | 
|  | XML_E_BADENDCONDSECT        = 0xC00CE511, | 
|  | XML_E_INTERNALERROR         = 0xC00CE512, | 
|  | XML_E_UNEXPECTED_WHITESPACE = 0xC00CE513, | 
|  | XML_E_INCOMPLETE_ENCODING   = 0xC00CE514, | 
|  | XML_E_BADCHARINMIXEDMODEL   = 0xC00CE515, | 
|  | XML_E_MISSING_STAR          = 0xC00CE516, | 
|  | XML_E_BADCHARINMODEL        = 0xC00CE517, | 
|  | XML_E_MISSING_PAREN         = 0xC00CE518, | 
|  | XML_E_BADCHARINENUMERATION  = 0xC00CE519, | 
|  | XML_E_PIDECLSYNTAX          = 0xC00CE51A, | 
|  | XML_E_EXPECTINGCLOSEQUOTE   = 0xC00CE51B, | 
|  | XML_E_MULTIPLE_COLONS       = 0xC00CE51C, | 
|  | XML_E_INVALID_DECIMAL       = 0xC00CE51D, | 
|  | XML_E_INVALID_HEXIDECIMAL   = 0xC00CE51E, | 
|  | XML_E_INVALID_UNICODE       = 0xC00CE51F, | 
|  | XML_E_WHITESPACEORQUESTIONMARK  = 0xC00CE520, | 
|  | XML_E_ENDOFPE               = 0xC00CE521, | 
|  |  | 
|  | XML_E_TOKEN_ERROR = XML_E_PARSEERRORBASE + 0x50, | 
|  | XML_E_SUSPENDED                     =  0xC00CE550, | 
|  | XML_E_STOPPED                       = 0xC00CE551, | 
|  | XML_E_UNEXPECTEDENDTAG              = 0xC00CE552, | 
|  | XML_E_UNCLOSEDTAG                   = 0xC00CE553, | 
|  | XML_E_DUPLICATEATTRIBUTE            = 0xC00CE554, | 
|  | XML_E_MULTIPLEROOTS                 = 0xC00CE555, | 
|  | XML_E_INVALIDATROOTLEVEL            = 0xC00CE556, | 
|  | XML_E_BADXMLDECL                    = 0xC00CE557, | 
|  | XML_E_MISSINGROOT                   = 0xC00CE558, | 
|  | XML_E_UNEXPECTEDEOF                 = 0xC00CE559, | 
|  | XML_E_BADPEREFINSUBSET              = 0xC00CE55A, | 
|  | XML_E_PE_NESTING                    = 0xC00CE55B, | 
|  | XML_E_INVALID_CDATACLOSINGTAG       = 0xC00CE55C, | 
|  | XML_E_UNCLOSEDPI                    = 0xC00CE55D, | 
|  | XML_E_UNCLOSEDSTARTTAG              = 0xC00CE55E, | 
|  | XML_E_UNCLOSEDENDTAG                = 0xC00CE55F, | 
|  | XML_E_UNCLOSEDSTRING                = 0xC00CE560, | 
|  | XML_E_UNCLOSEDCOMMENT               = 0xC00CE561, | 
|  | XML_E_UNCLOSEDDECL                  = 0xC00CE562, | 
|  | XML_E_UNCLOSEDMARKUPDECL            = 0xC00CE563, | 
|  | XML_E_UNCLOSEDCDATA                 = 0xC00CE564, | 
|  | XML_E_BADDECLNAME                   = 0xC00CE565, | 
|  | XML_E_BADEXTERNALID                 = 0xC00CE566, | 
|  | XML_E_BADELEMENTINDTD               = 0xC00CE567, | 
|  | XML_E_RESERVEDNAMESPACE             = 0xC00CE568, | 
|  | XML_E_EXPECTING_VERSION             = 0xC00CE569, | 
|  | XML_E_EXPECTING_ENCODING            = 0xC00CE56A, | 
|  | XML_E_EXPECTING_NAME                = 0xC00CE56B, | 
|  | XML_E_UNEXPECTED_ATTRIBUTE          = 0xC00CE56C, | 
|  | XML_E_ENDTAGMISMATCH                = 0xC00CE56D, | 
|  | XML_E_INVALIDENCODING               = 0xC00CE56E, | 
|  | XML_E_INVALIDSWITCH                 = 0xC00CE56F, | 
|  | XML_E_EXPECTING_NDATA               = 0xC00CE570, | 
|  | XML_E_INVALID_MODEL                 = 0xC00CE571, | 
|  | XML_E_INVALID_TYPE                  = 0xC00CE572, | 
|  | XML_E_INVALIDXMLSPACE               = 0xC00CE573, | 
|  | XML_E_MULTI_ATTR_VALUE              = 0xC00CE574, | 
|  | XML_E_INVALID_PRESENCE              = 0xC00CE575, | 
|  | XML_E_BADXMLCASE                    = 0xC00CE576, | 
|  | XML_E_CONDSECTINSUBSET              = 0xC00CE577, | 
|  | XML_E_CDATAINVALID                  = 0xC00CE578, | 
|  | XML_E_INVALID_STANDALONE            = 0xC00CE579, | 
|  | XML_E_UNEXPECTED_STANDALONE         = 0xC00CE57A, | 
|  | XML_E_DOCTYPE_IN_DTD                = 0xC00CE57B, | 
|  | XML_E_MISSING_ENTITY                = 0xC00CE57C, | 
|  | XML_E_ENTITYREF_INNAME              = 0xC00CE57D, | 
|  | XML_E_DOCTYPE_OUTSIDE_PROLOG        = 0xC00CE57E, | 
|  | XML_E_INVALID_VERSION               = 0xC00CE57F, | 
|  | XML_E_DTDELEMENT_OUTSIDE_DTD        = 0xC00CE580, | 
|  | XML_E_DUPLICATEDOCTYPE              = 0xC00CE581, | 
|  | XML_E_RESOURCE                      = 0xC00CE582, | 
|  | XML_E_MISSINGNAME                   = 0xC00CE583, | 
|  | XML_E_LASTERROR                     = 0xC00CE584 | 
|  | } XML_ERROR_CODE; | 
|  |  | 
|  | typedef enum | 
|  | { | 
|  | XMLPARSER_IDLE, | 
|  | XMLPARSER_WAITING, | 
|  | XMLPARSER_BUSY, | 
|  | XMLPARSER_ERROR, | 
|  | XMLPARSER_STOPPED, | 
|  | XMLPARSER_SUSPENDED | 
|  | } XML_PARSER_STATE; | 
|  |  | 
|  | typedef enum | 
|  | { | 
|  | XMLFLAG_FLOATINGAMP       = 0x00000001, | 
|  | XMLFLAG_SHORTENDTAGS      = 0x00000002, | 
|  | XMLFLAG_CASEINSENSITIVE   = 0x00000004, | 
|  | XMLFLAG_NONAMESPACES      = 0x00000008, | 
|  | XMLFLAG_NOWHITESPACE      = 0x00000010, | 
|  | XMLFLAG_IE4QUIRKS         = 0x00000020, | 
|  | XMLFLAG_NODTDNODES        = 0x00000040, | 
|  | XMLFLAG_IE4COMPATIBILITY  = 0x000000FF, | 
|  | XMLFLAG_IE5COMPATIBILITY  = 0x00000100, | 
|  | XMLFLAG_SAX               = 0x00000200, | 
|  | XMLFLAG_NORMALIZELB       = 0x00000400, | 
|  | XMLFLAG_IGNOREENCODING    = 0x00000800, | 
|  | XMLFLAG_USEWINHTTP        = 0x00001000, | 
|  | XMLFLAG_RUNBUFFERONLY     = 0x00002000, | 
|  | XMLFLAG_PROHIBIT_DTD      = 0x00008000 | 
|  | } XML_PARSER_FLAGS; | 
|  |  | 
|  |  | 
|  | typedef enum | 
|  | { | 
|  | XMLNF_STARTDOCUMENT, | 
|  | XMLNF_STARTDTD, | 
|  | XMLNF_ENDDTD, | 
|  | XMLNF_STARTDTDSUBSET, | 
|  | XMLNF_ENDDTDSUBSET, | 
|  | XMLNF_ENDPROLOG, | 
|  | XMLNF_STARTENTITY, | 
|  | XMLNF_ENDENTITY, | 
|  | XMLNF_ENDDOCUMENT, | 
|  | XMLNF_DATAAVAILABLE, | 
|  | XMLNF_LASTEVENT = XMLNF_DATAAVAILABLE | 
|  | } XML_NODEFACTORY_EVENT; | 
|  |  | 
|  | typedef struct _XML_NODE_INFO | 
|  | { | 
|  | DWORD           dwSize; | 
|  | DWORD           dwType; | 
|  | DWORD           dwSubType; | 
|  | BOOL            fTerminal; | 
|  | const WCHAR*    pwcText; | 
|  | ULONG           ulLen; | 
|  | ULONG           ulNsPrefixLen; | 
|  | PVOID           pNode; | 
|  | PVOID           pReserved; | 
|  | } XML_NODE_INFO; | 
|  |  | 
|  | [ | 
|  | uuid(d242361c-51a0-11d2-9caf-0060b0ec3d39), | 
|  | helpstring("Microsoft XML Parser 1.0"), | 
|  | lcid(0x0000), | 
|  | version(1.0) | 
|  | ] | 
|  | library XMLPSR | 
|  | { | 
|  | importlib("stdole32.tlb"); | 
|  | importlib("stdole2.tlb"); | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(unique), | 
|  | helpstring("IXMLNodeFactory Interface"), | 
|  | uuid(d242361f-51a0-11d2-9caf-0060b0ec3d39) | 
|  | ] | 
|  | interface IXMLNodeFactory : IUnknown | 
|  | { | 
|  | HRESULT NotifyEvent([in] IXMLNodeSource* pSource,[in] XML_NODEFACTORY_EVENT iEvt); | 
|  | HRESULT BeginChildren([in] IXMLNodeSource* pSource, [in] XML_NODE_INFO* pNodeInfo); | 
|  | HRESULT EndChildren([in] IXMLNodeSource* pSource, [in] BOOL fEmpty, [in] XML_NODE_INFO* pNodeInfo); | 
|  | HRESULT Error([in] IXMLNodeSource* pSource,[in] HRESULT hrErrorCode, | 
|  | [in] USHORT cNumRecs, [in] XML_NODE_INFO** ppNodeInfo); | 
|  | HRESULT CreateNode([in] IXMLNodeSource* pSource, [in] PVOID pNodeParent, [in] USHORT cNumRecs, | 
|  | [in] XML_NODE_INFO** ppNodeInfo); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(unique), | 
|  | uuid(d242361d-51a0-11d2-9caf-0060b0ec3d39) | 
|  | ] | 
|  | interface IXMLNodeSource : IUnknown | 
|  | { | 
|  | HRESULT SetFactory([in] IXMLNodeFactory* pNodeFactory); | 
|  | HRESULT GetFactory([out] IXMLNodeFactory** ppNodeFactory); | 
|  | HRESULT Abort([in] BSTR bstrErrorInfo); | 
|  | ULONG GetLineNumber(); | 
|  | ULONG GetLinePosition(); | 
|  | ULONG GetAbsolutePosition(); | 
|  | HRESULT GetLineBuffer([out] const WCHAR** ppBuf,[out] ULONG* Len, [out] ULONG* StartPos); | 
|  | HRESULT GetLastError(); | 
|  | HRESULT GetErrorInfo([out] BSTR* pErrorInfo); | 
|  | ULONG GetFlags(); | 
|  | HRESULT GetURL([out] const WCHAR** ppBuf); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(unique), | 
|  | helpstring("IXMLParser Interface"), | 
|  | uuid(d242361e-51a0-11d2-9caf-0060b0ec3d39) | 
|  | ] | 
|  | interface IXMLParser : IXMLNodeSource | 
|  | { | 
|  | HRESULT SetURL([in] const WCHAR* pszBaseUrl,[in] const WCHAR* pszRelativeUrl,[in] BOOL fAsync); | 
|  | HRESULT Load([in] BOOL fFullyAvailable, [in] IMoniker *pimkName, [in] LPBC pibc, [in] DWORD grfMode); | 
|  | HRESULT SetInput([in] IUnknown *pStm); | 
|  | HRESULT PushData([in] const char* pData, [in] ULONG ulChars, [in] BOOL fLastBuffer); | 
|  | HRESULT LoadDTD([in] const WCHAR* pszBaseUrl, [in] const WCHAR* pszRelativeUrl); | 
|  | HRESULT LoadEntity([in] const WCHAR* pszBaseUrl, [in] const WCHAR* pszRelativeUrl, [in] BOOL fpe); | 
|  | HRESULT ParseEntity([in] const WCHAR* pwcText, [in] ULONG ulLen, [in] BOOL fpe); | 
|  | HRESULT ExpandEntity([in] const WCHAR* pwcText, [in] ULONG ulLen); | 
|  | HRESULT SetRoot([in] PVOID pRoot); | 
|  | HRESULT GetRoot([in] PVOID* ppRoot); | 
|  | HRESULT Run([in] long lChars); | 
|  | HRESULT GetParserState(); | 
|  | HRESULT Suspend(); | 
|  | HRESULT Reset(); | 
|  | HRESULT SetFlags([in] ULONG iFlags); | 
|  | HRESULT SetSecureBaseURL([in] const WCHAR* pszBaseUrl); | 
|  | HRESULT GetSecureBaseURL([out] const WCHAR** ppwcBuf); | 
|  | }; | 
|  |  | 
|  | } | 
|  |  | 
|  | [ | 
|  | helpstring("XML Parser"), | 
|  | uuid(f5078f19-c551-11d3-89b9-0000f81fe221), | 
|  | threading(both), | 
|  | progid("Msxml2.XMLParser"), | 
|  | vi_progid("Msxml2.XMLParser"), | 
|  | version(3.0) | 
|  | ] | 
|  | coclass XMLParser | 
|  | { | 
|  | [default] interface IXMLParser; | 
|  | }; | 
|  |  | 
|  | [ | 
|  | helpstring("XML Parser 2.6"), | 
|  | uuid(f5078f20-c551-11d3-89b9-0000f81fe221), | 
|  | threading(both), | 
|  | progid("Msxml2.XMLParser.2.6"), | 
|  | vi_progid("Msxml2.XMLParser"), | 
|  | version(2.6) | 
|  | ] | 
|  | coclass XMLParser26 | 
|  | { | 
|  | [default] interface IXMLParser; | 
|  | }; | 
|  |  | 
|  | [ | 
|  | helpstring("XML Parser 3.0"), | 
|  | uuid(f5078f31-c551-11d3-89b9-0000f81fe221), | 
|  | threading(both), | 
|  | progid("Msxml2.XMLParser.3.0"), | 
|  | vi_progid("Msxml2.XMLParser"), | 
|  | version(3.0) | 
|  | ] | 
|  | coclass XMLParser30 | 
|  | { | 
|  | [default] interface IXMLParser; | 
|  | }; | 
|  |  | 
|  | [ | 
|  | helpstring("XML Document"), | 
|  | threading(apartment), | 
|  | uuid(48123bc4-99d9-11d1-a6b3-00c04fd91555), | 
|  | progid("xmlfile"), | 
|  | version(1.0) | 
|  | ] | 
|  | coclass XMLView | 
|  | { | 
|  | interface IPersistMoniker; | 
|  | interface IPersistHistory; | 
|  | interface IOleCommandTarget; | 
|  | interface IOleObject; | 
|  | } |