diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/configure.in my/configure.in
--- HEAD/configure.in	2005-09-08 10:27:24.000000000 +0200
+++ my/configure.in	2005-10-29 22:45:57.900507224 +0200
@@ -90,14 +90,30 @@
 
 AC_CHECK_HEADERS(string list map, , exit)
 
-PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0)
+PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.6.1)
 
-GLIBMM_CHECK_PERL([5.6.0])
+AC_ARG_WITH(ustring,
+    AC_HELP_STRING([--without-ustring],
+                   [use std::string instead of Glib::ustring]),
+    ac_cv_use_glibustring="$withval"
+)
+if test "$ac_cv_use_glibustring" != "no"; then
+    PKG_CHECK_MODULES(GLIBMM, glibmm-2.4 >= 2.4.0, ,
+        AC_MSG_ERROR([
+${GLIBMM_PKG_ERRORS-Glib::ustring needed but not available: please see error message above}.
+
+You may specify --without-ustring to use std::string instead of Glib::ustring.])
+    )
+    GLIBMM_CHECK_PERL([5.6.0])
+else
+    AC_DEFINE(LIBXMLPP_USE_STD_STRING, [], [Define this to use std::string instead of Glib::ustring])
+fi
 
 # Dummy conditional just to make automake-1.4 happy.
 # We need an always-false condition in docs/Makefile.am.
 AM_CONDITIONAL(LIBXMLCPP_FALSE,[false])
 
