diff --git a/configure b/configure
index 0655e3b9904b2924697b698cb6efca151536a9c8..4e80ea12b694dd08c8b117aca6c0de0851049056 100755
--- a/configure
+++ b/configure
@@ -688,10 +688,6 @@ DBUS_LIBS
 DBUS_CFLAGS
 INOTIFY_LIBS
 INOTIFY_CFLAGS
-XSLT_LIBS
-XSLT_CFLAGS
-XML2_LIBS
-XML2_CFLAGS
 PCAP_LIBS
 X_EXTRA_LIBS
 X_LIBS
@@ -901,12 +897,10 @@ with_xfixes
 with_xinerama
 with_xinput
 with_xinput2
-with_xml
 with_xrandr
 with_xrender
 with_xshape
 with_xshm
-with_xslt
 with_xxf86vm
 with_wine_tools
 with_wine64
@@ -1945,10 +1939,6 @@ XSLT_PE_LIBS
 ZLIB_PE_CFLAGS
 ZLIB_PE_LIBS
 XMKMF
-XML2_CFLAGS
-XML2_LIBS
-XSLT_CFLAGS
-XSLT_LIBS
 INOTIFY_CFLAGS
 INOTIFY_LIBS
 DBUS_CFLAGS
@@ -2694,12 +2684,10 @@ Optional Packages:
   --without-xinerama      do not use Xinerama (legacy multi-monitor support)
   --without-xinput        do not use the Xinput extension
   --without-xinput2       do not use the Xinput 2 extension
-  --without-xml           do not use XML
   --without-xrandr        do not use Xrandr (multi-monitor support)
   --without-xrender       do not use the Xrender extension
   --without-xshape        do not use the Xshape extension
   --without-xshm          do not use XShm (shared memory extension)
-  --without-xslt          do not use XSLT
   --without-xxf86vm       do not use XFree video mode extension
   --with-wine-tools=DIR   use Wine tools from directory DIR
   --with-wine64=DIR       use the 64-bit Wine in DIR for a Wow64 build
@@ -2750,10 +2738,6 @@ Some influential environment variables:
   ZLIB_PE_LIBS
               Linker flags for the PE zlib, overriding the bundled version
   XMKMF       Path to xmkmf, Makefile generator for X Window System
-  XML2_CFLAGS C compiler flags for libxml-2.0, overriding pkg-config
-  XML2_LIBS   Linker flags for libxml-2.0, overriding pkg-config
-  XSLT_CFLAGS C compiler flags for libxslt, overriding pkg-config
-  XSLT_LIBS   Linker flags for libxslt, overriding pkg-config
   INOTIFY_CFLAGS
               C compiler flags for libinotify, overriding pkg-config
   INOTIFY_LIBS
@@ -4296,12 +4280,6 @@ if test "${with_xinput2+set}" = set; then :
 fi
 
 
-# Check whether --with-xml was given.
-if test "${with_xml+set}" = set; then :
-  withval=$with_xml;
-fi
-
-
 # Check whether --with-xrandr was given.
 if test "${with_xrandr+set}" = set; then :
   withval=$with_xrandr; if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_Xrandr_h=no; fi
@@ -4326,12 +4304,6 @@ if test "${with_xshm+set}" = set; then :
 fi
 
 
-# Check whether --with-xslt was given.
-if test "${with_xslt+set}" = set; then :
-  withval=$with_xslt;
-fi
-
-
 # Check whether --with-xxf86vm was given.
 if test "${with_xxf86vm+set}" = set; then :
   withval=$with_xxf86vm; if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_xf86vmode_h=no; ac_cv_header_X11_extensions_xf86vmproto_h=no; fi
@@ -12935,428 +12907,6 @@ esac
 enable_wpcap=${enable_wpcap:-no}
 fi
 
-
-if test "x$with_xml" != "xno"
-then
-    if ${XML2_CFLAGS:+false} :; then :
-  if ${PKG_CONFIG+:} false; then :
-  XML2_CFLAGS=`$PKG_CONFIG --cflags libxml-2.0 2>/dev/null`
-fi
-fi
-test "$cross_compiling" = yes || XML2_CFLAGS=${XML2_CFLAGS:-`${XML2_CONFIG:-xml2-config} --cflags 2>/dev/null`}
-if ${XML2_LIBS:+false} :; then :
-  if ${PKG_CONFIG+:} false; then :
-  XML2_LIBS=`$PKG_CONFIG --libs libxml-2.0 2>/dev/null`
-fi
-fi
-test "$cross_compiling" = yes || XML2_LIBS=${XML2_LIBS:-`${XML2_CONFIG:-xml2-config} --libs 2>/dev/null`}
-XML2_LIBS=${XML2_LIBS:-"-lxml2"}
-$as_echo "$as_me:${as_lineno-$LINENO}: libxml-2.0 cflags: $XML2_CFLAGS" >&5
-$as_echo "$as_me:${as_lineno-$LINENO}: libxml-2.0 libs: $XML2_LIBS" >&5
-ac_save_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $XML2_CFLAGS"
-for ac_header in libxml/parser.h libxml/xmlsave.h libxml/SAX2.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-        if test "$ac_cv_header_libxml_parser_h" = "yes" -a "$ac_cv_header_libxml_xmlsave_h" = "yes" -a "$ac_cv_header_libxml_SAX2_h" = "yes"
-        then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlParseMemory in -lxml2" >&5
-$as_echo_n "checking for xmlParseMemory in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlParseMemory+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lxml2 $XML2_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xmlParseMemory ();
-int
-main ()
-{
-return xmlParseMemory ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_xml2_xmlParseMemory=yes
-else
-  ac_cv_lib_xml2_xmlParseMemory=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlParseMemory" >&5
-$as_echo "$ac_cv_lib_xml2_xmlParseMemory" >&6; }
-if test "x$ac_cv_lib_xml2_xmlParseMemory" = xyes; then :
-
-$as_echo "#define HAVE_LIBXML2 1" >>confdefs.h
-
-else
-  XML2_LIBS=""
-fi
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlReadMemory in -lxml2" >&5
-$as_echo_n "checking for xmlReadMemory in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlReadMemory+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lxml2 $XML2_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xmlReadMemory ();
-int
-main ()
-{
-return xmlReadMemory ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_xml2_xmlReadMemory=yes
-else
-  ac_cv_lib_xml2_xmlReadMemory=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlReadMemory" >&5
-$as_echo "$ac_cv_lib_xml2_xmlReadMemory" >&6; }
-if test "x$ac_cv_lib_xml2_xmlReadMemory" = xyes; then :
-
-$as_echo "#define HAVE_XMLREADMEMORY 1" >>confdefs.h
-
-fi
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlNewDocPI in -lxml2" >&5
-$as_echo_n "checking for xmlNewDocPI in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlNewDocPI+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lxml2 $XML2_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xmlNewDocPI ();
-int
-main ()
-{
-return xmlNewDocPI ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_xml2_xmlNewDocPI=yes
-else
-  ac_cv_lib_xml2_xmlNewDocPI=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlNewDocPI" >&5
-$as_echo "$ac_cv_lib_xml2_xmlNewDocPI" >&6; }
-if test "x$ac_cv_lib_xml2_xmlNewDocPI" = xyes; then :
-
-$as_echo "#define HAVE_XMLNEWDOCPI 1" >>confdefs.h
-
-fi
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlSchemaSetParserStructuredErrors in -lxml2" >&5
-$as_echo_n "checking for xmlSchemaSetParserStructuredErrors in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlSchemaSetParserStructuredErrors+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lxml2 $XML2_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xmlSchemaSetParserStructuredErrors ();
-int
-main ()
-{
-return xmlSchemaSetParserStructuredErrors ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_xml2_xmlSchemaSetParserStructuredErrors=yes
-else
-  ac_cv_lib_xml2_xmlSchemaSetParserStructuredErrors=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlSchemaSetParserStructuredErrors" >&5
-$as_echo "$ac_cv_lib_xml2_xmlSchemaSetParserStructuredErrors" >&6; }
-if test "x$ac_cv_lib_xml2_xmlSchemaSetParserStructuredErrors" = xyes; then :
-
-$as_echo "#define HAVE_XMLSCHEMASSETPARSERSTRUCTUREDERRORS 1" >>confdefs.h
-
-fi
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlSchemaSetValidStructuredErrors in -lxml2" >&5
-$as_echo_n "checking for xmlSchemaSetValidStructuredErrors in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlSchemaSetValidStructuredErrors+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lxml2 $XML2_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xmlSchemaSetValidStructuredErrors ();
-int
-main ()
-{
-return xmlSchemaSetValidStructuredErrors ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_xml2_xmlSchemaSetValidStructuredErrors=yes
-else
-  ac_cv_lib_xml2_xmlSchemaSetValidStructuredErrors=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlSchemaSetValidStructuredErrors" >&5
-$as_echo "$ac_cv_lib_xml2_xmlSchemaSetValidStructuredErrors" >&6; }
-if test "x$ac_cv_lib_xml2_xmlSchemaSetValidStructuredErrors" = xyes; then :
-
-$as_echo "#define HAVE_XMLSCHEMASSETVALIDSTRUCTUREDERRORS 1" >>confdefs.h
-
-fi
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlFirstElementChild in -lxml2" >&5
-$as_echo_n "checking for xmlFirstElementChild in -lxml2... " >&6; }
-if ${ac_cv_lib_xml2_xmlFirstElementChild+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lxml2 $XML2_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xmlFirstElementChild ();
-int
-main ()
-{
-return xmlFirstElementChild ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_xml2_xmlFirstElementChild=yes
-else
-  ac_cv_lib_xml2_xmlFirstElementChild=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlFirstElementChild" >&5
-$as_echo "$ac_cv_lib_xml2_xmlFirstElementChild" >&6; }
-if test "x$ac_cv_lib_xml2_xmlFirstElementChild" = xyes; then :
-
-$as_echo "#define HAVE_XMLFIRSTELEMENTCHILD 1" >>confdefs.h
-
-fi
-
-            ac_fn_c_check_type "$LINENO" "xmlDocProperties" "ac_cv_type_xmlDocProperties" "#include <libxml/tree.h>
-"
-if test "x$ac_cv_type_xmlDocProperties" = xyes; then :
-
-$as_echo "#define HAVE_XMLDOC_PROPERTIES 1" >>confdefs.h
-
-fi
-
-        else
-            XML2_CFLAGS=""
-            XML2_LIBS=""
-        fi
-CPPFLAGS=$ac_save_CPPFLAGS
-
-fi
-if test "$ac_cv_lib_xml2_xmlParseMemory" != "yes"; then :
-  case "x$with_xml" in
-  x)   as_fn_append wine_warnings "|libxml2 ${notice_platform}development files not found (or too old), XML won't be supported." ;;
-  xno) ;;
-  *)   as_fn_error $? "libxml2 ${notice_platform}development files not found (or too old), XML won't be supported.
-This is an error since --with-xml was requested." "$LINENO" 5 ;;
-esac
-
-fi
-
-if test "x$with_xslt" != "xno"
-then
-    if ${XSLT_CFLAGS:+false} :; then :
-  if ${PKG_CONFIG+:} false; then :
-  XSLT_CFLAGS=`$PKG_CONFIG --cflags libxslt 2>/dev/null`
-fi
-fi
-test "$cross_compiling" = yes || XSLT_CFLAGS=${XSLT_CFLAGS:-`${XSLT_CONFIG:-xslt-config} --cflags 2>/dev/null`}
-if ${XSLT_LIBS:+false} :; then :
-  if ${PKG_CONFIG+:} false; then :
-  XSLT_LIBS=`$PKG_CONFIG --libs libxslt 2>/dev/null`
-fi
-fi
-test "$cross_compiling" = yes || XSLT_LIBS=${XSLT_LIBS:-`${XSLT_CONFIG:-xslt-config} --libs 2>/dev/null`}
-XSLT_LIBS=${XSLT_LIBS:-"-lxml2"}
-$as_echo "$as_me:${as_lineno-$LINENO}: libxslt cflags: $XSLT_CFLAGS" >&5
-$as_echo "$as_me:${as_lineno-$LINENO}: libxslt libs: $XSLT_LIBS" >&5
-ac_save_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $XSLT_CFLAGS"
-for ac_header in libxslt/pattern.h libxslt/transform.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#ifdef HAVE_LIBXSLT_PATTERN_H
-# include <libxslt/pattern.h>
-#endif
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-        if test "$ac_cv_header_libxslt_transform_h" = "yes"
-        then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -lxslt" >&5
-$as_echo_n "checking for -lxslt... " >&6; }
-if ${ac_cv_lib_soname_xslt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_soname_save_LIBS=$LIBS
-LIBS="-lxslt $XSLT_LIBS $LIBS"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xsltCompilePattern ();
-int
-main ()
-{
-return xsltCompilePattern ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  case "$LIBEXT" in
-    dll) ac_cv_lib_soname_xslt=`$ac_cv_path_LDD conftest.exe | grep "xslt" | sed -e "s/dll.*/dll/"';2,$d'` ;;
-    dylib) ac_cv_lib_soname_xslt=`$OTOOL -L conftest$ac_exeext | grep "libxslt\\.[0-9A-Za-z.]*dylib" | sed -e "s/^.*\/\(libxslt\.[0-9A-Za-z.]*dylib\).*$/\1/"';2,$d'` ;;
-    *) ac_cv_lib_soname_xslt=`$READELF -d conftest$ac_exeext | grep "NEEDED.*libxslt\\.$LIBEXT" | sed -e "s/^.*\\[\\(libxslt\\.$LIBEXT[^	 ]*\\)\\].*$/\1/"';2,$d'`
-       if ${ac_cv_lib_soname_xslt:+false} :; then :
-  ac_cv_lib_soname_xslt=`$LDD conftest$ac_exeext | grep "libxslt\\.$LIBEXT" | sed -e "s/^.*\(libxslt\.$LIBEXT[^	 ]*\).*$/\1/"';2,$d'`
-fi ;;
-  esac
-else
-  ac_cv_lib_soname_xslt=
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LIBS=$ac_check_soname_save_LIBS
-fi
-if ${ac_cv_lib_soname_xslt:+false} :; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_soname_xslt" >&5
-$as_echo "$ac_cv_lib_soname_xslt" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define SONAME_LIBXSLT "$ac_cv_lib_soname_xslt"
-_ACEOF
-
-
-fi
-        else
-            XSLT_CFLAGS=""
-        fi
-CPPFLAGS=$ac_save_CPPFLAGS
-
-fi
-if test "x$ac_cv_lib_soname_xslt" = "x"; then :
-  case "x$with_xslt" in
-  x)   as_fn_append wine_warnings "|libxslt ${notice_platform}development files not found, xslt won't be supported." ;;
-  xno) ;;
-  *)   as_fn_error $? "libxslt ${notice_platform}development files not found, xslt won't be supported.
-This is an error since --with-xslt was requested." "$LINENO" 5 ;;
-esac
-
-fi
-
 if test "x$with_inotify" != "xno"
 then
     if ${INOTIFY_CFLAGS:+false} :; then :
