diff --git a/.gitignore b/.gitignore
index 75e33da..2558e76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -95,6 +95,7 @@
 dlls/mstask/mstask_local.h
 dlls/mstask/mstask_local_i.c
 dlls/msxml/msxml_tlb.tlb
+dlls/msxml2/msxml2_tlb.tlb
 dlls/msxml3/msxml3_v1.tlb
 dlls/msxml3/xslpattern.tab.c
 dlls/msxml3/xslpattern.tab.h
diff --git a/configure b/configure
index 00fbb6f..e1da621 100755
--- a/configure
+++ b/configure
@@ -15066,6 +15066,7 @@
 wine_fn_config_dll msvideo.dll16 enable_win16
 wine_fn_config_dll mswsock enable_mswsock mswsock
 wine_fn_config_dll msxml enable_msxml
+wine_fn_config_dll msxml2 enable_msxml2
 wine_fn_config_dll msxml3 enable_msxml3
 wine_fn_config_test dlls/msxml3/tests msxml3_test
 wine_fn_config_dll msxml4 enable_msxml4
diff --git a/configure.ac b/configure.ac
index 1250730..5e1810f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2612,6 +2612,7 @@
 WINE_CONFIG_DLL(msvideo.dll16,enable_win16)
 WINE_CONFIG_DLL(mswsock,,[mswsock])
 WINE_CONFIG_DLL(msxml)
+WINE_CONFIG_DLL(msxml2)
 WINE_CONFIG_DLL(msxml3)
 WINE_CONFIG_TEST(dlls/msxml3/tests)
 WINE_CONFIG_DLL(msxml4)
