2011-07-15 07:57:29 +02:00
|
|
|
/*
|
|
|
|
* 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);
|
|
|
|
};
|
|
|
|
|
2011-08-30 12:13:11 +02:00
|
|
|
}
|
2011-07-15 07:57:29 +02:00
|
|
|
|
|
|
|
[
|
2011-08-30 12:13:11 +02:00
|
|
|
helpstring("XML Parser"),
|
|
|
|
uuid(f5078f19-c551-11d3-89b9-0000f81fe221),
|
|
|
|
threading(both),
|
|
|
|
progid("Msxml2.XMLParser"),
|
|
|
|
vi_progid("Msxml2.XMLParser"),
|
|
|
|
version(3.0)
|
2011-07-15 07:57:29 +02:00
|
|
|
]
|
|
|
|
coclass XMLParser
|
|
|
|
{
|
|
|
|
[default] interface IXMLParser;
|
|
|
|
};
|
|
|
|
|
|
|
|
[
|
2011-08-30 12:13:11 +02:00
|
|
|
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)
|
2011-07-15 07:57:29 +02:00
|
|
|
]
|
|
|
|
coclass XMLParser26
|
|
|
|
{
|
|
|
|
[default] interface IXMLParser;
|
|
|
|
};
|
|
|
|
|
|
|
|
[
|
2011-08-30 12:13:11 +02:00
|
|
|
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)
|
2011-07-15 07:57:29 +02:00
|
|
|
]
|
|
|
|
coclass XMLParser30
|
|
|
|
{
|
|
|
|
[default] interface IXMLParser;
|
|
|
|
};
|
2012-03-12 10:56:29 +01:00
|
|
|
|
|
|
|
[
|
|
|
|
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;
|
|
|
|
}
|