+AC_CONFIG_HEADER(libxml++/config.h)
 
 AC_OUTPUT(
   Makefile
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/docs/manual/libxml++_without_code.xml my/docs/manual/libxml++_without_code.xml
--- HEAD/docs/manual/libxml++_without_code.xml	2005-02-11 14:25:14.000000000 +0100
+++ my/docs/manual/libxml++_without_code.xml	2005-10-29 20:16:58.969431304 +0200
@@ -53,6 +53,15 @@
     <para>Because Standard C++ has no string class that can fully handle UTF-8, libxml++ uses the Glib::ustring class from the glibmm library. Glib::ustring has almost exactly the same API as std::string, but methods such as length() and operator[] deal with whole UTF-8 characters rather than raw bytes.</para>
     <para>There are implicit conversions between std::string and Glib::ustring, so you can use std::string wherever you see a Glib::ustring in the API, if you really don't care about any locale other than English. However, that is unlikely in today's connected world.</para>
     <para>glibmm also provides useful API to convert between encodings and locales.</para>
+    <para>
+        All this being said, if you are absolutely sure that you don't need any
+        extra functionality of Glib::ustring, you can build the library without
+        glibmm and its dependencies. Under Unix this is done by specifying
+        <literal>--without-ustring</literal> in configure arguments and under
+        Windows you have to ensure that <literal>LIBXMLPP_USE_STD_STRING</literal>
+        is defined in your project options and the directory glibmm is in the
+        compiler include path.
+    </para>
     </sect2>
  
     </sect1>
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/examples/Makefile.am_fragment my/examples/Makefile.am_fragment
--- HEAD/examples/Makefile.am_fragment	2005-01-26 22:34:33.000000000 +0100
+++ my/examples/Makefile.am_fragment	2005-10-29 22:21:31.462439696 +0200
@@ -1,5 +1,5 @@
 #Where to find the header files needed by the source files:
-INCLUDES =  -I$(top_srcdir) @LIBXML_CFLAGS@
+INCLUDES =  -I$(top_builddir) -I$(top_srcdir) @LIBXML_CFLAGS@ @GLIBMM_CFLAGS@
 
 #The libraries that the executable needs to link against:
-LIBS = $(top_builddir)/libxml++/libxml++-2.6.la @LIBS@ @LIBXML_LIBS@
+LIBS = $(top_builddir)/libxml++/libxml++-2.6.la @LIBS@ @LIBXML_LIBS@ @GLIBMM_LIBS@
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/examples/dom_parser_raw/main.cc my/examples/dom_parser_raw/main.cc
--- HEAD/examples/dom_parser_raw/main.cc	2004-12-25 16:48:56.000000000 +0100
+++ my/examples/dom_parser_raw/main.cc	2005-10-29 20:18:02.312801648 +0200
@@ -23,7 +23,10 @@
 
 #include <iostream>
 #include <fstream>
-#include <glibmm/convert.h>
+
+#ifndef LIBXMLPP_USE_STD_STRING
+  #include <glibmm/convert.h>
+#endif
 
 
 void print_node(const xmlpp::Node* node, unsigned int indentation = 0)
@@ -76,6 +79,20 @@
     std::string contents = read_from_disk(filepath);
     std::string contents_ucs2;
 
+#ifdef LIBXMLPP_USE_STD_STRING
+    size_t wcSize = mbstowcs(NULL, contents.c_str(), 0);
+    wchar_t *ws = new wchar_t[wcSize+1];
+    if ( mbstowcs(ws, contents.c_str(), wcSize) == (size_t)-1 )
+    {
+      std::cerr << "mbstowcs() failed" << std::endl;
+    }
+    else
+    {
+      const char * const s = (char *)ws;
+      contents_ucs2.assign(s, s + wcslen(ws)*sizeof(wchar_t)/sizeof(char) + 1);
+    }
+    delete [] ws;
+#else // !LIBXMLPP_USE_STD_STRING
     try
     {
       contents_ucs2 = Glib::convert(contents, "UCS-2", "UTF-8");
@@ -84,6 +101,7 @@
     {
       std::cerr << "Glib::convert failed: " << ex.what() << std::endl;
     }
+#endif // LIBXMLPP_USE_STD_STRING/!LIBXMLPP_USE_STD_STRING
 
     parser.parse_memory_raw((const unsigned char*)contents_ucs2.c_str(), contents_ucs2.size());
 
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/examples/import_node/main.cc my/examples/import_node/main.cc
--- HEAD/examples/import_node/main.cc	2003-12-19 19:51:58.000000000 +0100
+++ my/examples/import_node/main.cc	2005-10-29 22:26:44.852797120 +0200
@@ -1,6 +1,5 @@
 #include <iostream>
 #include <stdexcept>
-#include <glibmm/ustring.h>
 #include <cstdlib>
 #include <libxml++/libxml++.h>
 
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/examples/sax_parser_build_dom/svgelement.h my/examples/sax_parser_build_dom/svgelement.h
--- HEAD/examples/sax_parser_build_dom/svgelement.h	2003-12-19 19:52:04.000000000 +0100
+++ my/examples/sax_parser_build_dom/svgelement.h	2005-10-29 22:25:57.466001008 +0200
@@ -24,7 +24,6 @@
 #ifndef __LIBXMLPP_SVGELEMENT_H
 #define __LIBXMLPP_SVGELEMENT_H
 
-#include <glibmm/ustring.h>
 #include <libxml++/libxml++.h>
 #include <libxml/tree.h>
 
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/examples/sax_parser_build_dom/svgparser.h my/examples/sax_parser_build_dom/svgparser.h
--- HEAD/examples/sax_parser_build_dom/svgparser.h	2003-12-19 19:52:04.000000000 +0100
+++ my/examples/sax_parser_build_dom/svgparser.h	2005-10-29 22:25:35.765300016 +0200
@@ -25,7 +25,6 @@
 #define __LIBXMLPP_SVGPARSER_H
 
 #include <stack>
-#include <glibmm/ustring.h>
 #include <libxml++/libxml++.h>
 
 namespace SVG {
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/examples/sax_parser_build_dom/svgpath.h my/examples/sax_parser_build_dom/svgpath.h
--- HEAD/examples/sax_parser_build_dom/svgpath.h	2003-12-19 19:52:04.000000000 +0100
+++ my/examples/sax_parser_build_dom/svgpath.h	2005-10-29 22:26:26.470591640 +0200
@@ -24,7 +24,6 @@
 #ifndef __LIBXMLPP_SVGPATH_H
 #define __LIBXMLPP_SVGPATH_H
 
-#include <glibmm/ustring.h>
 #include <libxml++/libxml++.h>
 #include "svgelement.h"
 
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/Makefile.am my/libxml++/Makefile.am
--- HEAD/libxml++/Makefile.am	2005-08-25 00:30:44.000000000 +0200
+++ my/libxml++/Makefile.am	2005-10-29 22:13:24.375488168 +0200
@@ -1,8 +1,8 @@
 SUBDIRS = parsers exceptions nodes io validators
 
-INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
+INCLUDES = -I$(top_builddir) -I$(top_srcdir) @LIBXML_CFLAGS@ @GLIBMM_CFLAGS@
 
-h_sources_public = libxml++.h attribute.h dtd.h document.h noncopyable.h keepblanks.h
+h_sources_public = libxml++.h attribute.h dtd.h document.h noncopyable.h keepblanks.h xmlstring.h config.h
 h_sources_private = 
 cc_sources = attribute.cc dtd.cc document.cc noncopyable.cc keepblanks.cc
 cc_sources_private =
@@ -21,7 +21,8 @@
                          exceptions/libexceptions.la \
                          nodes/libnodes.la \
                          io/libio.la \
-						 @LIBXML_LIBS@
+                         @LIBXML_LIBS@ \
+                         @GLIBMM_LIBS@
 libxml___2_6_la_SOURCES = $(cc_sources) $(h_sources_public) $(h_sources_private) $(cc_sources_private)
 
 # Install the headers:
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/attribute.h my/libxml++/attribute.h
--- HEAD/libxml++/attribute.h	2004-02-13 21:09:41.000000000 +0100
+++ my/libxml++/attribute.h	2005-10-29 19:53:09.379761968 +0200
@@ -8,8 +8,7 @@
 #define __LIBXMLPP_ATTRIBUTE_H
 
 
-#include <glibmm/ustring.h>
-
+#include <libxml++/xmlstring.h>
 #include <libxml++/nodes/node.h>
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/config.h.in my/libxml++/config.h.in
--- HEAD/libxml++/config.h.in	1970-01-01 01:00:00.000000000 +0100
+++ my/libxml++/config.h.in	2005-10-29 22:40:50.420251328 +0200
@@ -0,0 +1,67 @@
+/* libxml++/config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <list> header file. */
+#undef HAVE_LIST
+
+/* Define to 1 if you have the <map> header file. */
+#undef HAVE_MAP
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <string> header file. */
+#undef HAVE_STRING
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define this to use std::string instead of Glib::ustring */
+#undef LIBXMLPP_USE_STD_STRING
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/exceptions/Makefile.am my/libxml++/exceptions/Makefile.am
--- HEAD/libxml++/exceptions/Makefile.am	2003-12-19 19:30:32.000000000 +0100
+++ my/libxml++/exceptions/Makefile.am	2005-10-29 22:11:57.926630392 +0200
@@ -1,4 +1,4 @@
-INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
+INCLUDES = -I$(top_builddir) -I$(top_srcdir) @LIBXML_CFLAGS@ @GLIBMM_CFLAGS@
 
 h_sources_public = exception.h parse_error.h validity_error.h internal_error.h
 cc_sources = exception.cc parse_error.cc validity_error.cc internal_error.cc
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/exceptions/exception.h my/libxml++/exceptions/exception.h
--- HEAD/libxml++/exceptions/exception.h	2003-12-19 19:52:10.000000000 +0100
+++ my/libxml++/exceptions/exception.h	2005-10-29 19:53:20.501071272 +0200
@@ -23,7 +23,8 @@
 #define __LIBXMLPP_EXCEPTION_H
 
 #include <exception>
-#include <glibmm/ustring.h>
+
+#include <libxml++/xmlstring.h>
 
 namespace xmlpp
 {
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/exceptions/internal_error.h my/libxml++/exceptions/internal_error.h
--- HEAD/libxml++/exceptions/internal_error.h	2003-12-19 19:52:10.000000000 +0100
+++ my/libxml++/exceptions/internal_error.h	2005-10-29 19:54:19.065168176 +0200
@@ -24,9 +24,6 @@
 
 #include <libxml++/exceptions/exception.h>
 
-#include <exception>
-#include <glibmm/ustring.h>
-
 namespace xmlpp {
   
 class internal_error: public exception
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/exceptions/parse_error.h my/libxml++/exceptions/parse_error.h
--- HEAD/libxml++/exceptions/parse_error.h	2003-12-19 19:52:10.000000000 +0100
+++ my/libxml++/exceptions/parse_error.h	2005-10-29 19:54:30.520426712 +0200
@@ -24,9 +24,6 @@
 
 #include <libxml++/exceptions/exception.h>
 
-#include <exception>
-#include <glibmm/ustring.h>
-
 namespace xmlpp
 {
 
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/io/Makefile.am my/libxml++/io/Makefile.am
--- HEAD/libxml++/io/Makefile.am	2004-05-28 23:33:03.000000000 +0200
+++ my/libxml++/io/Makefile.am	2005-10-29 22:11:57.929629936 +0200
@@ -1,4 +1,4 @@
-INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
+INCLUDES = -I$(top_builddir) -I$(top_srcdir) @LIBXML_CFLAGS@ @GLIBMM_CFLAGS@
 
 h_sources_public = \
   istreamparserinputbuffer.h \
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/io/outputbuffer.h my/libxml++/io/outputbuffer.h
--- HEAD/libxml++/io/outputbuffer.h	2004-02-13 21:09:42.000000000 +0100
+++ my/libxml++/io/outputbuffer.h	2005-10-29 19:54:46.059064480 +0200
@@ -10,7 +10,7 @@
 #ifndef __LIBXMLPP_OUTPUTBUFFER_H
 #define __LIBXMLPP_OUTPUTBUFFER_H
 
-#include <glibmm/ustring.h>
+#include <libxml++/xmlstring.h>
 #include <libxml++/noncopyable.h>
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/nodes/Makefile.am my/libxml++/nodes/Makefile.am
--- HEAD/libxml++/nodes/Makefile.am	2003-12-19 19:30:35.000000000 +0100
+++ my/libxml++/nodes/Makefile.am	2005-10-29 22:11:57.932629480 +0200
@@ -1,4 +1,4 @@
-INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
+INCLUDES = -I$(top_builddir) -I$(top_srcdir) @LIBXML_CFLAGS@ @GLIBMM_CFLAGS@
 
 h_sources_public = \
 	cdatanode.h \
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/nodes/node.h my/libxml++/nodes/node.h
--- HEAD/libxml++/nodes/node.h	2004-12-25 16:29:05.000000000 +0100
+++ my/libxml++/nodes/node.h	2005-10-29 19:55:00.168919456 +0200
@@ -9,7 +9,8 @@
 
 #include <libxml++/noncopyable.h>
 #include <libxml++/exceptions/exception.h>
-#include <glibmm/ustring.h>
+#include <libxml++/xmlstring.h>
+
 #include <list>
 #include <map>
 #include <vector>
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/parsers/Makefile.am my/libxml++/parsers/Makefile.am
--- HEAD/libxml++/parsers/Makefile.am	2004-02-06 18:34:24.000000000 +0100
+++ my/libxml++/parsers/Makefile.am	2005-10-29 22:11:57.935629024 +0200
@@ -1,4 +1,4 @@
-INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
+INCLUDES = -I$(top_builddir) -I$(top_srcdir) @LIBXML_CFLAGS@ @GLIBMM_CFLAGS@
 
 h_sources_public = parser.h saxparser.h domparser.h textreader.h
 cc_sources = parser.cc saxparser.cc domparser.cc textreader.cc
@@ -9,4 +9,4 @@
 
 # Install the headers:
 library_includedir=$(includedir)/libxml++-2.6/libxml++/parsers
-library_include_HEADERS = $(h_sources_public)
\ No newline at end of file
+library_include_HEADERS = $(h_sources_public)
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/parsers/domparser.cc my/libxml++/parsers/domparser.cc
--- HEAD/libxml++/parsers/domparser.cc	2005-04-24 17:18:32.000000000 +0200
+++ my/libxml++/parsers/domparser.cc	2005-10-29 20:01:25.720306736 +0200
@@ -80,7 +80,7 @@
 
 void DomParser::parse_memory(const Glib::ustring& contents)
 {
-  parse_memory_raw((const unsigned char*)contents.c_str(), contents.bytes());
+  parse_memory_raw((const unsigned char*)contents.c_str(), String::bytes(contents));
 }
 
 void DomParser::parse_context()
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/parsers/saxparser.cc my/libxml++/parsers/saxparser.cc
--- HEAD/libxml++/parsers/saxparser.cc	2005-04-24 17:05:49.000000000 +0200
+++ my/libxml++/parsers/saxparser.cc	2005-10-29 20:01:58.973251520 +0200
@@ -186,7 +186,7 @@
   
 void SaxParser::parse_memory(const Glib::ustring& contents)
 {
-  parse_memory_raw((const unsigned char*)contents.c_str(), contents.bytes());
+  parse_memory_raw((const unsigned char*)contents.c_str(), String::bytes(contents));
 }
 
 void SaxParser::parse_stream(std::istream& in)
@@ -242,7 +242,7 @@
   }
   
   if(!exception_)
-    xmlParseChunk(context_, chunk.c_str(), chunk.bytes(), 0 /* don't terminate */);
+    xmlParseChunk(context_, chunk.c_str(), String::bytes(chunk), 0 /* don't terminate */);
 
   check_for_exception();
 }
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/parsers/textreader.h my/libxml++/parsers/textreader.h
--- HEAD/libxml++/parsers/textreader.h	2005-08-26 10:40:11.000000000 +0200
+++ my/libxml++/parsers/textreader.h	2005-10-29 19:55:39.902878976 +0200
@@ -9,8 +9,7 @@
 
 #include <libxml++/noncopyable.h>
 #include <libxml++/nodes/node.h>
-
-#include <glibmm/ustring.h>
+#include <libxml++/xmlstring.h>
 
 extern "C"
 {
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/validators/Makefile.am my/libxml++/validators/Makefile.am
--- HEAD/libxml++/validators/Makefile.am	2004-05-28 23:33:03.000000000 +0200
+++ my/libxml++/validators/Makefile.am	2005-10-29 22:11:57.938628568 +0200
@@ -1,4 +1,4 @@
-INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
+INCLUDES = -I$(top_builddir) -I$(top_srcdir) @LIBXML_CFLAGS@ @GLIBMM_CFLAGS@
 
 h_sources_public = validator.h dtdvalidator.h
 cc_sources = validator.cc dtdvalidator.cc
diff -x aclocal.m4 -x ltmain.sh -x missing -x mkinstalldirs -x install-sh -x config.sub -x config.guess -x configure -x depcomp -x autom4te.cache -x '*.sw?' -rNu HEAD/libxml++/xmlstring.h my/libxml++/xmlstring.h
--- HEAD/libxml++/xmlstring.h	1970-01-01 01:00:00.000000000 +0100
+++ my/libxml++/xmlstring.h	2005-10-29 21:45:31.194850288 +0200
@@ -0,0 +1,65 @@
+/* libxml++/xmlstring.h
+ * this file is part of libxml++
+ *
+ * copyright (C) 2005 by the libxml++ development team
+ *
+ * this file is covered by the GNU Lesser General Public License,
+ * which should be included with libxml++ as the file COPYING.
+ */
+
+/*
+   This header either just forwards to glibmm/ustring.h or, if we're configured
+   to not use Glib::ustring, defines a replacement class using std::string.
+ */
+#ifndef LIBXMLPP_XMLSTRING_H_
+#define LIBXMLPP_XMLSTRING_H_
+
+#ifdef HAVE_CONFIG_H
+#include "libxml++/config.h"
+#endif
+
+#include <stdlib.h>
+
+#ifdef LIBXMLPP_USE_STD_STRING
+
+#include <string>
+
+namespace Glib { typedef std::string ustring; }
+
+namespace xmlpp
+{
+
+/**
+    Helper functions for working with strings.
+ */
+namespace String
+{
+
+/**
+    Returns the size in bytes of the given string.
+ */
+inline size_t bytes(const std::string& s) { return s.size(); }
+
+}
+
+}
+
+#else // use Glib::ustring
+
+#include <glibmm/ustring.h>
+
+namespace xmlpp
+{
+
+namespace String
+{
+
+inline size_t bytes(const Glib::ustring& s) { return s.bytes(); }
+
+}
+
+}
+
+#endif // std::string/Glib::ustring
+
+#endif // LIBXMLPP_XMLSTRING_H_