diff --git a/dlls/msxml2/Makefile.in b/dlls/msxml2/Makefile.in
new file mode 100644
index 0000000..263274c
--- /dev/null
+++ b/dlls/msxml2/Makefile.in
@@ -0,0 +1,10 @@
+MODULE = msxml2.dll
+
+C_SRCS = main.c
+
+IDL_TLB_SRCS = msxml2_tlb.idl
+IDL_R_SRCS   = msxml2_tlb.idl
+
+RC_SRCS = rsrc.rc
+
+@MAKE_DLL_RULES@
diff --git a/dlls/msxml2/main.c b/dlls/msxml2/main.c
new file mode 100644
index 0000000..a5acf71
--- /dev/null
+++ b/dlls/msxml2/main.c
@@ -0,0 +1,63 @@
+/*
+ * MSXML2 implementation
+ *
+ * Copyright 2010 Alexandre Julliard
+ *
+ * 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
+ */
+
+#include <stdarg.h>
+#include "windef.h"
+#include "winbase.h"
+#include "objbase.h"
+#include "rpcproxy.h"
+
+static HINSTANCE instance;
+
+BOOL WINAPI DllMain(HINSTANCE hinstance, DWORD reason, LPVOID reserved)
+{
+    switch (reason)
+    {
+    case DLL_PROCESS_ATTACH:
+        instance = hinstance;
+        DisableThreadLibraryCalls(hinstance);
+        break;
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *		DllCanUnloadNow (MSXML2.@)
+ */
+HRESULT WINAPI DllCanUnloadNow(void)
+{
+    return S_FALSE;
+}
+
+/***********************************************************************
+ *		DllRegisterServer (MSXML2.@)
+ */
+HRESULT WINAPI DllRegisterServer(void)
+{
+    return __wine_register_resources( instance, NULL );
+}
+
+/***********************************************************************
+ *		DllUnregisterServer (MSXML2.@)
+ */
+HRESULT WINAPI DllUnregisterServer(void)
+{
+    return __wine_unregister_resources( instance, NULL );
+}
diff --git a/dlls/msxml2/msxml2.spec b/dlls/msxml2/msxml2.spec
new file mode 100644
index 0000000..5fd4c28
--- /dev/null
+++ b/dlls/msxml2/msxml2.spec
@@ -0,0 +1,4 @@
+@ stdcall -private DllCanUnloadNow()
+@ stdcall -private DllGetClassObject(ptr ptr ptr) msxml3.DllGetClassObject
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()
diff --git a/dlls/msxml2/msxml2_tlb.idl b/dlls/msxml2/msxml2_tlb.idl
new file mode 100644
index 0000000..9826496
--- /dev/null
+++ b/dlls/msxml2/msxml2_tlb.idl
@@ -0,0 +1,1166 @@
+/*
+ * Copyright (C) 2005 Vijay Kiran Kamuju
+ * Copyright (C) 2008 Alistair Leslie-Hughes
+ * Copyright (C) 2010 Nikolay Sivov for CodeWeavers
+ *
+ * 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
+ */
+
+#include <msxml2did.h>
+#include <idispids.h>
+
+import "unknwn.idl";
+import "objidl.idl";
+import "oaidl.idl";
+
+[
+    uuid(f5078f18-c551-11d3-89b9-0000f81fe221),
+    version(2.6),
+    helpstring("Microsoft XML, v2.6")
+]
+library MSXML2
+{
+
+importlib("stdole2.tlb");
+
+interface IXMLDOMImplementation;
+interface IXMLDOMNode;
+interface IXMLDOMDocumentFragment;
+interface IXMLDOMDocument;
+interface IXMLDOMSchemaCollection;
+interface IXMLDOMDocument2;
+interface IXMLDOMNodeList;
+interface IXMLDOMNamedNodeMap;
+interface IXMLDOMCharacterData;
+interface IXMLDOMAttribute;
+interface IXMLDOMElement;
+interface IXMLDOMText;
+interface IXMLDOMComment;
+interface IXMLDOMProcessingInstruction;
+interface IXMLDOMCDATASection;
+interface IXMLDOMDocumentType;
+interface IXMLDOMNotation;
+interface IXMLDOMEntity;
+interface IXMLDOMEntityReference;
+interface IXMLDOMParseError;
+interface IXTLRuntime;
+interface IXSLTemplate;
+interface IXSLProcessor;
+
+typedef enum tagDOMNodeType
+{
+    NODE_INVALID  		= 0,
+    NODE_ELEMENT  		= 1,
+    NODE_ATTRIBUTE		= 2,
+    NODE_TEXT			= 3,
+    NODE_CDATA_SECTION		= 4,
+    NODE_ENTITY_REFERENCE 	= 5,
+    NODE_ENTITY 		= 6,
+    NODE_PROCESSING_INSTRUCTION = 7,
+    NODE_COMMENT		= 8,
+    NODE_DOCUMENT		= 9,
+    NODE_DOCUMENT_TYPE		= 10,
+    NODE_DOCUMENT_FRAGMENT 	= 11,
+    NODE_NOTATION 		= 12
+} DOMNodeType;
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF80-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNode : IDispatch
+{
+    [propget, id(DISPID_DOM_NODE_NODENAME)]
+    HRESULT nodeName([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_NODE_NODEVALUE)]
+    HRESULT nodeValue([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_DOM_NODE_NODEVALUE)]
+    HRESULT nodeValue([in] VARIANT var1);
+
+    [propget, id(DISPID_DOM_NODE_NODETYPE)]
+    HRESULT nodeType([retval, out] DOMNodeType *domNodeType);
+
+    [propget, id(DISPID_DOM_NODE_PARENTNODE)]
+    HRESULT parentNode([retval, out] IXMLDOMNode **parent);
+
+    [propget, id(DISPID_DOM_NODE_CHILDNODES)]
+    HRESULT childNodes([retval, out] IXMLDOMNodeList **outList);
+
+    [propget, id(DISPID_DOM_NODE_FIRSTCHILD)]
+    HRESULT firstChild([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_LASTCHILD)]
+    HRESULT lastChild([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)]
+    HRESULT previousSibling([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_NEXTSIBLING)]
+    HRESULT nextSibling([retval, out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_DOM_NODE_ATTRIBUTES)]
+    HRESULT attributes([retval, out] IXMLDOMNamedNodeMap **attributeMap);
+
+    [id(DISPID_DOM_NODE_INSERTBEFORE)]
+    HRESULT insertBefore(
+        [in] IXMLDOMNode *newNode,
+        [in] VARIANT var1,
+        [retval, out] IXMLDOMNode **outOldNode);
+
+    [id(DISPID_DOM_NODE_REPLACECHILD)]
+    HRESULT replaceChild(
+        [in] IXMLDOMNode *newNode,
+        [in] IXMLDOMNode *oldNode,
+        [retval, out] IXMLDOMNode **outOldNode);
+
+    [id(DISPID_DOM_NODE_REMOVECHILD)]
+    HRESULT removeChild(
+        [in] IXMLDOMNode *domNode,
+        [retval, out] IXMLDOMNode **oldNode);
+
+    [id(DISPID_DOM_NODE_APPENDCHILD)]
+    HRESULT appendChild(
+        [in] IXMLDOMNode *newNode,
+        [retval, out] IXMLDOMNode **outNewNode);
+
+    [id(DISPID_DOM_NODE_HASCHILDNODES)]
+    HRESULT hasChildNodes(
+        [retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_DOM_NODE_OWNERDOC)]
+    HRESULT ownerDocument([retval, out] IXMLDOMDocument **domDocument);
+
+    [id(DISPID_DOM_NODE_CLONENODE)]
+    HRESULT cloneNode(
+        [in] VARIANT_BOOL pbool,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)]
+    HRESULT nodeTypeString([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_NODE_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLDOM_NODE_TEXT)]
+    HRESULT text([in] BSTR p);
+
+    [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)]
+    HRESULT specified([retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_XMLDOM_NODE_DEFINITION)]
+    HRESULT definition([retval,out] IXMLDOMNode **domNode);
+
+    [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
+    HRESULT nodeTypedValue([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
+    HRESULT nodeTypedValue([in] VARIANT var1);
+
+    [propget, id(DISPID_XMLDOM_NODE_DATATYPE)]
+    HRESULT dataType([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_XMLDOM_NODE_DATATYPE)]
+    HRESULT dataType([in] BSTR p);
+
+    [propget, id(DISPID_XMLDOM_NODE_XML)]
+    HRESULT xml([retval, out] BSTR *p);
+
+    [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)]
+    HRESULT transformNode(
+        [in] IXMLDOMNode *domNode,
+        [retval, out] BSTR *p);
+
+    [id(DISPID_XMLDOM_NODE_SELECTNODES)]
+    HRESULT selectNodes(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNodeList **outList);
+
+    [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)]
+    HRESULT selectSingleNode(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [propget,id(DISPID_XMLDOM_NODE_PARSED)]
+    HRESULT parsed([retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)]
+    HRESULT namespaceURI([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_NODE_PREFIX)]
+    HRESULT prefix([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_NODE_BASENAME)]
+    HRESULT baseName([retval, out] BSTR *p);
+
+    [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)]
+    HRESULT transformNodeToObject(
+        [in] IXMLDOMNode *domNode,
+        [in] VARIANT var1);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF81-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMDocument : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)]
+    HRESULT doctype([retval, out] IXMLDOMDocumentType **docType);
+
+    [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)]
+    HRESULT implementation([retval, out] IXMLDOMImplementation **impl);
+
+    [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
+    HRESULT documentElement([retval, out] IXMLDOMElement **domElement);
+
+    [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
+    HRESULT documentElement([in] IXMLDOMElement *domElement);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)]
+    HRESULT createElement(
+        [in] BSTR p,
+        [retval, out] IXMLDOMElement **domElement);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)]
+    HRESULT createDocumentFragment(
+        [retval, out] IXMLDOMDocumentFragment **docFrag);
+
+    [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)]
+    HRESULT createTextNode(
+        [in] BSTR p,
+        [retval, out] IXMLDOMText **text);
+
+    [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)]
+    HRESULT createComment(
+        [in] BSTR p,
+        [retval, out] IXMLDOMComment **comment);
+
+    [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)]
+    HRESULT createCDATASection(
+        [in] BSTR p,
+        [retval, out] IXMLDOMCDATASection **cdata);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)]
+    HRESULT createProcessingInstruction(
+        [in] BSTR target,
+        [in] BSTR data,
+        [retval, out] IXMLDOMProcessingInstruction **pi);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)]
+    HRESULT createAttribute(
+        [in] BSTR p,
+        [retval, out] IXMLDOMAttribute **attribute);
+
+    [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)]
+    HRESULT createEntityReference(
+        [in] BSTR p,
+        [retval, out] IXMLDOMEntityReference **entityRef);
+
+    [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNodeList **resultList);
+
+    [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)]
+    HRESULT createNode(
+        [in] VARIANT var,
+        [in] BSTR name,
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)]
+    HRESULT nodeFromID(
+        [in] BSTR id,
+        [retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_DOCUMENT_LOAD)]
+    HRESULT load(
+        [in] VARIANT var1,
+        [retval, out] VARIANT_BOOL *pbool);
+
+    [propget, id(DISPID_READYSTATE)]
+    HRESULT readyState([retval, out] LONG *value);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)]
+    HRESULT parseError([retval, out] IXMLDOMParseError **err);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_URL)]
+    HRESULT url([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
+    HRESULT async([retval, out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
+    HRESULT async([in] VARIANT_BOOL pbool);
+
+    [id(DISPID_XMLDOM_DOCUMENT_ABORT)]
+    HRESULT abort();
+
+    [id(DISPID_XMLDOM_DOCUMENT_LOADXML)]
+    HRESULT loadXML(
+        [in] BSTR p,
+        [out, retval] VARIANT_BOOL *pbool);
+
+    [id(DISPID_XMLDOM_DOCUMENT_SAVE)]
+    HRESULT save(
+        [in] VARIANT var1);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
+    HRESULT validateOnParse([retval, out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
+    HRESULT validateOnParse([in] VARIANT_BOOL pbool);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
+    HRESULT resolveExternals([retval,out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
+    HRESULT resolveExternals([in] VARIANT_BOOL pbool);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
+    HRESULT preserveWhiteSpace([retval,out] VARIANT_BOOL *pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
+    HRESULT preserveWhiteSpace([in] VARIANT_BOOL pbool);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange([in] VARIANT var1);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([in] VARIANT var1);
+
+    [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)]
+    HRESULT ontransformnode([in] VARIANT var1);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (373984c8-b845-449b-91e7-45ac83036ade)
+]
+interface IXMLDOMSchemaCollection : IDispatch
+{
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADD)]
+    HRESULT add(
+        [in] BSTR uri,
+        [in] VARIANT var);
+
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_GET)]
+    HRESULT get(
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_REMOVE)]
+    HRESULT remove(
+        [in] BSTR uri);
+
+    [propget, id(DISPID_XMLDOM_SCHEMACOLLECTION_LENGTH)]
+    HRESULT length(
+        [retval, out] LONG *length);
+
+    [propget, id(DISPID_VALUE)]
+    HRESULT namespaceURI([in] LONG index, [out, retval] BSTR *len);
+
+    [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADDCOLLECTION)]
+    HRESULT addCollection(
+        [in] IXMLDOMSchemaCollection *otherCollection);
+
+    [propget, id(DISPID_NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF95-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMDocument2 : IXMLDOMDocument
+{
+    [propget, id(DISPID_XMLDOM_DOCUMENT2_NAMESPACES)]
+    HRESULT namespaces([retval, out] IXMLDOMSchemaCollection **schemaCollection);
+
+    [propget, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)]
+    HRESULT schemas([retval, out] VARIANT *var1);
+
+    [propputref, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)]
+    HRESULT schemas([in] VARIANT var1);
+
+    [id(DISPID_XMLDOM_DOCUMENT2_VALIDATE)]
+    HRESULT validate(
+        [retval, out] IXMLDOMParseError **err);
+
+    [id(DISPID_XMLDOM_DOCUMENT2_SETPROPERTY)]
+    HRESULT setProperty(
+        [in] BSTR p,
+        [in] VARIANT var);
+
+    [id(DISPID_XMLDOM_DOCUMENT2_GETPROPERTY)]
+    HRESULT getProperty(
+        [in] BSTR p,
+        [retval, out] VARIANT *var);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF82-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNodeList : IDispatch
+{
+    [propget, id(DISPID_VALUE)]
+    HRESULT item([in] LONG lIndex, [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
+    HRESULT length([retval, out] LONG *lLength);
+
+    [id(DISPID_XMLDOM_NODELIST_NEXTNODE)]
+    HRESULT nextNode(
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NODELIST_RESET)]
+    HRESULT reset();
+
+    [propget, id(DISPID_NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (AA634FC7-5888-44a7-A257-3A47150D3A0E)
+]
+interface IXMLDOMSelection : IXMLDOMNodeList
+{
+    [propget, id(DISPID_XMLDOM_SELECTION_EXPR)]
+    HRESULT expr([retval, out] BSTR *p);
+
+    [propput, id(DISPID_XMLDOM_SELECTION_EXPR)]
+    HRESULT expr([in] BSTR p);
+
+    [propget, id(DISPID_XMLDOM_SELECTION_CONTEXT)]
+    HRESULT context([retval, out] IXMLDOMNode **ppNode);
+
+    [propputref, id(DISPID_XMLDOM_SELECTION_CONTEXT)]
+    HRESULT context([in] IXMLDOMNode * pNode);
+
+    [id(DISPID_XMLDOM_SELECTION_PEEKNODE)]
+    HRESULT peekNode(
+        [retval, out] IXMLDOMNode **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_MATCHES)]
+    HRESULT matches(
+        [in] IXMLDOMNode *pNode,
+        [retval, out] IXMLDOMNode **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_REMOVENEXT)]
+    HRESULT removeNext(
+        [retval, out] IXMLDOMNode **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_REMOVEALL)]
+    HRESULT removeAll();
+
+    [id(DISPID_XMLDOM_SELECTION_CLONE)]
+    HRESULT clone(
+        [retval, out] IXMLDOMSelection **ppNode);
+
+    [id(DISPID_XMLDOM_SELECTION_GETPROPERTY)]
+    HRESULT getProperty(
+        [in] BSTR p,
+        [retval, out] VARIANT * var);
+
+    [id(DISPID_XMLDOM_SELECTION_SETPROPERTY)]
+    HRESULT setProperty(
+        [in] BSTR p,
+        [in] VARIANT var);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF83-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNamedNodeMap : IDispatch
+{
+    [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)]
+    HRESULT getNamedItem(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)]
+    HRESULT setNamedItem(
+        [in] IXMLDOMNode *newNode,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)]
+    HRESULT removeNamedItem(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_VALUE)]
+    HRESULT item([in] LONG lIndex, [retval, out] IXMLDOMNode **outNode);
+
+    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
+    HRESULT length([retval, out] LONG *lLength);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)]
+    HRESULT getQualifiedItem(
+        [in] BSTR name,
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)]
+    HRESULT removeQualifiedItem(
+        [in] BSTR name,
+        [in] BSTR uri,
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)]
+    HRESULT nextNode(
+        [retval, out] IXMLDOMNode **outNode);
+
+    [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)]
+    HRESULT reset();
+
+    [propget, id(DISPID_NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (3efaa413-272f-11d2-836f-0000f87a7782)
+]
+interface IXMLDOMDocumentFragment : IXMLDOMNode
+{
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF84-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMCharacterData : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_DATA_DATA)]
+    HRESULT data([retval, out] BSTR *p);
+
+    [propput, id(DISPID_DOM_DATA_DATA)]
+    HRESULT data([in] BSTR data);
+
+    [propget, id(DISPID_DOM_DATA_LENGTH)]
+    HRESULT length([retval, out] LONG *len);
+
+    [id(DISPID_DOM_DATA_SUBSTRING)]
+    HRESULT substringData(
+        [in] LONG offset,
+        [in] LONG count,
+        [retval, out] BSTR *p);
+
+    [id(DISPID_DOM_DATA_APPEND)]
+    HRESULT appendData(
+        [in] BSTR p);
+
+    [id(DISPID_DOM_DATA_INSERT)]
+    HRESULT insertData(
+        [in] LONG offset,
+        [in] BSTR p);
+
+    [id(DISPID_DOM_DATA_DELETE)]
+    HRESULT deleteData(
+        [in] LONG offset,
+        [in] LONG count);
+
+    [id(DISPID_DOM_DATA_REPLACE)]
+    HRESULT replaceData(
+        [in] LONG offset,
+        [in] LONG count,
+        [in] BSTR p);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF85-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMAttribute : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_ATTRIBUTE_GETNAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ATTRIBUTE_VALUE)]
+    HRESULT value([retval, out] VARIANT *var1);
+
+    [propput, id(DISPID_DOM_ATTRIBUTE_VALUE)]
+    HRESULT value([in] VARIANT var1);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF86-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMElement : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)]
+    HRESULT tagName([retval, out] BSTR *p);
+
+    [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR p,
+        [retval, out] VARIANT *var);
+
+    [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR p,
+        [in] VARIANT var);
+
+    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR p);
+
+    [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)]
+    HRESULT getAttributeNode(
+        [in] BSTR p,
+        [retval, out] IXMLDOMAttribute **attributeNode);
+
+    [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)]
+    HRESULT setAttributeNode(
+        [in] IXMLDOMAttribute *domAttribute,
+        [retval, out] IXMLDOMAttribute **attributeNode);
+
+    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)]
+    HRESULT removeAttributeNode(
+        [in] IXMLDOMAttribute *domAttribute,
+        [retval, out] IXMLDOMAttribute **attributeNode);
+
+    [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName(
+        [in] BSTR p,
+        [retval, out] IXMLDOMNodeList **resultList);
+
+    [id(DISPID_DOM_ELEMENT_NORMALIZE)]
+    HRESULT normalize();
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF87-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMText : IXMLDOMCharacterData
+{
+    [id(DISPID_DOM_TEXT_SPLITTEXT)]
+    HRESULT splitText(
+        [in] LONG offset,
+        [retval, out] IXMLDOMText **txtNode);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF88-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMComment : IXMLDOMCharacterData
+{
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF89-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMProcessingInstruction : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_PI_TARGET)]
+    HRESULT target([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_PI_DATA)]
+    HRESULT data([retval, out] BSTR *p);
+
+    [propput, id(DISPID_DOM_PI_DATA)]
+    HRESULT data([in] BSTR p);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF8A-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMCDATASection : IXMLDOMText
+{
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF8B-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMDocumentType : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)]
+    HRESULT entities([retval, out] IXMLDOMNamedNodeMap **entityMap);
+
+    [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)]
+    HRESULT notations([retval, out] IXMLDOMNamedNodeMap **notationMap);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF8C-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMNotation : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_NOTATION_PUBLICID)]
+    HRESULT publicId([retval, out] VARIANT *id);
+
+    [propget, id(DISPID_DOM_NOTATION_SYSTEMID)]
+    HRESULT systemId([retval, out] VARIANT *id);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF8D-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMEntity : IXMLDOMNode
+{
+    [propget, id(DISPID_DOM_ENTITY_PUBLICID)]
+    HRESULT publicId([retval, out] VARIANT *id1);
+
+    [propget, id(DISPID_DOM_ENTITY_SYSTEMID)]
+    HRESULT systemId([retval, out] VARIANT *id1);
+
+    [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME)]
+    HRESULT notationName([retval, out] BSTR *p);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF8E-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMEntityReference : IXMLDOMNode
+{
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF8F-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXMLDOMImplementation : IDispatch
+{
+    [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)]
+    HRESULT hasFeature(
+        [in] BSTR feature,
+        [in] BSTR version,
+        [retval, out] VARIANT_BOOL *pbool);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (3efaa425-272f-11d2-836f-0000f87a7782)
+]
+interface IXTLRuntime : IXMLDOMNode
+{
+    [id(DISPID_XTLRUNTIME_UNIQUEID)]
+    HRESULT uniqueID(
+        [in]IXMLDOMNode *pNode,
+        [retval, out]LONG *pID);
+
+    [id(DISPID_XTLRUNTIME_DEPTH)]
+    HRESULT depth(
+        [in] IXMLDOMNode *pNode,
+        [retval, out]LONG * pDepth);
+
+    [id(DISPID_XTLRUNTIME_CHILDNUMBER)]
+    HRESULT childNumber(
+        [in]IXMLDOMNode *pNode,
+        [retval, out] LONG *pNumber);
+
+    [id(DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER)]
+    HRESULT ancestorChildNumber(
+        [in]BSTR bstr,
+        [in]IXMLDOMNode *pNode,
+        [retval, out]LONG *pNumber);
+
+    [id(DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER)]
+    HRESULT absoluteChildNumber(
+        [in]IXMLDOMNode *pNode,
+        [retval, out]LONG *pNumber);
+
+    [id(DISPID_XTLRUNTIME_FORMATINDEX)]
+    HRESULT formatIndex(
+        [in] LONG lIndex,
+        [in] BSTR bstr,
+        [retval, out]BSTR *pbstr);
+
+    [id(DISPID_XTLRUNTIME_FORMATNUMBER)]
+    HRESULT formatNumber(
+        [in] double dblNumber,
+        [in] BSTR bstr,
+        [retval, out]BSTR *pbstr);
+
+    [id(DISPID_XTLRUNTIME_FORMATDATE)]
+    HRESULT formatDate(
+        [in] VARIANT var1,
+        [in] BSTR bstr,
+        [optional, in] VARIANT var2,
+        [retval, out]BSTR *pbstr);
+
+    [id(DISPID_XTLRUNTIME_FORMATTIME)]
+    HRESULT formatTime(
+        [in] VARIANT var1,
+        [in] BSTR bstr,
+        [optional, in] VARIANT var2,
+        [retval, out]BSTR *pbstr);
+
+}
+
+[
+    uuid(3efaa427-272f-11d2-836f-0000f87a7782)
+]
+dispinterface XMLDOMDocumentEvents
+{
+    properties:
+    methods:
+    [id (DISPID_XMLDOMEVENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable();
+
+    [id (DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange();
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF92-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXSLProcessor : IDispatch
+{
+    [propput, id(DISPID_XMLDOM_PROCESSOR_INPUT)]
+    HRESULT input([in] VARIANT var);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_INPUT)]
+    HRESULT input([retval, out] VARIANT *var);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_XSLTEMPLATE)]
+    HRESULT ownerTemplate([retval, out] IXSLTemplate **ppTemplate);
+
+    [id(DISPID_XMLDOM_PROCESSOR_SETSTARTMODE)]
+    HRESULT setStartMode(
+        [in] BSTR p,
+        [in, defaultvalue("")] BSTR uri);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODE)]
+    HRESULT startMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODEURI)]
+    HRESULT startModeURI([retval, out] BSTR *uri);
+
+    [propput, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)]
+    HRESULT output([in] VARIANT var);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)]
+    HRESULT output([retval, out] VARIANT *var);
+
+    [id(DISPID_XMLDOM_PROCESSOR_TRANSFORM)]
+    HRESULT transform(
+        [retval, out] VARIANT_BOOL *pbool);
+
+    [id(DISPID_XMLDOM_PROCESSOR_RESET)]
+    HRESULT reset();
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_READYSTATE)]
+    HRESULT readyState([retval, out] LONG *pstate);
+
+    [id(DISPID_XMLDOM_PROCESSOR_ADDPARAMETER)]
+    HRESULT addParameter(
+        [in] BSTR p,
+        [in] VARIANT var,
+        [in, defaultvalue("")] BSTR uri);
+
+    [id(DISPID_XMLDOM_PROCESSOR_ADDOBJECT)]
+    HRESULT addObject(
+        [in] IDispatch* obj,
+        [in] BSTR uri);
+
+    [propget, id(DISPID_XMLDOM_PROCESSOR_STYLESHEET)]
+    HRESULT stylesheet([retval, out] IXMLDOMNode **node);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (2933BF93-7B36-11d2-B20E-00C04F983E60)
+]
+interface IXSLTemplate : IDispatch
+{
+    [propputref, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)]
+    HRESULT stylesheet([in] IXMLDOMNode *node);
+
+    [propget, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)]
+    HRESULT stylesheet([retval, out] IXMLDOMNode **node);
+
+    [id(DISPID_XMLDOM_TEMPLATE_CREATEPROCESSOR)]
+    HRESULT createProcessor(
+        [retval, out] IXSLProcessor **ppProcessor);
+}
+
+[
+    object,
+    uuid(ED8C108D-4349-11D2-91A4-00C04F7969E8),
+    odl,
+    dual,
+    oleautomation,
+    pointer_default(unique)
+]
+interface IXMLHTTPRequest : IDispatch
+{
+    [id(1)]
+    HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, [in, optional] VARIANT varAsync,
+                 [in,optional] VARIANT username, [in,optional] VARIANT password);
+
+    [id(2)]
+    HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue);
+
+    [id(3)]
+    HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR * value);
+
+    [id(4)]
+    HRESULT getAllResponseHeaders([out, retval] BSTR * pbstrHeaders);
+
+    [id(5)]
+    HRESULT send([in, optional] VARIANT body);
+
+    [id(6)]
+    HRESULT abort();
+
+    [propget, id(7)]
+    HRESULT status([out, retval] LONG *pStatus);
+
+    [propget, id(8)]
+    HRESULT statusText([out, retval] BSTR *pStatus);
+
+    [propget, id(9)]
+    HRESULT responseXML([out, retval] IDispatch **pBody);
+
+    [propget, id(10)]
+    HRESULT responseText([out, retval] BSTR *pBody);
+
+    [propget, id(11)]
+    HRESULT responseBody([out, retval] VARIANT *pBody);
+
+    [propget, id(12)]
+    HRESULT responseStream([out, retval] VARIANT *pBody);
+
+    [propget, id(13)]
+    HRESULT readyState([out, retval] LONG *pState);
+
+    [propput, id(14)]
+    HRESULT onreadystatechange([in] IDispatch *pReadyStateSink);
+}
+
+[
+local,
+object,
+dual,
+oleautomation,
+uuid (3efaa426-272f-11d2-836f-0000f87a7782)
+]
+interface IXMLDOMParseError : IDispatch
+{
+    [propget, id(DISPID_VALUE)]
+    HRESULT errorCode([retval, out] LONG *errCode);
+
+    [propget, id(DISPID_DOM_ERROR_URL)]
+    HRESULT url([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_REASON)]
+    HRESULT reason([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_SRCTEXT)]
+    HRESULT srcText([retval, out] BSTR *p);
+
+    [propget, id(DISPID_DOM_ERROR_LINE)]
+    HRESULT line([retval, out] LONG *lineNo);
+
+    [propget, id(DISPID_DOM_ERROR_LINEPOS)]
+    HRESULT linepos([retval, out] LONG * linePos);
+
+    [propget, id(DISPID_DOM_ERROR_FILEPOS)]
+    HRESULT filepos([retval, out] LONG * filePos);
+}
+
+[
+    uuid(F6D90F11-9C73-11D3-B32E-00C04F990BB4)
+]
+coclass DOMDocument
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    helpstring("XML DOM Document 2.6"),
+    progid("Msxml2.DOMDocument.2.6"),
+    vi_progid("Msxml2.DOMDocument"),
+    threading(both),
+    uuid(f5078f1b-c551-11d3-89b9-0000f81fe221)
+]
+coclass DOMDocument26
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    uuid(F6D90F12-9C73-11D3-B32E-00C04F990BB4)
+]
+coclass FreeThreadedDOMDocument
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    helpstring("Free Threaded XML DOM Document 2.6"),
+    progid("Msxml2.FreeThreadedDOMDocument.2.6"),
+    vi_progid("Msxml2.FreeThreadedDOMDocument"),
+    threading(both),
+    uuid(f5078f1c-c551-11d3-89b9-0000f81fe221)
+]
+coclass FreeThreadedDOMDocument26
+{
+    [default] interface IXMLDOMDocument2;
+    [default, source] dispinterface XMLDOMDocumentEvents;
+}
+
+[
+    uuid(f6d90f16-9c73-11d3-b32e-00c04f990bb4)
+]
+coclass XMLHTTP
+{
+    [default] interface IXMLHTTPRequest;
+}
+
+[
+    helpstring("XML HTTP 2.6"),
+    progid("Msxml2.XMLHTTP.2.6"),
+    vi_progid("Msxml2.XMLHTTP"),
+    threading(apartment),
+    uuid(f5078f1e-c551-11d3-89b9-0000f81fe221)
+]
+coclass XMLHTTP26
+{
+    [default] interface IXMLHTTPRequest;
+}
+
+[
+    uuid(373984c9-b845-449b-91e7-45ac83036ade)
+]
+coclass XMLSchemaCache
+{
+    [default] interface IXMLDOMSchemaCollection;
+}
+
+[
+    helpstring("XML Schema Cache 2.6"),
+    progid("Msxml2.XMLSchemaCache.2.6"),
+    vi_progid("Msxml2.XMLSchemaCache"),
+    threading(both),
+    uuid(f5078f1d-c551-11d3-89b9-0000f81fe221)
+]
+coclass XMLSchemaCache26
+{
+    [default] interface IXMLDOMSchemaCollection;
+}
+
+[
+    uuid(2933BF94-7B36-11d2-B20E-00C04F983E60)
+]
+coclass XSLTemplate
+{
+    [default] interface IXSLTemplate;
+}
+
+[
+    helpstring("XSL Template 2.6"),
+    progid("Msxml2.XSLTemplate.2.6"),
+    vi_progid("Msxml2.XSLTemplate"),
+    threading(both),
+    uuid(f5078f21-c551-11d3-89b9-0000f81fe221)
+]
+coclass XSLTemplate26
+{
+    [default] interface IXSLTemplate;
+}
+
+} /* Library MSXML */
diff --git a/dlls/msxml2/rsrc.rc b/dlls/msxml2/rsrc.rc
new file mode 100644
index 0000000..087bec1
--- /dev/null
+++ b/dlls/msxml2/rsrc.rc
@@ -0,0 +1,22 @@
+/*
+ * Resources for msxml2
+ *
+ * Copyright 2010 Alexandre Julliard
+ *
+ * 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
+ */
+
+/* @makedep: msxml2_tlb.tlb */
+1 TYPELIB msxml2_tlb.tlb
diff --git a/dlls/msxml3/factory.c b/dlls/msxml3/factory.c
index 8ad1abc..6fbf464 100644
--- a/dlls/msxml3/factory.c
+++ b/dlls/msxml3/factory.c
@@ -218,6 +218,7 @@
 
     if( IsEqualCLSID( rclsid, &CLSID_DOMDocument )  ||  /* Version indep. v 2.x */
         IsEqualCLSID( rclsid, &CLSID_DOMDocument2 ) ||  /* Version indep. v 3.0 */
+        IsEqualCLSID( rclsid, &CLSID_DOMDocument26 )||  /* Version dep.   v 2.6 */
         IsEqualCLSID( rclsid, &CLSID_DOMDocument30 )||  /* Version dep.   v 3.0 */
         IsEqualCLSID( rclsid, &CLSID_DOMDocument40 )||  /* Version dep.   v 4.0 */
         IsEqualCLSID( rclsid, &CLSID_DOMDocument60 ))   /* Version dep.   v 6.0 */