@@ -19465,10 +19015,6 @@ X_PRE_LIBS = $X_PRE_LIBS
 X_LIBS = $X_LIBS
 X_EXTRA_LIBS = $X_EXTRA_LIBS
 PCAP_LIBS = $PCAP_LIBS
-XML2_CFLAGS = $XML2_CFLAGS
-XML2_LIBS = $XML2_LIBS
-XSLT_CFLAGS = $XSLT_CFLAGS
-XSLT_LIBS = $XSLT_LIBS
 INOTIFY_CFLAGS = $INOTIFY_CFLAGS
 INOTIFY_LIBS = $INOTIFY_LIBS
 DBUS_CFLAGS = $DBUS_CFLAGS
diff --git a/configure.ac b/configure.ac
index 9bd482d9605430aa977765074bd2ad8264c3c3bf..d9877a80d889da4d85ee990a71d09d3f64473ecd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -98,7 +98,6 @@ AC_ARG_WITH(xinput,    AS_HELP_STRING([--without-xinput],[do not use the Xinput
             [if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_XInput_h=no; fi])
 AC_ARG_WITH(xinput2,   AS_HELP_STRING([--without-xinput2],[do not use the Xinput 2 extension]),
             [if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_XInput2_h=no; fi])
-AC_ARG_WITH(xml,       AS_HELP_STRING([--without-xml],[do not use XML]))
 AC_ARG_WITH(xrandr,    AS_HELP_STRING([--without-xrandr],[do not use Xrandr (multi-monitor support)]),
             [if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_Xrandr_h=no; fi])
 AC_ARG_WITH(xrender,   AS_HELP_STRING([--without-xrender],[do not use the Xrender extension]),
@@ -107,7 +106,6 @@ AC_ARG_WITH(xshape,    AS_HELP_STRING([--without-xshape],[do not use the Xshape
             [if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_shape_h=no; fi])
 AC_ARG_WITH(xshm,      AS_HELP_STRING([--without-xshm],[do not use XShm (shared memory extension)]),
             [if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_XShm_h=no; fi])
-AC_ARG_WITH(xslt,      AS_HELP_STRING([--without-xslt],[do not use XSLT]))
 AC_ARG_WITH(xxf86vm,   AS_HELP_STRING([--without-xxf86vm],[do not use XFree video mode extension]),
             [if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_xf86vmode_h=no; ac_cv_header_X11_extensions_xf86vmproto_h=no; fi])
 
@@ -1300,55 +1298,6 @@ WINE_NOTICE_WITH(pcap,[test "x$ac_cv_lib_pcap_pcap_create" != xyes],
                  [pcap ${notice_platform}development files not found, wpcap won't be supported.],
                  [enable_wpcap])
 
-dnl **** Check for libxml2 ****
-
-if test "x$with_xml" != "xno"
-then
-    WINE_PACKAGE_FLAGS(XML2,[libxml-2.0],[-lxml2],
-                       [`${XML2_CONFIG:-xml2-config} --cflags 2>/dev/null`],[`${XML2_CONFIG:-xml2-config} --libs 2>/dev/null`],
-        [AC_CHECK_HEADERS([libxml/parser.h libxml/xmlsave.h libxml/SAX2.h])
-        if test "$ac_cv_header_libxml_parser_h" = "yes" -a "$ac_cv_header_libxml_xmlsave_h" = "yes" -a "$ac_cv_header_libxml_SAX2_h" = "yes"
-        then
-            AC_CHECK_LIB(xml2, xmlParseMemory,
-                [AC_DEFINE(HAVE_LIBXML2, 1, [Define if you have the libxml2 library])],[XML2_LIBS=""],[$XML2_LIBS])
-            AC_CHECK_LIB(xml2, xmlReadMemory,
-                [AC_DEFINE(HAVE_XMLREADMEMORY,1,[Define if libxml2 has the xmlReadMemory function])],,[$XML2_LIBS])
-            AC_CHECK_LIB(xml2, xmlNewDocPI,
-                [AC_DEFINE(HAVE_XMLNEWDOCPI,1,[Define if libxml2 has the xmlNewDocPI function])],,[$XML2_LIBS])
-            AC_CHECK_LIB(xml2, xmlSchemaSetParserStructuredErrors,
-                [AC_DEFINE(HAVE_XMLSCHEMASSETPARSERSTRUCTUREDERRORS,1,[Define if libxml2 has the xmlSchemaSetParserStructuredErrors function])],,[$XML2_LIBS])
-            AC_CHECK_LIB(xml2, xmlSchemaSetValidStructuredErrors,
-                [AC_DEFINE(HAVE_XMLSCHEMASSETVALIDSTRUCTUREDERRORS,1,[Define if libxml2 has the xmlSchemaSetValidStructuredErrors function])],,[$XML2_LIBS])
-            AC_CHECK_LIB(xml2, xmlFirstElementChild,
-                [AC_DEFINE(HAVE_XMLFIRSTELEMENTCHILD,1,[Define if libxml2 has the xmlFirstElementChild function])],,[$XML2_LIBS])
-            AC_CHECK_TYPE([xmlDocProperties],
-                [AC_DEFINE(HAVE_XMLDOC_PROPERTIES,1,[Define if libxml2 has the xmlDocProperties enum])],,[[#include <libxml/tree.h>]])
-        else
-            XML2_CFLAGS=""
-            XML2_LIBS=""
-        fi])
-fi
-WINE_WARNING_WITH(xml,[test "$ac_cv_lib_xml2_xmlParseMemory" != "yes"],
-                 [libxml2 ${notice_platform}development files not found (or too old), XML won't be supported.])
-
-if test "x$with_xslt" != "xno"
-then
-    WINE_PACKAGE_FLAGS(XSLT,[libxslt],[-lxml2],
-                       [`${XSLT_CONFIG:-xslt-config} --cflags 2>/dev/null`],[`${XSLT_CONFIG:-xslt-config} --libs 2>/dev/null`],
-        [AC_CHECK_HEADERS([libxslt/pattern.h libxslt/transform.h],,,
-        [#ifdef HAVE_LIBXSLT_PATTERN_H
-# include <libxslt/pattern.h>
-#endif])
-        if test "$ac_cv_header_libxslt_transform_h" = "yes"
-        then
-            WINE_CHECK_SONAME(xslt,xsltCompilePattern,,,[$XSLT_LIBS])
-        else
-            XSLT_CFLAGS=""
-        fi])
-fi
-WINE_WARNING_WITH(xslt,[test "x$ac_cv_lib_soname_xslt" = "x"],
-                 [libxslt ${notice_platform}development files not found, xslt won't be supported.])
-
 dnl **** Check for inotify ****
 if test "x$with_inotify" != "xno"
 then
diff --git a/dlls/msxml3/Makefile.in b/dlls/msxml3/Makefile.in
index ff530ba0eb4381b348d21718e470012df3ab712d..2bf789732dad748d389ca0166847575dac681102 100644
--- a/dlls/msxml3/Makefile.in
+++ b/dlls/msxml3/Makefile.in
@@ -1,9 +1,6 @@
 MODULE    = msxml3.dll
-IMPORTS   = uuid urlmon shlwapi oleaut32 ole32 user32 advapi32
-EXTRALIBS = $(XML2_LIBS)
-EXTRAINCL = $(XML2_CFLAGS) $(XSLT_CFLAGS)
-
-EXTRADLLFLAGS = -mcygwin
+IMPORTS   = $(XSLT_PE_LIBS) $(XML2_PE_LIBS) uuid urlmon shlwapi oleaut32 ole32 user32 advapi32
+EXTRAINCL = $(XSLT_PE_CFLAGS) $(XML2_PE_CFLAGS)
 
 C_SRCS = \
 	attribute.c \
diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c
index c303969bc39fcf0036960194301a68bad2b4b46e..cbb70daa4a29a29fb3469072bbb460bd8daf95c7 100644
--- a/dlls/msxml3/attribute.c
+++ b/dlls/msxml3/attribute.c
@@ -20,14 +20,10 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-# include <libxml/HTMLtree.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
+#include <libxml/HTMLtree.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -39,8 +35,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 static const xmlChar xmlns[] = "xmlns";
@@ -738,5 +732,3 @@ IUnknown* create_attribute( xmlNodePtr attribute, BOOL floating )
 
     return (IUnknown*)&This->IXMLDOMAttribute_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c
index c255b1b18b5e16dcbeb638a55fe8e4d1deea694c..fa8856ece5f9cea83a6eb93d3bd55d58283213a1 100644
--- a/dlls/msxml3/cdata.c
+++ b/dlls/msxml3/cdata.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -38,8 +34,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct
@@ -898,5 +892,3 @@ IUnknown* create_cdata( xmlNodePtr text )
 
     return (IUnknown*)&This->IXMLDOMCDATASection_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c
index 0317c4fc2d0c69e9846614205e07d37b6a606601..561cc570b0345664d5c9fc7203abe0998016358b 100644
--- a/dlls/msxml3/comment.c
+++ b/dlls/msxml3/comment.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -38,8 +34,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _domcomment
@@ -849,5 +843,3 @@ IUnknown* create_comment( xmlNodePtr comment )
 
     return (IUnknown*)&This->IXMLDOMComment_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/dispex.c b/dlls/msxml3/dispex.c
index 2ee0324194611ee8a1f0cdf571399cdf3626e2eb..7f57f0805169b49b6a9ea092d1aa7ebfbd7abe64 100644
--- a/dlls/msxml3/dispex.c
+++ b/dlls/msxml3/dispex.c
@@ -236,12 +236,12 @@ static void add_func_info(dispex_data_t *data, DWORD *size, tid_t tid, DISPID id
     data->func_cnt++;
 }
 
-static int dispid_cmp(const void *p1, const void *p2)
+static int __cdecl dispid_cmp(const void *p1, const void *p2)
 {
     return ((const func_info_t*)p1)->id - ((const func_info_t*)p2)->id;
 }
 
-static int func_name_cmp(const void *p1, const void *p2)
+static int __cdecl func_name_cmp(const void *p1, const void *p2)
 {
     return lstrcmpiW((*(func_info_t* const*)p1)->name, (*(func_info_t* const*)p2)->name);
 }
@@ -426,7 +426,7 @@ static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DW
 
         c = lstrcmpiW(data->name_table[n]->name, bstrName);
         if(!c) {
-            if((grfdex & fdexNameCaseSensitive) && lstrcmpW(data->name_table[n]->name, bstrName))
+            if((grfdex & fdexNameCaseSensitive) && wcscmp(data->name_table[n]->name, bstrName))
                 break;
 
             *pid = data->name_table[n]->id;
diff --git a/dlls/msxml3/docfrag.c b/dlls/msxml3/docfrag.c
index b2dd3e5dec8567d064cb82f45825c4d0acf2d369..8845600146409e435ee0603a79a8542dff40f45a 100644
--- a/dlls/msxml3/docfrag.c
+++ b/dlls/msxml3/docfrag.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -38,8 +34,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _domfrag
@@ -599,5 +593,3 @@ IUnknown* create_doc_fragment( xmlNodePtr fragment )
 
     return (IUnknown*)&This->IXMLDOMDocumentFragment_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/doctype.c b/dlls/msxml3/doctype.c
index 79d74d9fcddfcd548b475d3f2dc12ebcc01ebe0c..9010481bb4ee4e1ec08c0c2a10009028bc33e567 100644
--- a/dlls/msxml3/doctype.c
+++ b/dlls/msxml3/doctype.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -39,8 +35,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _domdoctype
@@ -589,5 +583,3 @@ IUnknown* create_doc_type( xmlNodePtr doctype )
 
     return (IUnknown*)&This->IXMLDOMDocumentType_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index e8b5445df19b1a8475fc6662f47332db77991ae7..cbf16bcb1d486075d30ad8bb460a4f75f4940620 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -21,18 +21,14 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
 #include <assert.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-# include <libxml/xpathInternals.h>
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
+#include <libxml/xpathInternals.h>
 # include <libxml/xmlsave.h>
-# include <libxml/SAX2.h>
-# include <libxml/parserInternals.h>
-#endif
+#include <libxml/SAX2.h>
+#include <libxml/parserInternals.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -51,8 +47,6 @@
 
 #include "msxml_private.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 /* not defined in older versions */
@@ -2140,12 +2134,7 @@ static HRESULT WINAPI domdoc_createNode(
         xmlnode = xmlNewReference(get_doc(This), xml_name);
         break;
     case NODE_PROCESSING_INSTRUCTION:
-#ifdef HAVE_XMLNEWDOCPI
         xmlnode = xmlNewDocPI(get_doc(This), xml_name, NULL);
-#else
-        FIXME("xmlNewDocPI() not supported, use libxml2 2.6.15 or greater\n");
-        xmlnode = NULL;
-#endif
         break;
     case NODE_COMMENT:
         xmlnode = xmlNewDocComment(get_doc(This), NULL);
@@ -2496,9 +2485,9 @@ static HRESULT WINAPI domdoc_loadXML(
 
             /* skip leading spaces if needed */
             if (This->properties->version == MSXML_DEFAULT || This->properties->version == MSXML26)
-                while (*ptr && isspaceW(*ptr)) ptr++;
+                while (*ptr && iswspace(*ptr)) ptr++;
 
-            xmldoc = doparse(This, (char*)ptr, strlenW(ptr)*sizeof(WCHAR), XML_CHAR_ENCODING_UTF16LE);
+            xmldoc = doparse(This, (char*)ptr, lstrlenW(ptr)*sizeof(WCHAR), XML_CHAR_ENCODING_UTF16LE);
             if ( !xmldoc )
             {
                 This->error = E_FAIL;
@@ -2901,32 +2890,7 @@ static HRESULT WINAPI domdoc_putref_schemas(
 
 static inline BOOL is_wellformed(xmlDocPtr doc)
 {
-#ifdef HAVE_XMLDOC_PROPERTIES
     return doc->properties & XML_DOC_WELLFORMED;
-#else
-    /* Not a full check, but catches the worst violations */
-    xmlNodePtr child;
-    int root = 0;
-
-    for (child = doc->children; child != NULL; child = child->next)
-    {
-        switch (child->type)
-        {
-        case XML_ELEMENT_NODE:
-            if (++root > 1)
-                return FALSE;
-            break;
-        case XML_TEXT_NODE:
-        case XML_CDATA_SECTION_NODE:
-            return FALSE;
-            break;
-        default:
-            break;
-        }
-    }
-
-    return root == 1;
-#endif
 }
 
 static void LIBXML2_LOG_CALLBACK validate_error(void* ctx, char const* msg, ...)
@@ -3837,14 +3801,3 @@ IUnknown* create_domdoc( xmlNodePtr document )
 
     return obj;
 }
-
-#else
-
-HRESULT dom_document_create(MSXML_VERSION version, void **ppObj)
-{
-    MESSAGE("This program tried to use a DOMDocument object, but\n"
-            "libxml2 support was not present at compile time.\n");
-    return E_NOTIMPL;
-}
-
-#endif
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 1a5237983280f0ecc776f418f6412d78f7618aca..e1462c47d88d2a1f6c1c30b365934aef11fd5d47 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -39,8 +35,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 static const xmlChar DT_prefix[] = "dt";
@@ -504,9 +498,9 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
 
             if(p+4<e && *(p+4)=='-') /* parse date (yyyy-mm-dd) */
             {
-                st.wYear = atoiW(p);
-                st.wMonth = atoiW(p+5);
-                st.wDay = atoiW(p+8);
+                st.wYear = wcstol(p, NULL, 10);
+                st.wMonth = wcstol(p+5, NULL, 10);
+                st.wDay = wcstol(p+8, NULL, 10);
                 p += 10;
 
                 if(*p == 'T') p++;
@@ -514,9 +508,9 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
 
             if(p+2<e && *(p+2)==':') /* parse time (hh:mm:ss.?) */
             {
-                st.wHour = atoiW(p);
-                st.wMinute = atoiW(p+3);
-                st.wSecond = atoiW(p+6);
+                st.wHour = wcstol(p, NULL, 10);
+                st.wMinute = wcstol(p+3, NULL, 10);
+                st.wSecond = wcstol(p+6, NULL, 10);
                 p += 8;
 
                 if(*p == '.')
@@ -531,9 +525,9 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
             V_DATE(v) = date;
 
             if(*p == '+') /* parse timezone offset (+hh:mm) */
-                V_DATE(v) += (DOUBLE)atoiW(p+1)/24 + (DOUBLE)atoiW(p+4)/1440;
+                V_DATE(v) += (DOUBLE)wcstol(p+1, NULL, 10)/24 + (DOUBLE)wcstol(p+4, NULL, 10)/1440;
             else if(*p == '-') /* parse timezone offset (-hh:mm) */
-                V_DATE(v) -= (DOUBLE)atoiW(p+1)/24 + (DOUBLE)atoiW(p+4)/1440;
+                V_DATE(v) -= (DOUBLE)wcstol(p+1, NULL, 10)/24 + (DOUBLE)wcstol(p+4, NULL, 10)/1440;
 
             VariantClear(&src);
             handled = TRUE;
@@ -1440,7 +1434,7 @@ static HRESULT WINAPI domelem_setAttributeNode(
     if (hr != S_OK) return hr;
 
     /* adding xmlns attribute doesn't change a tree or existing namespace definition */
-    if (!strcmpW(nameW, xmlnsW))
+    if (!wcscmp(nameW, xmlnsW))
     {
         SysFreeString(nameW);
         return DISP_E_UNKNOWNNAME;
@@ -1944,5 +1938,3 @@ IUnknown* create_element( xmlNodePtr element )
 
     return (IUnknown*)&This->IXMLDOMElement_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/entityref.c b/dlls/msxml3/entityref.c
index 5d5d424f2565294a0e0fa7d8d90421f7e2793a7a..a9e8d085c340f553fb1d50a089c721a2f27d09b0 100644
--- a/dlls/msxml3/entityref.c
+++ b/dlls/msxml3/entityref.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -38,8 +34,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _entityref
@@ -594,5 +588,3 @@ IUnknown* create_doc_entity_ref( xmlNodePtr entity )
 
     return (IUnknown*)&This->IXMLDOMEntityReference_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/factory.c b/dlls/msxml3/factory.c
index 197f72cd13f9fd8464e09255397ba6646e770104..b8c8281063ad116477ff6215e90e4c7c3bc15655 100644
--- a/dlls/msxml3/factory.c
+++ b/dlls/msxml3/factory.c
@@ -21,13 +21,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c
index 15a1f888ebd02a250c200f84421907106141eabc..934d580064f7ceb4fe3ebe53895cb79f26f1b552 100644
--- a/dlls/msxml3/httprequest.c
+++ b/dlls/msxml3/httprequest.c
@@ -40,7 +40,6 @@
 #include "msxml_dispex.h"
 
 #include "wine/debug.h"
-#include "wine/unicode.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
@@ -390,7 +389,7 @@ static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface,
     if (This->request->verb == BINDVERB_CUSTOM)
     {
         pbindinfo->szCustomVerb = CoTaskMemAlloc(SysStringByteLen(This->request->custom)+sizeof(WCHAR));
-        strcpyW(pbindinfo->szCustomVerb, This->request->custom);
+        lstrcpyW(pbindinfo->szCustomVerb, This->request->custom);
     }
 
     return S_OK;
@@ -513,10 +512,10 @@ static HRESULT WINAPI BSCHttpNegotiate_BeginningTransaction(IHttpNegotiate *ifac
 
     if (base_uri)
     {
-        strcpyW(ptr, refererW);
-        strcatW(ptr, base_uri);
-        strcatW(ptr, crlfW);
-        ptr += strlenW(refererW) + SysStringLen(base_uri) + strlenW(crlfW);
+        lstrcpyW(ptr, refererW);
+        lstrcatW(ptr, base_uri);
+        lstrcatW(ptr, crlfW);
+        ptr += lstrlenW(refererW) + SysStringLen(base_uri) + lstrlenW(crlfW);
         SysFreeString(base_uri);
     }
 
@@ -592,11 +591,11 @@ static HRESULT WINAPI BSCHttpNegotiate_OnResponse(IHttpNegotiate *iface, DWORD c
         ptr = line = resp_headers;
 
         /* skip HTTP-Version */
-        ptr = strchrW(ptr, ' ');
+        ptr = wcschr(ptr, ' ');
         if (ptr)
         {
             /* skip Status-Code */
-            ptr = strchrW(++ptr, ' ');
+            ptr = wcschr(++ptr, ' ');
             if (ptr)
             {
                 status_text = ++ptr;
@@ -864,7 +863,7 @@ static HRESULT verify_uri(httprequest *This, IUri *uri)
 
     hr = IUri_GetHost(This->base_uri, &base_host);
     if(SUCCEEDED(hr)) {
-        if(strcmpiW(host, base_host)) {
+        if(wcsicmp(host, base_host)) {
             WARN("Hosts don't match\n");
             hr = E_ACCESSDENIED;
         }
@@ -901,21 +900,21 @@ static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
     This->user = This->password = NULL;
     free_request_headers(This);
 
-    if (!strcmpiW(method, MethodGetW))
+    if (!wcsicmp(method, MethodGetW))
     {
         This->verb = BINDVERB_GET;
     }
-    else if (!strcmpiW(method, MethodPutW))
+    else if (!wcsicmp(method, MethodPutW))
     {
         This->verb = BINDVERB_PUT;
     }
-    else if (!strcmpiW(method, MethodPostW))
+    else if (!wcsicmp(method, MethodPostW))
     {
         This->verb = BINDVERB_POST;
     }
-    else if (!strcmpiW(method, MethodDeleteW) ||
-             !strcmpiW(method, MethodHeadW) ||
-             !strcmpiW(method, MethodPropFindW))
+    else if (!wcsicmp(method, MethodDeleteW) ||
+             !wcsicmp(method, MethodHeadW) ||
+             !wcsicmp(method, MethodPropFindW))
     {
         This->verb = BINDVERB_CUSTOM;
         SysReAllocString(&This->custom, method);
@@ -1000,7 +999,7 @@ static HRESULT httprequest_setRequestHeader(httprequest *This, BSTR header, BSTR
     /* replace existing header value if already added */
     LIST_FOR_EACH_ENTRY(entry, &This->reqheaders, struct httpheader, entry)
     {
-        if (lstrcmpW(entry->header, header) == 0)
+        if (wcscmp(entry->header, header) == 0)
         {
             LONG length = SysStringLen(entry->value);
             HRESULT hr;
@@ -1056,7 +1055,7 @@ static HRESULT httprequest_getResponseHeader(httprequest *This, BSTR header, BST
 
     LIST_FOR_EACH_ENTRY(entry, &This->respheaders, struct httpheader, entry)
     {
-        if (!strcmpiW(entry->header, header))
+        if (!wcsicmp(entry->header, header))
         {
             *value = SysAllocString(entry->value);
             TRACE("header value %s\n", debugstr_w(*value));
diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c
index e9a43ab64b230a13c93b5d436935dd2a60a8e71c..ba8d3b2e21bfb23b71b1e86e8ba063d56aa2b636 100644
--- a/dlls/msxml3/main.c
+++ b/dlls/msxml3/main.c
@@ -19,31 +19,20 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "config.h"
-#include "wine/port.h"
-
 #define COBJMACROS
 
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-# ifdef SONAME_LIBXSLT
-#  ifdef HAVE_LIBXSLT_PATTERN_H
-#   include <libxslt/pattern.h>
-#  endif
-#  ifdef HAVE_LIBXSLT_TRANSFORM_H
-#   include <libxslt/transform.h>
-#  endif
-#  include <libxslt/imports.h>
-#  include <libxslt/xsltutils.h>
-#  include <libxslt/variables.h>
-#  include <libxslt/xsltInternals.h>
-#  include <libxslt/documents.h>
-#  include <libxslt/extensions.h>
-#  include <libxslt/extra.h>
-# endif
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
+#include <libxslt/pattern.h>
+#include <libxslt/transform.h>
+#include <libxslt/imports.h>
+#include <libxslt/xsltutils.h>
+#include <libxslt/variables.h>
+#include <libxslt/xsltInternals.h>
+#include <libxslt/documents.h>
+#include <libxslt/extensions.h>
+#include <libxslt/extra.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -54,15 +43,12 @@
 #include "msxml2.h"
 #include "msxml6.h"
 
-#include "wine/unicode.h"
 #include "wine/debug.h"
 
 #include "msxml_private.h"
 
 HINSTANCE MSXML_hInstance = NULL;
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg, va_list ap)
@@ -166,68 +152,14 @@ static int wineXmlFileCloseCallback (void * context)
     return CloseHandle(context) ? 0 : -1;
 }
 
-void* libxslt_handle = NULL;
-#ifdef SONAME_LIBXSLT
-# define DECL_FUNCPTR(f) typeof(f) * p##f = NULL
-DECL_FUNCPTR(xsltApplyStylesheet);
-DECL_FUNCPTR(xsltApplyStylesheetUser);
-DECL_FUNCPTR(xsltCleanupGlobals);
-DECL_FUNCPTR(xsltFreeStylesheet);
-DECL_FUNCPTR(xsltFreeTransformContext);
-DECL_FUNCPTR(xsltFunctionNodeSet);
-DECL_FUNCPTR(xsltNewTransformContext);
-DECL_FUNCPTR(xsltNextImport);
-DECL_FUNCPTR(xsltParseStylesheetDoc);
-DECL_FUNCPTR(xsltQuoteUserParams);
-DECL_FUNCPTR(xsltRegisterExtModuleFunction);
-DECL_FUNCPTR(xsltSaveResultTo);
-DECL_FUNCPTR(xsltSetLoaderFunc);
-# undef DECL_FUNCPTR
-#endif
-
 static void init_libxslt(void)
 {
-#ifdef SONAME_LIBXSLT
-    void (*pxsltInit)(void); /* Missing in libxslt <= 1.1.14 */
-
-    libxslt_handle = dlopen(SONAME_LIBXSLT, RTLD_NOW);
-    if (!libxslt_handle)
-        return;
-
-#define LOAD_FUNCPTR(f, needed) \
-    if ((p##f = dlsym(libxslt_handle, #f)) == NULL) \
-        if (needed) { WARN("Can't find symbol %s\n", #f); goto sym_not_found; }
-    LOAD_FUNCPTR(xsltInit, 0);
-    LOAD_FUNCPTR(xsltApplyStylesheet, 1);
-    LOAD_FUNCPTR(xsltApplyStylesheetUser, 1);
-    LOAD_FUNCPTR(xsltCleanupGlobals, 1);
-    LOAD_FUNCPTR(xsltFreeStylesheet, 1);
-    LOAD_FUNCPTR(xsltFreeTransformContext, 1);
-    LOAD_FUNCPTR(xsltFunctionNodeSet, 1);
-    LOAD_FUNCPTR(xsltNewTransformContext, 1);
-    LOAD_FUNCPTR(xsltNextImport, 1);
-    LOAD_FUNCPTR(xsltParseStylesheetDoc, 1);
-    LOAD_FUNCPTR(xsltQuoteUserParams, 1);
-    LOAD_FUNCPTR(xsltRegisterExtModuleFunction, 1);
-    LOAD_FUNCPTR(xsltSaveResultTo, 1);
-    LOAD_FUNCPTR(xsltSetLoaderFunc, 1);
-#undef LOAD_FUNCPTR
-
-    if (pxsltInit)
-        pxsltInit();
-
-    pxsltSetLoaderFunc(xslt_doc_default_loader);
-    pxsltRegisterExtModuleFunction(
+    xsltInit();
+    xsltSetLoaderFunc(xslt_doc_default_loader);
+    xsltRegisterExtModuleFunction(
         (const xmlChar *)"node-set",
         (const xmlChar *)"urn:schemas-microsoft-com:xslt",
-        pxsltFunctionNodeSet);
-
-    return;
-
- sym_not_found:
-    dlclose(libxslt_handle);
-    libxslt_handle = NULL;
-#endif
+        xsltFunctionNodeSet);
 }
 
 static int to_utf8(int cp, unsigned char *out, int *outlen, const unsigned char *in, int *inlen)
@@ -392,8 +324,6 @@ static void init_char_encoders(void)
     }
 }
 
-#endif  /* HAVE_LIBXML2 */
-
 const CLSID* DOMDocument_version(MSXML_VERSION v)
 {
     switch (v)
@@ -413,7 +343,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID reserved)
     switch(fdwReason)
     {
     case DLL_PROCESS_ATTACH:
-#ifdef HAVE_LIBXML2
         xmlInitParser();
 
         /* Set the default indent character to a single tab,
@@ -430,26 +359,17 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID reserved)
 
         schemasInit();
         init_libxslt();
-#endif
         DisableThreadLibraryCalls(hInstDLL);
         break;
     case DLL_PROCESS_DETACH:
         if (reserved) break;
-#ifdef HAVE_LIBXML2
-#ifdef SONAME_LIBXSLT
-        if (libxslt_handle)
-        {
-            pxsltCleanupGlobals();
-            dlclose(libxslt_handle);
-        }
-#endif
+        xsltCleanupGlobals();
         /* Restore default Callbacks */
         xmlCleanupInputCallbacks();
         xmlRegisterDefaultInputCallbacks();
 
         xmlCleanupParser();
         schemasCleanup();
-#endif
         release_typelib();
         break;
     }
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index f16040f35427ec10852dc8ba59fda1afc38f0048..07ed09fb480cd03902f0cf0180e826c0e8054691 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -23,16 +23,11 @@
 
 #include "dispex.h"
 
-#include "wine/unicode.h"
 #include "wine/heap.h"
 #include "wine/list.h"
 
 #include "msxml_dispex.h"
 
-#ifndef __WINE_CONFIG_H
-# error You must include config.h to use this header
-#endif
-
 extern const CLSID * DOMDocument_version(MSXML_VERSION v) DECLSPEC_HIDDEN;
 
 
@@ -97,7 +92,7 @@ static inline LPWSTR heap_strdupW(LPCWSTR str)
     if(str) {
         DWORD size;
 
-        size = (strlenW(str)+1)*sizeof(WCHAR);
+        size = (lstrlenW(str)+1)*sizeof(WCHAR);
         ret = heap_alloc(size);
         if(ret)
             memcpy(ret, str, size);
@@ -120,24 +115,9 @@ struct xslprocessor_params
     unsigned int count;
 };
 
-#ifdef HAVE_LIBXML2
-
 extern void schemasInit(void) DECLSPEC_HIDDEN;
 extern void schemasCleanup(void) DECLSPEC_HIDDEN;
 
-#ifndef HAVE_XMLFIRSTELEMENTCHILD
-static inline xmlNodePtr wine_xmlFirstElementChild(xmlNodePtr parent)
-{
-    xmlNodePtr child;
-    for (child = parent->children; child != NULL; child = child->next)
-        if (child->type == XML_ELEMENT_NODE)
-            break;
-
-    return child;
-}
-#define xmlFirstElementChild wine_xmlFirstElementChild
-#endif
-
 /* IXMLDOMNode Internal Structure */
 typedef struct _xmlnode
 {
@@ -211,7 +191,7 @@ extern HRESULT XMLElement_create( xmlNodePtr node, LPVOID *ppObj, BOOL own ) DEC
 extern void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg, va_list ap) DECLSPEC_HIDDEN;
 extern void wineXmlCallbackError(char const* caller, xmlErrorPtr err) DECLSPEC_HIDDEN;
 
-#define LIBXML2_LOG_CALLBACK __WINE_PRINTF_ATTR(2,3)
+#define LIBXML2_LOG_CALLBACK WINAPIV __WINE_PRINTF_ATTR(2,3)
 
 #define LIBXML2_CALLBACK_TRACE(caller, msg, ap) \
         wineXmlCallbackLog(#caller, XML_ERR_NONE, msg, ap)
@@ -281,11 +261,9 @@ extern BSTR EnsureCorrectEOL(BSTR) DECLSPEC_HIDDEN;
 
 extern xmlChar* tagName_to_XPath(const BSTR tagName) DECLSPEC_HIDDEN;
 
-#ifdef SONAME_LIBXSLT
-#  include <libxslt/documents.h>
+#include <libxslt/documents.h>
 extern xmlDocPtr xslt_doc_default_loader(const xmlChar *uri, xmlDictPtr dict, int options,
     void *_ctxt, xsltLoadType type) DECLSPEC_HIDDEN;
-#endif /* SONAME_LIBXSLT */
 
 static inline BSTR bstr_from_xmlChar(const xmlChar *str)
 {
@@ -337,8 +315,6 @@ static inline xmlChar *heap_strdupxmlChar(const xmlChar *str)
     return ret;
 }
 
-#endif
-
 static inline HRESULT return_null_node(IXMLDOMNode **p)
 {
     if(!p)
diff --git a/dlls/msxml3/mxnamespace.c b/dlls/msxml3/mxnamespace.c
index 422bd388cedd44d50e040622c9787b7952e99df5..fa9194743b60a3fb91eed6b9b057e198ca98d58e 100644
--- a/dlls/msxml3/mxnamespace.c
+++ b/dlls/msxml3/mxnamespace.c
@@ -94,7 +94,7 @@ static HRESULT declare_prefix(namespacemanager *This, const WCHAR *prefix, const
 
     ns = NULL;
     for (i = 0; i < ctxt->count; i++)
-        if (!lstrcmpW(ctxt->ns[i].prefix, prefix))
+        if (!wcscmp(ctxt->ns[i].prefix, prefix))
         {
             ns = &ctxt->ns[i];
             break;
@@ -143,7 +143,7 @@ static HRESULT get_declared_prefix_uri(const struct list *ctxts, const WCHAR *ur
     {
         int i;
         for (i = 0; i < ctxt->count; i++)
-            if (!lstrcmpW(ctxt->ns[i].uri, uri))
+            if (!wcscmp(ctxt->ns[i].uri, uri))
             {
                 *prefix = ctxt->ns[i].prefix;
                 return S_OK;
@@ -159,7 +159,7 @@ static HRESULT get_uri_from_prefix(const struct nscontext *ctxt, const WCHAR *pr
     int i;
 
     for (i = 0; i < ctxt->count; i++)
-        if (!lstrcmpW(ctxt->ns[i].prefix, prefix))
+        if (!wcscmp(ctxt->ns[i].prefix, prefix))
         {
             *uri = ctxt->ns[i].uri;
             return S_OK;
@@ -279,7 +279,7 @@ static HRESULT WINAPI namespacemanager_declarePrefix(IMXNamespaceManager *iface,
 
     TRACE("(%p)->(%s %s)\n", This, debugstr_w(prefix), debugstr_w(namespaceURI));
 
-    if (prefix && (!lstrcmpW(prefix, xmlW) || !lstrcmpW(prefix, xmlnsW) || !namespaceURI))
+    if (prefix && (!wcscmp(prefix, xmlW) || !wcscmp(prefix, xmlnsW) || !namespaceURI))
         return E_INVALIDARG;
 
     return declare_prefix(This, prefix, namespaceURI);
diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c
index a7eae112fb4d304f8ab4a1485d7b50ecb5f381da..e0dd0e3c6e08a25fc034893ac95ebc75ade57800 100644
--- a/dlls/msxml3/mxwriter.c
+++ b/dlls/msxml3/mxwriter.c
@@ -30,7 +30,6 @@
 #include "msxml6.h"
 
 #include "wine/debug.h"
-#include "wine/unicode.h"
 
 #include "msxml_dispex.h"
 
@@ -3077,10 +3076,10 @@ static HRESULT WINAPI SAXAttributes_getIndexFromName(ISAXAttributes *iface, cons
     for (i = 0; i < This->length; i++)
     {
         if (uri_len != SysStringLen(This->attr[i].uri)) continue;
-        if (strncmpW(uri, This->attr[i].uri, uri_len)) continue;
+        if (wcsncmp(uri, This->attr[i].uri, uri_len)) continue;
 
         if (len != SysStringLen(This->attr[i].local)) continue;
-        if (strncmpW(name, This->attr[i].local, len)) continue;
+        if (wcsncmp(name, This->attr[i].local, len)) continue;
 
         *index = i;
         return S_OK;
@@ -3105,7 +3104,7 @@ static HRESULT WINAPI SAXAttributes_getIndexFromQName(ISAXAttributes *iface, con
     for (i = 0; i < This->length; i++)
     {
         if (len != SysStringLen(This->attr[i].qname)) continue;
-        if (strncmpW(qname, This->attr[i].qname, len)) continue;
+        if (wcsncmp(qname, This->attr[i].qname, len)) continue;
 
         *index = i;
         return S_OK;
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 67f322eb0e5386b00163a734f84c6da4fbf32d35..721ad54e379a52abefd59d6957f706f7b6bbad3a 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -18,31 +18,21 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "config.h"
-
 #define COBJMACROS
 
 #include <stdarg.h>
 
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/parserInternals.h>
-# include <libxml/xmlerror.h>
-# include <libxml/HTMLtree.h>
-# ifdef SONAME_LIBXSLT
-#  ifdef HAVE_LIBXSLT_PATTERN_H
-#   include <libxslt/pattern.h>
-#  endif
-#  ifdef HAVE_LIBXSLT_TRANSFORM_H
-#   include <libxslt/transform.h>
-#  endif
-#  include <libxslt/imports.h>
-#  include <libxslt/variables.h>
-#  include <libxslt/xsltutils.h>
-#  include <libxslt/xsltInternals.h>
-#  include <libxslt/documents.h>
-# endif
-#endif
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxml/xmlerror.h>
+#include <libxml/HTMLtree.h>
+#include <libxslt/pattern.h>
+#include <libxslt/transform.h>
+#include <libxslt/imports.h>
+#include <libxslt/variables.h>
+#include <libxslt/xsltutils.h>
+#include <libxslt/xsltInternals.h>
+#include <libxslt/documents.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -55,28 +45,8 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-#ifdef SONAME_LIBXSLT
-extern void* libxslt_handle;
-# define MAKE_FUNCPTR(f) extern typeof(f) * p##f
-MAKE_FUNCPTR(xsltApplyStylesheet);
-MAKE_FUNCPTR(xsltApplyStylesheetUser);
-MAKE_FUNCPTR(xsltCleanupGlobals);
-MAKE_FUNCPTR(xsltFreeStylesheet);
-MAKE_FUNCPTR(xsltFreeTransformContext);
-MAKE_FUNCPTR(xsltNewTransformContext);
-MAKE_FUNCPTR(xsltNextImport);
-MAKE_FUNCPTR(xsltParseStylesheetDoc);
-MAKE_FUNCPTR(xsltQuoteUserParams);
-MAKE_FUNCPTR(xsltSaveResultTo);
-# undef MAKE_FUNCPTR
-#else
-WINE_DECLARE_DEBUG_CHANNEL(winediag);
-#endif
-
 static const IID IID_xmlnode = {0x4f2f4ba2,0xb822,0x11df,{0x8b,0x8a,0x68,0x50,0xdf,0xd7,0x20,0x85}};
 
 xmlNodePtr xmlNodePtr_from_domnode( IXMLDOMNode *iface, xmlElementType type )
@@ -988,8 +958,6 @@ HRESULT node_get_xml(xmlnode *This, BOOL ensure_eol, BSTR *ret)
     return *ret ? S_OK : E_OUTOFMEMORY;
 }
 
-#ifdef SONAME_LIBXSLT
-
 /* duplicates xmlBufferWriteQuotedString() logic */
 static void xml_write_quotedstring(xmlOutputBufferPtr buf, const xmlChar *string)
 {
@@ -1090,7 +1058,7 @@ static void transform_write_text(xmlDocPtr result, xsltStylesheetPtr style, xmlO
     res = NULL;                                          \
     while (st != NULL) {                                 \
         if (st->name != NULL) { res = st->name; break; } \
-        st = pxsltNextImport(st);                        \
+        st = xsltNextImport(st);                         \
     }}
 
 #undef XSLT_GET_IMPORT_INT
@@ -1099,7 +1067,7 @@ static void transform_write_text(xmlDocPtr result, xsltStylesheetPtr style, xmlO
     res = -1;                                           \
     while (st != NULL) {                                \
         if (st->name != -1) { res = st->name; break; }  \
-        st = pxsltNextImport(st);                       \
+        st = xsltNextImport(st);                        \
     }}
 
 static void transform_write_xmldecl(xmlDocPtr result, xsltStylesheetPtr style, BOOL omit_encoding, xmlOutputBufferPtr output)
@@ -1266,13 +1234,8 @@ static HRESULT node_transform_write_to_bstr(xsltStylesheetPtr style, xmlDocPtr r
             return E_OUTOFMEMORY;
 
         hr = node_transform_write(style, result, TRUE, "UTF-16", output);
-#ifdef LIBXML2_NEW_BUFFER
         content = xmlBufContent(output->conv);
         len = xmlBufUse(output->conv);
-#else
-        content = xmlBufferContent(output->conv);
-        len = xmlBufferLength(output->conv);
-#endif
         /* UTF-16 encoder places UTF-16 bom, we don't need it for BSTR */
         content += sizeof(WCHAR);
         *str = SysAllocStringLen((WCHAR*)content, len/sizeof(WCHAR) - 1);
@@ -1500,18 +1463,14 @@ failed:
     return doc;
 }
 
-#endif /* SONAME_LIBXSLT */
-
 HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet, BSTR *p,
     ISequentialStream *stream, const struct xslprocessor_params *params)
 {
-#ifdef SONAME_LIBXSLT
     xsltStylesheetPtr xsltSS;
     xmlDocPtr sheet_doc;
     HRESULT hr = S_OK;
     xmlnode *sheet;
 
-    if (!libxslt_handle) return E_NOTIMPL;
     if (!stylesheet || (!p && !stream)) return E_INVALIDARG;
 
     if (p) *p = NULL;
@@ -1520,7 +1479,7 @@ HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet,
     if(!sheet) return E_FAIL;
 
     sheet_doc = xmlCopyDoc(sheet->node->doc, 1);
-    xsltSS = pxsltParseStylesheetDoc(sheet_doc);
+    xsltSS = xsltParseStylesheetDoc(sheet_doc);
     if (xsltSS)
     {
         const char **xslparams = NULL;
@@ -1544,19 +1503,19 @@ HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet,
 
         if (xslparams)
         {
-            xsltTransformContextPtr ctxt = pxsltNewTransformContext(xsltSS, This->node->doc);
+            xsltTransformContextPtr ctxt = xsltNewTransformContext(xsltSS, This->node->doc);
 
             /* push parameters to user context */
-            pxsltQuoteUserParams(ctxt, xslparams);
-            result = pxsltApplyStylesheetUser(xsltSS, This->node->doc, NULL, NULL, NULL, ctxt);
-            pxsltFreeTransformContext(ctxt);
+            xsltQuoteUserParams(ctxt, xslparams);
+            result = xsltApplyStylesheetUser(xsltSS, This->node->doc, NULL, NULL, NULL, ctxt);
+            xsltFreeTransformContext(ctxt);
 
             for (i = 0; i < params->count*2; i++)
                 heap_free((char*)xslparams[i]);
             heap_free(xslparams);
         }
         else
-            result = pxsltApplyStylesheet(xsltSS, This->node->doc, NULL);
+            result = xsltApplyStylesheet(xsltSS, This->node->doc, NULL);
 
         if (result)
         {
@@ -1567,7 +1526,7 @@ HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet,
             xmlFreeDoc(result);
         }
 
-        pxsltFreeStylesheet(xsltSS);
+        xsltFreeStylesheet(xsltSS);
     }
     else
         xmlFreeDoc(sheet_doc);
@@ -1575,11 +1534,6 @@ HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet,
     if (p && !*p) *p = SysAllocStringLen(NULL, 0);
 
     return hr;
-#else
-    ERR_(winediag)("libxslt headers were not found at compile time. Expect problems.\n");
-
-    return E_NOTIMPL;
-#endif
 }
 
 HRESULT node_transform_node(const xmlnode *node, IXMLDOMNode *stylesheet, BSTR *p)
@@ -2324,4 +2278,3 @@ IXMLDOMNode *create_node( xmlNodePtr node )
     if(FAILED(hr)) return NULL;
     return ret;
 }
-#endif
diff --git a/dlls/msxml3/nodelist.c b/dlls/msxml3/nodelist.c
index 57b8ea823c1177d27ba6ee868958c5543ba943e6..8ffd2dbd3160d3c1ef94c4c705e940ce7175e9c1 100644
--- a/dlls/msxml3/nodelist.c
+++ b/dlls/msxml3/nodelist.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -48,8 +44,6 @@
  *    thus the child is inaccessible by an XPath query
  */
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct
@@ -426,5 +420,3 @@ IXMLDOMNodeList* create_children_nodelist( xmlNodePtr node )
 
     return &This->IXMLDOMNodeList_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c
index 5ea083c4495f6ee111e252e83946fe915a1fe8d5..afe7065dfd983342361782e7f7039a62bae1f80d 100644
--- a/dlls/msxml3/nodemap.c
+++ b/dlls/msxml3/nodemap.c
@@ -18,15 +18,11 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "config.h"
-
 #define COBJMACROS
 
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -40,8 +36,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct
@@ -456,5 +450,3 @@ IXMLDOMNamedNodeMap *create_nodemap(xmlNodePtr node, const struct nodemap_funcs
 
     return &This->IXMLDOMNamedNodeMap_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/pi.c b/dlls/msxml3/pi.c
index 606d8dc357165923fd1b59311dc19301d97aeba7..f4da13e91ac4ca5d57a343635c025abf5e890b09 100644
--- a/dlls/msxml3/pi.c
+++ b/dlls/msxml3/pi.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -39,8 +35,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _dom_pi
@@ -198,7 +192,7 @@ static HRESULT WINAPI dom_pi_put_nodeValue(
     if(hr == S_OK)
     {
         static const WCHAR xmlW[] = {'x','m','l',0};
-        if(!strcmpW(target, xmlW))
+        if(!wcscmp(target, xmlW))
         {
             SysFreeString(target);
             return E_FAIL;
@@ -438,7 +432,7 @@ static HRESULT WINAPI dom_pi_get_attributes(
     hr = node_get_nodeName(&This->node, &name);
     if (hr != S_OK) return hr;
 
-    if (!strcmpW(name, xmlW))
+    if (!wcscmp(name, xmlW))
     {
         if (!This->node.node->properties)
         {
@@ -754,7 +748,7 @@ static HRESULT WINAPI dom_pi_put_data(
     if(hr == S_OK)
     {
         static const WCHAR xmlW[] = {'x','m','l',0};
-        if(!strcmpW(target, xmlW))
+        if(!wcscmp(target, xmlW))
         {
             SysFreeString(target);
             return E_FAIL;
@@ -947,5 +941,3 @@ IUnknown* create_pi( xmlNodePtr pi )
 
     return (IUnknown*)&This->IXMLDOMProcessingInstruction_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index fc27260cc2cca099c71019bc2cba83896ed2e9a0..c610ffcaccb480a1c59ec16bade5e31e60b5ad4e 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -20,15 +20,11 @@
  */
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-# include <libxml/SAX2.h>
-# include <libxml/parserInternals.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
+#include <libxml/SAX2.h>
+#include <libxml/parserInternals.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -45,8 +41,6 @@
 
 #include "msxml_private.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef enum
@@ -136,7 +130,7 @@ static saxreader_feature get_saxreader_feature(const WCHAR *name)
     {
         n = (min+max)/2;
 
-        c = strcmpW(saxreader_feature_map[n].name, name);
+        c = wcscmp(saxreader_feature_map[n].name, name);
         if (!c)
             return saxreader_feature_map[n].feature;
 
@@ -456,10 +450,10 @@ static BSTR build_qname(BSTR prefix, BSTR local)
         WCHAR *ptr;
 
         ptr = qname;
-        strcpyW(ptr, prefix);
+        lstrcpyW(ptr, prefix);
         ptr += SysStringLen(prefix);
         *ptr++ = ':';
-        strcpyW(ptr, local);
+        lstrcpyW(ptr, local);
         return qname;
     }
     else
@@ -536,7 +530,7 @@ static BSTR find_element_uri(saxlocator *locator, const xmlChar *uri)
     LIST_FOR_EACH_ENTRY(element, &locator->elements, element_entry, entry)
     {
         for (i=0; i < element->ns_count; i++)
-            if (!strcmpW(uriW, element->ns[i].uri))
+            if (!wcscmp(uriW, element->ns[i].uri))
             {
                 SysFreeString(uriW);
                 return element->ns[i].uri;
@@ -1417,7 +1411,7 @@ static BSTR saxreader_get_unescaped_value(const xmlChar *buf, int len)
     if (len != -1) str[str_len-1] = 0;
 
     ptrW = str;
-    while ((dest = strstrW(ptrW, ampescW)))
+    while ((dest = wcsstr(ptrW, ampescW)))
     {
         WCHAR *src;
 
@@ -1426,7 +1420,7 @@ static BSTR saxreader_get_unescaped_value(const xmlChar *buf, int len)
         dest++;
 
         /* move together with null terminator */
-        memmove(dest, src, (strlenW(src) + 1)*sizeof(WCHAR));
+        memmove(dest, src, (lstrlenW(src) + 1)*sizeof(WCHAR));
 
         ptrW++;
     }
@@ -1922,7 +1916,7 @@ static void libxmlComment(void *ctx, const xmlChar *value)
         format_error_message_from_id(This, hr);
 }
 
-static void libxmlFatalError(void *ctx, const char *msg, ...)
+static void WINAPIV libxmlFatalError(void *ctx, const char *msg, ...)
 {
     saxlocator *This = ctx;
     struct saxerrorhandler_iface *handler = saxreader_get_errorhandler(This->saxreader);
@@ -2653,7 +2647,7 @@ static HRESULT internal_parse(
         case VT_BSTR|VT_BYREF:
         {
             BSTR str = V_ISBYREF(&varInput) ? *V_BSTRREF(&varInput) : V_BSTR(&varInput);
-            hr = internal_parseBuffer(This, (const char*)str, strlenW(str)*sizeof(WCHAR), vbInterface);
+            hr = internal_parseBuffer(This, (const char*)str, lstrlenW(str)*sizeof(WCHAR), vbInterface);
             break;
         }
         case VT_ARRAY|VT_UI1: {
@@ -3491,14 +3485,3 @@ HRESULT SAXXMLReader_create(MSXML_VERSION version, LPVOID *ppObj)
 
     return S_OK;
 }
-
-#else
-
-HRESULT SAXXMLReader_create(MSXML_VERSION version, LPVOID *ppObj)
-{
-    MESSAGE("This program tried to use a SAX XML Reader object, but\n"
-            "libxml2 support was not present at compile time.\n");
-    return E_NOTIMPL;
-}
-
-#endif
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index 26e54c8728c47dd2e3b26422acd5cd93c8f97c73..b74399542ba5854d3a39b649479d00a09138d931 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -21,22 +21,18 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <assert.h>
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/xmlerror.h>
-# include <libxml/tree.h>
-# include <libxml/xmlschemas.h>
-# include <libxml/schemasInternals.h>
-# include <libxml/hash.h>
-# include <libxml/parser.h>
-# include <libxml/parserInternals.h>
-# include <libxml/xmlIO.h>
-# include <libxml/xmlversion.h>
-# include <libxml/xpath.h>
-#endif
+#include <libxml/xmlerror.h>
+#include <libxml/tree.h>
+#include <libxml/xmlschemas.h>
+#include <libxml/schemasInternals.h>
+#include <libxml/hash.h>
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxml/xmlIO.h>
+#include <libxml/xmlversion.h>
+#include <libxml/xpath.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -48,16 +44,8 @@
 
 #include "msxml_private.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-#if LIBXML_VERSION >= 20908
-#define XMLHASH_CONST const
-#else
-#define XMLHASH_CONST
-#endif
-
 /* We use a chained hashtable, which can hold any number of schemas
  * TODO: grow/shrink hashtable depending on load factor
  * TODO: implement read-only where appropriate
@@ -255,22 +243,17 @@ static void LIBXML2_LOG_CALLBACK parser_warning(void* ctx, char const* msg, ...)
     va_end(ap);
 }
 
-#ifdef HAVE_XMLSCHEMASSETPARSERSTRUCTUREDERRORS
 static void parser_serror(void* ctx, xmlErrorPtr err)
 {
     LIBXML2_CALLBACK_SERROR(Schema_parse, err);
 }
-#endif
 
 static inline xmlSchemaPtr Schema_parse(xmlSchemaParserCtxtPtr spctx)
 {
     TRACE("(%p)\n", spctx);
 
     xmlSchemaSetParserErrors(spctx, parser_error, parser_warning, NULL);
-#ifdef HAVE_XMLSCHEMASSETPARSERSTRUCTUREDERRORS
     xmlSchemaSetParserStructuredErrors(spctx, parser_serror, NULL);
-#endif
-
     return xmlSchemaParse(spctx);
 }
 
@@ -290,12 +273,10 @@ static void LIBXML2_LOG_CALLBACK validate_warning(void* ctx, char const* msg, ..
     va_end(ap);
 }
 
-#ifdef HAVE_XMLSCHEMASSETVALIDSTRUCTUREDERRORS
 static void validate_serror(void* ctx, xmlErrorPtr err)
 {
     LIBXML2_CALLBACK_SERROR(Schema_validate_tree, err);
 }
-#endif
 
 static HRESULT schema_cache_get_item(IUnknown *iface, LONG index, VARIANT *item)
 {
@@ -318,9 +299,7 @@ static inline HRESULT Schema_validate_tree(xmlSchemaPtr schema, xmlNodePtr tree)
      *       we probably need to validate the schema here. */
     svctx = xmlSchemaNewValidCtxt(schema);
     xmlSchemaSetValidErrors(svctx, validate_error, validate_warning, NULL);
-#ifdef HAVE_XMLSCHEMASSETVALIDSTRUCTUREDERRORS
     xmlSchemaSetValidStructuredErrors(svctx, validate_serror, NULL);
-#endif
 
     if (tree->type == XML_DOCUMENT_NODE)
         err = xmlSchemaValidateDoc(svctx, (xmlDocPtr)tree);
@@ -986,7 +965,7 @@ static cache_entry* cache_entry_from_url(VARIANT url, xmlChar const* nsURI, MSXM
     return entry;
 }
 
-static void cache_free(void* data, XMLHASH_CONST xmlChar* name /* ignored */)
+static void cache_free(void* data, const xmlChar* name /* ignored */)
 {
     cache_entry_release((cache_entry*)data);
 }
@@ -1403,7 +1382,7 @@ static HRESULT WINAPI schema_cache_get_namespaceURI(IXMLDOMSchemaCollection2* if
     return S_OK;
 }
 
-static void cache_copy(void* data, void* dest, XMLHASH_CONST xmlChar* name)
+static void cache_copy(void* data, void* dest, const xmlChar* name)
 {
     schema_cache* This = (schema_cache*) dest;
     cache_entry* entry = (cache_entry*) data;
@@ -1641,14 +1620,3 @@ HRESULT SchemaCache_create(MSXML_VERSION version, void** obj)
     *obj = &This->IXMLDOMSchemaCollection2_iface;
     return S_OK;
 }
-
-#else
-
-HRESULT SchemaCache_create(MSXML_VERSION version, void** obj)
-{
-    MESSAGE("This program tried to use a SchemaCache object, but\n"
-            "libxml2 support was not present at compile time.\n");
-    return E_NOTIMPL;
-}
-
-#endif
diff --git a/dlls/msxml3/selection.c b/dlls/msxml3/selection.c
index d05a1d6ffcb8680d7b947bdb606ef06fef9e4738..82be1c6604bbad3e92757a89fd866ec0e3242955 100644
--- a/dlls/msxml3/selection.c
+++ b/dlls/msxml3/selection.c
@@ -22,15 +22,11 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-# include <libxml/xpath.h>
-# include <libxml/xpathInternals.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
+#include <libxml/xpath.h>
+#include <libxml/xpathInternals.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -52,8 +48,6 @@
  *
  */
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 int registerNamespaces(xmlXPathContextPtr ctxt);
@@ -838,5 +832,3 @@ cleanup:
     xmlXPathFreeContext(ctxt);
     return hr;
 }
-
-#endif
diff --git a/dlls/msxml3/stylesheet.c b/dlls/msxml3/stylesheet.c
index 3ff3aa0146e41a863544d2e24d3f36b4fe6adc4c..eab2c96d66708c965ea8c5119156a3e30025083b 100644
--- a/dlls/msxml3/stylesheet.c
+++ b/dlls/msxml3/stylesheet.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -563,7 +559,6 @@ static HRESULT WINAPI xslprocessor_transform(
     IXSLProcessor *iface,
     VARIANT_BOOL  *ret)
 {
-#ifdef HAVE_LIBXML2
     xslprocessor *This = impl_from_IXSLProcessor( iface );
     ISequentialStream *stream = NULL;
     HRESULT hr;
@@ -650,10 +645,6 @@ static HRESULT WINAPI xslprocessor_transform(
 
     *ret = hr == S_OK ? VARIANT_TRUE : VARIANT_FALSE;
     return hr;
-#else
-    FIXME("libxml2 is required but wasn't present at compile time\n");
-    return E_NOTIMPL;
-#endif
 }
 
 static HRESULT WINAPI xslprocessor_reset( IXSLProcessor *iface )
@@ -713,7 +704,7 @@ static HRESULT WINAPI xslprocessor_addParameter(
     /* search for existing parameter first */
     LIST_FOR_EACH_ENTRY(cur, &This->params.list, struct xslprocessor_par, entry)
     {
-        if (!strcmpW(cur->name, p))
+        if (!wcscmp(cur->name, p))
         {
             par = cur;
             break;
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index abd89dbd6ba8840a9b2e784b2b55f47dca9d1e27..eb0f130ed03cf5b635da0d69c8d5a82b865d1fc1 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -21,14 +21,10 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/parserInternals.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -40,8 +36,6 @@
 
 #include "wine/debug.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _domtext
@@ -962,5 +956,3 @@ IUnknown* create_text( xmlNodePtr text )
 
     return (IUnknown*)&This->IXMLDOMText_iface;
 }
-
-#endif
diff --git a/dlls/msxml3/xdr.c b/dlls/msxml3/xdr.c
index b5e91bcf229db4b330b00c8f0c74f2a39bb8c75b..0ac9632c8e607a3485375b7290b66757637a3030 100644
--- a/dlls/msxml3/xdr.c
+++ b/dlls/msxml3/xdr.c
@@ -18,13 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-
-#include "config.h"
-
 #include <assert.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/tree.h>
-#endif
+#include <libxml/tree.h>
 
 #include "wine/debug.h"
 
@@ -32,8 +27,6 @@
  * We just convert the doc tree, no need for a parser.
  */
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 static const xmlChar DT_prefix[] = "dt";
@@ -824,5 +817,3 @@ xmlDocPtr XDR_to_XSD_doc(xmlDocPtr xdr_doc, xmlChar const* nsURI)
 
     return xsd_doc;
 }
-
-#endif /* HAVE_LIBXML2 */
diff --git a/dlls/msxml3/xmldoc.c b/dlls/msxml3/xmldoc.c
index d0c65a44a36acbb0f0c281328c13e2d2520cbf5d..8e07b0516f788f728f45c666520b2d245dee0446 100644
--- a/dlls/msxml3/xmldoc.c
+++ b/dlls/msxml3/xmldoc.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -42,8 +38,6 @@
 
 #include "msxml_private.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 /* FIXME: IXMLDocument needs to implement
@@ -597,12 +591,8 @@ static HRESULT WINAPI xmldoc_IPersistStreamInit_IsDirty(
 
 static xmlDocPtr parse_xml(char *ptr, int len)
 {
-#ifdef HAVE_XMLREADMEMORY
     return xmlReadMemory(ptr, len, NULL, NULL,
                          XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NOBLANKS);
-#else
-    return xmlParseMemory(ptr, len);
-#endif
 }
 
 static HRESULT WINAPI xmldoc_IPersistStreamInit_Load(
@@ -718,14 +708,3 @@ HRESULT XMLDocument_create(LPVOID *ppObj)
     TRACE("returning iface %p\n", *ppObj);
     return S_OK;
 }
-
-#else
-
-HRESULT XMLDocument_create(LPVOID *ppObj)
-{
-    MESSAGE("This program tried to use an XMLDocument object, but\n"
-            "libxml2 support was not present at compile time.\n");
-    return E_NOTIMPL;
-}
-
-#endif
diff --git a/dlls/msxml3/xmlelem.c b/dlls/msxml3/xmlelem.c
index f8778aae91d682af00b5e7eed2a55f724cfa3cc1..ec9094dae7da39dcceced875ea3cb5acd4c2fd5a 100644
--- a/dlls/msxml3/xmlelem.c
+++ b/dlls/msxml3/xmlelem.c
@@ -20,13 +20,9 @@
 
 #define COBJMACROS
 
-#include "config.h"
-
 #include <stdarg.h>
-#ifdef HAVE_LIBXML2
-# include <libxml/parser.h>
-# include <libxml/xmlerror.h>
-#endif
+#include <libxml/parser.h>
+#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -39,8 +35,6 @@
 
 #include "msxml_private.h"
 
-#ifdef HAVE_LIBXML2
-
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 static HRESULT XMLElementCollection_create( xmlNodePtr node, LPVOID *ppObj );
@@ -847,5 +841,3 @@ static HRESULT XMLElementCollection_create(xmlNodePtr node, LPVOID *ppObj)
     TRACE("returning iface %p\n", *ppObj);
     return S_OK;
 }
-
-#endif
diff --git a/dlls/msxml3/xmlview.c b/dlls/msxml3/xmlview.c
index f9b38e5e9b7551a3d963bdfe3e83dd1373f20062..ff5615036733d21c66af717917db871eef905f7b 100644
--- a/dlls/msxml3/xmlview.c
+++ b/dlls/msxml3/xmlview.c
@@ -31,7 +31,6 @@
 #include "docobj.h"
 
 #include "wine/debug.h"
-#include "wine/unicode.h"
 
 #include "msxml_dispex.h"
 
@@ -426,12 +425,12 @@ static inline HRESULT handle_xml_load(BindStatusCallback *This)
     }
 
     /* TODO: fix parsing processing instruction value */
-    if((p = strstrW(V_BSTR(&var), hrefW))) {
+    if((p = wcsstr(V_BSTR(&var), hrefW))) {
         p += ARRAY_SIZE(hrefW) - 1;
         if(*p!='\'' && *p!='\"') p = NULL;
         else {
             href = p+1;
-            p = strchrW(href, *p);
+            p = wcschr(href, *p);
         }
     }
     if(p) {
diff --git a/dlls/msxml3/xslpattern.h b/dlls/msxml3/xslpattern.h
index 7b3ee2c7275ab788d245fc1e5fdc2438787142f1..daf6433cd8c79f6d7d96c7d5b80eac812ca63318 100644
--- a/dlls/msxml3/xslpattern.h
+++ b/dlls/msxml3/xslpattern.h
@@ -21,14 +21,6 @@
 #ifndef __XSLPATTERN__
 #define __XSLPATTERN__
 
-#ifndef __WINE_CONFIG_H
-#error You must include config.h to use this header
-#endif
-
-#ifndef HAVE_LIBXML2
-#error You must have libxml2 to use this header
-#endif
-
 #include <libxml/tree.h>
 #include <libxml/xmlstring.h>
 #include <libxml/xpath.h>
diff --git a/dlls/msxml3/xslpattern.l b/dlls/msxml3/xslpattern.l
index 58df30909d3730d4e9e6223dd614fcd3b5ab797b..c02c674709952af6b1526c0cb0b743e904f44f9c 100644
--- a/dlls/msxml3/xslpattern.l
+++ b/dlls/msxml3/xslpattern.l
@@ -19,11 +19,6 @@
  */
 
 %{
-#include "config.h"
-#include "wine/port.h"
-
-#ifdef HAVE_LIBXML2
-
 #include "xslpattern.h"
 #include "xslpattern.tab.h"
 #include "wine/debug.h"
@@ -181,5 +176,3 @@ xmlChar* XSLPattern_to_XPath(xmlXPathContextPtr ctxt, xmlChar const* xslpat_str)
     }
 
 }
-
-#endif /* HAVE_LIBXML2 */
diff --git a/dlls/msxml3/xslpattern.y b/dlls/msxml3/xslpattern.y
index 4a2aad215c1cabef04e406bec762e8d8791e4c78..94136fd12c4c0bf68586a4581b7d91893538802d 100644
--- a/dlls/msxml3/xslpattern.y
+++ b/dlls/msxml3/xslpattern.y
@@ -19,10 +19,6 @@
  */
 
 %{
-#include "config.h"
-#include "wine/port.h"
-
-#ifdef HAVE_LIBXML2
 #include "xslpattern.h"
 #include <libxml/xpathInternals.h>
 #include "wine/debug.h"
@@ -750,5 +746,3 @@ static void xslpattern_error(parser_param* param, void const* scanner, char cons
     ;
 
 %%
-
-#endif  /* HAVE_LIBXML2 */
diff --git a/include/config.h.in b/include/config.h.in
index fc7b7224e9ca75824a96c151b2d2fa18fa136eb8..94bb1dcbe51c1462b07f36f0009e59979aafa112 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -243,27 +243,9 @@
 /* Define to 1 if you have the `unwind' library (-lunwind). */
 #undef HAVE_LIBUNWIND
 
-/* Define if you have the libxml2 library */
-#undef HAVE_LIBXML2
-
-/* Define to 1 if you have the <libxml/parser.h> header file. */
-#undef HAVE_LIBXML_PARSER_H
-
-/* Define to 1 if you have the <libxml/SAX2.h> header file. */
-#undef HAVE_LIBXML_SAX2_H
-
-/* Define to 1 if you have the <libxml/xmlsave.h> header file. */
-#undef HAVE_LIBXML_XMLSAVE_H
-
 /* Define if you have the X Shape extension */
 #undef HAVE_LIBXSHAPE
 
-/* Define to 1 if you have the <libxslt/pattern.h> header file. */
-#undef HAVE_LIBXSLT_PATTERN_H
-
-/* Define to 1 if you have the <libxslt/transform.h> header file. */
-#undef HAVE_LIBXSLT_TRANSFORM_H
-
 /* Define if you have the X Shm extension */
 #undef HAVE_LIBXXSHM
 
@@ -890,24 +872,6 @@
 /* Define if you have the XKB extension */
 #undef HAVE_XKB
 
-/* Define if libxml2 has the xmlDocProperties enum */
-#undef HAVE_XMLDOC_PROPERTIES
-
-/* Define if libxml2 has the xmlFirstElementChild function */
-#undef HAVE_XMLFIRSTELEMENTCHILD
-
-/* Define if libxml2 has the xmlNewDocPI function */
-#undef HAVE_XMLNEWDOCPI
-
-/* Define if libxml2 has the xmlReadMemory function */
-#undef HAVE_XMLREADMEMORY
-
-/* Define if libxml2 has the xmlSchemaSetParserStructuredErrors function */
-#undef HAVE_XMLSCHEMASSETPARSERSTRUCTUREDERRORS
-
-/* Define if libxml2 has the xmlSchemaSetValidStructuredErrors function */
-#undef HAVE_XMLSCHEMASSETVALIDSTRUCTUREDERRORS
-
 /* Define if Xrender has the XRenderCreateLinearGradient function */
 #undef HAVE_XRENDERCREATELINEARGRADIENT
 
@@ -1058,9 +1022,6 @@
 /* Define to the soname of the libXrender library. */
 #undef SONAME_LIBXRENDER
 
-/* Define to the soname of the libxslt library. */
-#undef SONAME_LIBXSLT
-
 /* Define to the soname of the libXxf86vm library. */
 #undef SONAME_LIBXXF86VM