@@ -225,6 +226,7 @@
         return DOMClassFactory_Create(rclsid, riid, ppv, DOMDocument_create);
     }
     else if( IsEqualCLSID( rclsid, &CLSID_XMLSchemaCache )   ||
+             IsEqualCLSID( rclsid, &CLSID_XMLSchemaCache26 ) ||
              IsEqualCLSID( rclsid, &CLSID_XMLSchemaCache30 ) ||
              IsEqualCLSID( rclsid, &CLSID_XMLSchemaCache40 ) ||
              IsEqualCLSID( rclsid, &CLSID_XMLSchemaCache60 ))
@@ -237,6 +239,7 @@
     }
     else if( IsEqualCLSID( rclsid, &CLSID_DOMFreeThreadedDocument )   ||   /* Version indep. v 2.x */
              IsEqualCLSID( rclsid, &CLSID_FreeThreadedDOMDocument )   ||
+             IsEqualCLSID( rclsid, &CLSID_FreeThreadedDOMDocument26 ) ||
              IsEqualCLSID( rclsid, &CLSID_FreeThreadedDOMDocument30 ) ||
              IsEqualCLSID( rclsid, &CLSID_FreeThreadedDOMDocument40 ) ||
              IsEqualCLSID( rclsid, &CLSID_FreeThreadedDOMDocument60 ))
diff --git a/dlls/msxml3/regsvr.c b/dlls/msxml3/regsvr.c
index bbefedd..50da4f2 100644
--- a/dlls/msxml3/regsvr.c
+++ b/dlls/msxml3/regsvr.c
@@ -490,14 +490,6 @@
         "Microsoft.FreeThreadedXMLDOM.1.0",
         "1.0"
     },
-    {   &CLSID_FreeThreadedDOMDocument26,
-        "Free Threaded XML DOM Document 2.6",
-        NULL,
-        "msxml3.dll",
-        "Both",
-        "Microsoft.FreeThreadedXMLDOM.1.0",
-        "1.0"
-     },
     {   &CLSID_FreeThreadedDOMDocument30,
         "Free Threaded XML DOM Document 3.0",
         NULL,
@@ -506,14 +498,6 @@
         "Microsoft.FreeThreadedDOMDocument.1.0",
         "1.0"
      },
-    {   &CLSID_XMLHTTP26,
-	"XML HTTP 2.6",
-	NULL,
-	"msxml3.dll",
-	"Apartment",
-	"Msxml2.XMLHTTP.2.6",
-	"2.6"
-    },
     {   &CLSID_XMLHTTP30,
 	"XML HTTP 3.0",
 	NULL,
@@ -537,14 +521,6 @@
 	"Msxml2.XMLSchemaCache",
         "3.0"
     },
-    {   &CLSID_XMLSchemaCache26,
-    "XML Schema Cache 2.6",
-    NULL,
-    "msxml3.dll",
-    "Both",
-    "Msxml2.XMLSchemaCache",
-    "2.6"
-    },
     {   &CLSID_XMLSchemaCache30,
 	"XML Schema Cache 3.0",
 	NULL,
@@ -625,21 +601,11 @@
         &CLSID_DOMDocument30,
         NULL
     },
-    {   "MSXML.FreeThreadedDOMDocument26",
-    "Free threaded XML DOM Document 2.6",
-    &CLSID_FreeThreadedDOMDocument26,
-    NULL
-    },
     {   "MSXML.FreeThreadedDOMDocument30",
     "Free threaded XML DOM Document 3.0",
     &CLSID_FreeThreadedDOMDocument30,
     NULL
     },
-    {   "Msxml2.XMLHTTP.2.6",
-	"XML HTTP 2.6",
-	&CLSID_XMLHTTP26,
-	NULL
-    },
     {   "Msxml2.XMLHTTP.3.0",
 	"XML HTTP 3.0",
 	&CLSID_XMLHTTP30,
@@ -655,11 +621,6 @@
         &CLSID_XMLSchemaCache,
         "Msxml2.XMLSchemaCache.3.0"
     },
-    {   "Msxml2.XMLSchemaCache.2.6",
-        "XML Schema Cache 2.6",
-        &CLSID_XMLSchemaCache26,
-        "Msxml2.XMLSchemaCache.2.6"
-    },
     {   "Msxml2.XMLSchemaCache.3.0",
         "XML Schema Cache 3.0",
         &CLSID_XMLSchemaCache30,
diff --git a/tools/wine.inf.in b/tools/wine.inf.in
index e65162d..b2667af 100644
--- a/tools/wine.inf.in
+++ b/tools/wine.inf.in
@@ -2528,6 +2528,7 @@
 11,,msisip.dll,1
 11,,mstask.dll,1
 11,,msxml.dll,1
+11,,msxml2.dll,1
 11,,msxml3.dll,1
 11,,msxml4.dll,1
 11,,msxml6.dll,1
