diff -u -r libxml++-2.14.0/configure libxml++_std_string-2.14.0/configure
--- libxml++-2.14.0/configure	2006-03-13 07:57:56.000000000 -0800
+++ libxml++_std_string-2.14.0/configure	2006-08-22 17:16:19.000000000 -0700
@@ -463,7 +463,7 @@
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GENERIC_MAJOR_VERSION GENERIC_MINOR_VERSION GENERIC_MICRO_VERSION GENERIC_VERSION GENERIC_LIBRARY_VERSION INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP F77 FFLAGS ac_ct_F77 LIBTOOL PLATFORM_WIN32_TRUE PLATFORM_WIN32_FALSE PKG_CONFIG ac_pt_PKG_CONFIG LIBXML_CFLAGS LIBXML_LIBS PERL_PATH LIBXMLCPP_FALSE_TRUE LIBXMLCPP_FALSE_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GENERIC_MAJOR_VERSION GENERIC_MINOR_VERSION GENERIC_MICRO_VERSION GENERIC_VERSION GENERIC_LIBRARY_VERSION INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP F77 FFLAGS ac_ct_F77 LIBTOOL PLATFORM_WIN32_TRUE PLATFORM_WIN32_FALSE PKG_CONFIG ac_pt_PKG_CONFIG LIBXML_CFLAGS LIBXML_LIBS PERL_PATH LIBXMLCPP_FALSE_TRUE LIBXMLCPP_FALSE_FALSE LIBOBJS LTLIBOBJS requires'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -1053,6 +1053,7 @@
                           both]
   --with-tags[=TAGS]
                           include additional configurations [automatic]
+  --with-std-string       use std::string instead of Glib::ustring [default=use Glib::ustring]
 
 Some influential environment variables:
   CXX         C++ compiler command
@@ -4061,7 +4062,13 @@
 echo "${ECHO_T}$ac_cv_prog_egrep" >&6
  EGREP=$ac_cv_prog_egrep
 
-
+# Check whether --with-std-string was given.
+if test "${with_std_string+set}" = set; then
+  withval="$with_std_string"
+  test "$withval" = no || with_std_string=yes
+else
+  with_std_string=no
+fi;
 
 # Check whether --with-gnu-ld or --without-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then
@@ -19639,17 +19646,27 @@
 echo "$as_me:$LINENO: checking for LIBXML" >&5
 echo $ECHO_N "checking for LIBXML... $ECHO_C" >&6
 
+pkg_req="libxml-2.0 >= 2.6.1"
+requires="libxml-2.0"
+
+if test "$with_std_string" = no; then
+    pkg_req="$pkg_req glibmm-2.4 >= 2.4.0"
+    requires="$requires glibmm-2.4"
+else 
+    CPPFLAGS="$CPPFLAGS -DLIBXMLPP_USE_STD_STRING"
+fi
+
 if test -n "$PKG_CONFIG"; then
     if test -n "$LIBXML_CFLAGS"; then
         pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0\"") >&5
-  ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0") 2>&5
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"$pkg_req\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$pkg_req") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-  pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0" 2>/dev/null`
+  pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "$pkg_req" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -19657,17 +19674,18 @@
 else
 	pkg_failed=untried
 fi
+
 if test -n "$PKG_CONFIG"; then
     if test -n "$LIBXML_LIBS"; then
         pkg_cv_LIBXML_LIBS="$LIBXML_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0\"") >&5
-  ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0") 2>&5
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"$pkg_req\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$pkg_req") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-  pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0" 2>/dev/null`
+  pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "$pkg_req" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -19686,14 +19704,14 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        LIBXML_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0"`
+	        LIBXML_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$pkg_req"`
         else
-	        LIBXML_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0"`
+	        LIBXML_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$pkg_req"`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$LIBXML_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements (libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0) were not met:
+	{ { echo "$as_me:$LINENO: error: Package requirements ($pkg_req) were not met:
 
 $LIBXML_PKG_ERRORS
 
@@ -19704,7 +19722,7 @@
 and LIBXML_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements (libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0) were not met:
+echo "$as_me: error: Package requirements ($pkg_req) were not met:
 
 $LIBXML_PKG_ERRORS
 
@@ -19746,6 +19764,7 @@
 	:
 fi
 
+if test "$with_std_string" = no; then
 
   glibmm_perl_result=no
 
@@ -19830,7 +19849,7 @@
   }
   fi
 
-
+fi
 
 
 # Dummy conditional just to make automake-1.4 happy.
@@ -20586,6 +20605,7 @@
 s,@CYGPATH_W@,$CYGPATH_W,;t t
 s,@PACKAGE@,$PACKAGE,;t t
 s,@VERSION@,$VERSION,;t t
+s,@requires@,$requires,;t t
 s,@ACLOCAL@,$ACLOCAL,;t t
 s,@AUTOCONF@,$AUTOCONF,;t t
 s,@AUTOMAKE@,$AUTOMAKE,;t t
diff -u -r libxml++-2.14.0/examples/dom_build/main.cc libxml++_std_string-2.14.0/examples/dom_build/main.cc
--- libxml++-2.14.0/examples/dom_build/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/dom_build/main.cc	2006-08-22 15:39:22.000000000 -0700
@@ -54,7 +54,7 @@
     nodeChild = nodeRoot->add_child("examplechild", "foobar"); //foobar is the namespace prefix
     nodeChild->set_attribute("id", "2", "foobar"); //foobar is the namespace prefix.
 
-    Glib::ustring whole = document.write_to_string();
+    xmlpp::string whole = document.write_to_string();
     std::cout << "XML built at runtime: " << std::endl << whole << std::endl;
     std::cout << "default namespace: " << nodeRoot->get_namespace_uri() << std::endl;
   }
diff -u -r libxml++-2.14.0/examples/dom_parse_entities/main.cc libxml++_std_string-2.14.0/examples/dom_parse_entities/main.cc
--- libxml++-2.14.0/examples/dom_parse_entities/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/dom_parse_entities/main.cc	2006-08-22 15:39:22.000000000 -0700
@@ -61,7 +61,7 @@
 
 int main(int argc, char* argv[])
 {
-  Glib::ustring filepath;
+  xmlpp::string filepath;
   if(argc > 1 )
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
diff -u -r libxml++-2.14.0/examples/dom_parser/main.cc libxml++_std_string-2.14.0/examples/dom_parser/main.cc
--- libxml++-2.14.0/examples/dom_parser/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/dom_parser/main.cc	2006-08-22 15:39:23.000000000 -0700
@@ -44,7 +44,7 @@
   if(nodeText && nodeText->is_white_space()) //Let's ignore the indenting - you don't always want to do this.
     return;
     
-  Glib::ustring nodename = node->get_name();
+  xmlpp::string nodename = node->get_name();
 
   if(!nodeText && !nodeComment && !nodename.empty()) //Let's not say "name: text".
   {
@@ -112,7 +112,7 @@
 
 int main(int argc, char* argv[])
 {
-  Glib::ustring filepath;
+  xmlpp::string filepath;
   if(argc > 1 )
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
diff -u -r libxml++-2.14.0/examples/dom_parser_raw/main.cc libxml++_std_string-2.14.0/examples/dom_parser_raw/main.cc
--- libxml++-2.14.0/examples/dom_parser_raw/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/dom_parser_raw/main.cc	2006-08-22 15:39:23.000000000 -0700
@@ -23,8 +23,9 @@
 
 #include <iostream>
 #include <fstream>
+#ifndef LIBXMLPP_USE_STD_STRING
 #include <glibmm/convert.h>
-
+#endif
 
 void print_node(const xmlpp::Node* node, unsigned int indentation = 0)
 {
@@ -60,7 +61,7 @@
 
 int main(int argc, char* argv[])
 {
-  Glib::ustring filepath;
+  xmlpp::string filepath;
   if(argc > 1 )
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
@@ -74,6 +75,7 @@
    
 
     std::string contents = read_from_disk(filepath);
+#ifndef LIBXMLPP_USE_STD_STRING
     std::string contents_ucs2;
 
     try
@@ -95,6 +97,9 @@
       std::cout << std::hex << (int)contents_ucs2[i] << ", ";
     }
     std::cout << std::endl;
+#else
+    parser.parse_memory_raw((const unsigned char*)contents.c_str(), contents.size());
+#endif
 
     if(parser)
     {
diff -u -r libxml++-2.14.0/examples/dom_read_write/main.cc libxml++_std_string-2.14.0/examples/dom_read_write/main.cc
--- libxml++-2.14.0/examples/dom_read_write/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/dom_read_write/main.cc	2006-08-22 15:39:23.000000000 -0700
@@ -32,7 +32,7 @@
 main(int argc, char* argv[])
 {
   //Parse command-line arguments:
-  Glib::ustring filepath_in, filepath_out;
+  xmlpp::string filepath_in, filepath_out;
   if(argc > 1 )
     filepath_in = argv[1]; //Allow the user to specify a different XML file to parse.
   else
diff -u -r libxml++-2.14.0/examples/dom_xpath/main.cc libxml++_std_string-2.14.0/examples/dom_xpath/main.cc
--- libxml++-2.14.0/examples/dom_xpath/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/dom_xpath/main.cc	2006-08-22 15:39:23.000000000 -0700
@@ -28,7 +28,7 @@
 #include <iostream>
 
 
-void xpath_test(const xmlpp::Node* node, const Glib::ustring& xpath)
+void xpath_test(const xmlpp::Node* node, const xmlpp::string& xpath)
 {
   std::cout << std::endl; //Separate tests by an empty line.
   std::cout << "searching with xpath '" << xpath << "' in root node: " << std::endl;
@@ -46,7 +46,7 @@
 
 int main(int argc, char* argv[])
 {
-  Glib::ustring filepath;
+  xmlpp::string filepath;
   if(argc > 1 )
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
diff -u -r libxml++-2.14.0/examples/dtdvalidation/main.cc libxml++_std_string-2.14.0/examples/dtdvalidation/main.cc
--- libxml++-2.14.0/examples/dtdvalidation/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/dtdvalidation/main.cc	2006-08-22 15:39:23.000000000 -0700
@@ -30,7 +30,7 @@
 
 int main(int argc, char* argv[])
 {
-  Glib::ustring dtdfilepath;
+  xmlpp::string dtdfilepath;
   if(argc > 1)
     dtdfilepath = argv[1]; //Allow the user to specify a different dtd file to use.
   else
diff -u -r libxml++-2.14.0/examples/import_node/main.cc libxml++_std_string-2.14.0/examples/import_node/main.cc
--- libxml++-2.14.0/examples/import_node/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/import_node/main.cc	2006-08-22 15:40:36.000000000 -0700
@@ -1,6 +1,6 @@
 #include <iostream>
 #include <stdexcept>
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 #include <cstdlib>
 #include <libxml++/libxml++.h>
 
@@ -26,7 +26,7 @@
     root1->import_node(node_to_add);
     
     // print out the new doc1
-    string doc1_string = doc1->write_to_string_formatted();
+    std::string doc1_string = doc1->write_to_string_formatted();
     cout << doc1_string;
     return EXIT_SUCCESS;
   }
diff -u -r libxml++-2.14.0/examples/sax_exception/myparser.cc libxml++_std_string-2.14.0/examples/sax_exception/myparser.cc
--- libxml++-2.14.0/examples/sax_exception/myparser.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_exception/myparser.cc	2006-08-22 15:39:23.000000000 -0700
@@ -68,7 +68,7 @@
   std::cout << "on_end_document()" << std::endl;
 }
 
-void MySaxParser::on_start_element(const Glib::ustring& name,
+void MySaxParser::on_start_element(const xmlpp::string& name,
                                    const AttributeList& attributes)
 {
   std::cout << "node name=" << name << std::endl;
@@ -85,32 +85,32 @@
   
 }
 
-void MySaxParser::on_end_element(const Glib::ustring& name)
+void MySaxParser::on_end_element(const xmlpp::string& name)
 {
   std::cout << "on_end_element()" << std::endl;
 }
 
-void MySaxParser::on_characters(const Glib::ustring& text)
+void MySaxParser::on_characters(const xmlpp::string& text)
 {
   std::cout << "on_characters(): " << text << std::endl;
 }
 
-void MySaxParser::on_comment(const Glib::ustring& text)
+void MySaxParser::on_comment(const xmlpp::string& text)
 {
   std::cout << "on_comment(): " << text << std::endl;
 }
 
-void MySaxParser::on_warning(const Glib::ustring& text)
+void MySaxParser::on_warning(const xmlpp::string& text)
 {
   std::cout << "on_warning(): " << text << std::endl;
 }
 
-void MySaxParser::on_error(const Glib::ustring& text)
+void MySaxParser::on_error(const xmlpp::string& text)
 {
   std::cout << "on_error(): " << text << std::endl;
 }
 
-void MySaxParser::on_fatal_error(const Glib::ustring& text)
+void MySaxParser::on_fatal_error(const xmlpp::string& text)
 {
   std::cout << "on_fatal_error(): " << text << std::endl;
 }
diff -u -r libxml++-2.14.0/examples/sax_exception/myparser.h libxml++_std_string-2.14.0/examples/sax_exception/myparser.h
--- libxml++-2.14.0/examples/sax_exception/myparser.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_exception/myparser.h	2006-08-22 15:39:23.000000000 -0700
@@ -43,14 +43,14 @@
     //overrides:
     virtual void on_start_document();
     virtual void on_end_document();
-    virtual void on_start_element(const Glib::ustring& name,
+    virtual void on_start_element(const xmlpp::string& name,
                                   const AttributeList &properties);
-    virtual void on_end_element(const Glib::ustring& name);
-    virtual void on_characters(const Glib::ustring& characters);
-    virtual void on_comment(const Glib::ustring& text);
-    virtual void on_warning(const Glib::ustring& text);
-    virtual void on_error(const Glib::ustring& text);
-    virtual void on_fatal_error(const Glib::ustring& text);
+    virtual void on_end_element(const xmlpp::string& name);
+    virtual void on_characters(const xmlpp::string& characters);
+    virtual void on_comment(const xmlpp::string& text);
+    virtual void on_warning(const xmlpp::string& text);
+    virtual void on_error(const xmlpp::string& text);
+    virtual void on_fatal_error(const xmlpp::string& text);
 };
 
 
diff -u -r libxml++-2.14.0/examples/sax_parser/main.cc libxml++_std_string-2.14.0/examples/sax_parser/main.cc
--- libxml++-2.14.0/examples/sax_parser/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser/main.cc	2006-08-22 15:39:23.000000000 -0700
@@ -31,7 +31,7 @@
 int
 main(int argc, char* argv[])
 {
-  Glib::ustring filepath;
+  xmlpp::string filepath;
   if(argc > 1 )
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
@@ -60,7 +60,7 @@
     MySaxParser parser;
     do {
       is.read(buffer, 63);
-      Glib::ustring input(buffer, is.gcount());
+      xmlpp::string input(buffer, is.gcount());
 
       parser.parse_chunk(input);
     }
diff -u -r libxml++-2.14.0/examples/sax_parser/myparser.cc libxml++_std_string-2.14.0/examples/sax_parser/myparser.cc
--- libxml++-2.14.0/examples/sax_parser/myparser.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser/myparser.cc	2006-08-22 15:39:23.000000000 -0700
@@ -42,7 +42,7 @@
   std::cout << "on_end_document()" << std::endl;
 }
 
-void MySaxParser::on_start_element(const Glib::ustring& name,
+void MySaxParser::on_start_element(const xmlpp::string& name,
                                    const AttributeList& attributes)
 {
   std::cout << "node name=" << name << std::endl;
@@ -54,32 +54,32 @@
   }
 }
 
-void MySaxParser::on_end_element(const Glib::ustring& name)
+void MySaxParser::on_end_element(const xmlpp::string& name)
 {
   std::cout << "on_end_element()" << std::endl;
 }
 
-void MySaxParser::on_characters(const Glib::ustring& text)
+void MySaxParser::on_characters(const xmlpp::string& text)
 {
   std::cout << "on_characters(): " << text << std::endl;
 }
 
-void MySaxParser::on_comment(const Glib::ustring& text)
+void MySaxParser::on_comment(const xmlpp::string& text)
 {
   std::cout << "on_comment(): " << text << std::endl;
 }
 
-void MySaxParser::on_warning(const Glib::ustring& text)
+void MySaxParser::on_warning(const xmlpp::string& text)
 {
   std::cout << "on_warning(): " << text << std::endl;
 }
 
-void MySaxParser::on_error(const Glib::ustring& text)
+void MySaxParser::on_error(const xmlpp::string& text)
 {
   std::cout << "on_error(): " << text << std::endl;
 }
 
-void MySaxParser::on_fatal_error(const Glib::ustring& text)
+void MySaxParser::on_fatal_error(const xmlpp::string& text)
 {
   std::cout << "on_fatal_error(): " << text << std::endl;
 }
diff -u -r libxml++-2.14.0/examples/sax_parser/myparser.h libxml++_std_string-2.14.0/examples/sax_parser/myparser.h
--- libxml++-2.14.0/examples/sax_parser/myparser.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser/myparser.h	2006-08-22 15:39:23.000000000 -0700
@@ -34,14 +34,14 @@
   //overrides:
   virtual void on_start_document();
   virtual void on_end_document();
-  virtual void on_start_element(const Glib::ustring& name,
+  virtual void on_start_element(const xmlpp::string& name,
                                 const AttributeList& properties);
-  virtual void on_end_element(const Glib::ustring& name);
-  virtual void on_characters(const Glib::ustring& characters);
-  virtual void on_comment(const Glib::ustring& text);
-  virtual void on_warning(const Glib::ustring& text);
-  virtual void on_error(const Glib::ustring& text);
-  virtual void on_fatal_error(const Glib::ustring& text);
+  virtual void on_end_element(const xmlpp::string& name);
+  virtual void on_characters(const xmlpp::string& characters);
+  virtual void on_comment(const xmlpp::string& text);
+  virtual void on_warning(const xmlpp::string& text);
+  virtual void on_error(const xmlpp::string& text);
+  virtual void on_fatal_error(const xmlpp::string& text);
 };
 
 
diff -u -r libxml++-2.14.0/examples/sax_parser_build_dom/main.cc libxml++_std_string-2.14.0/examples/sax_parser_build_dom/main.cc
--- libxml++-2.14.0/examples/sax_parser_build_dom/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_build_dom/main.cc	2006-08-22 15:39:22.000000000 -0700
@@ -37,7 +37,7 @@
 int
 main(int argc, char* argv[])
 {
-  Glib::ustring filepath;
+  xmlpp::string filepath;
   if(argc > 1 )
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
diff -u -r libxml++-2.14.0/examples/sax_parser_build_dom/svgelement.cc libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgelement.cc
--- libxml++-2.14.0/examples/sax_parser_build_dom/svgelement.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgelement.cc	2006-08-22 15:39:22.000000000 -0700
@@ -33,12 +33,12 @@
 {}
 
 // example custom methods
-void Element::set_style(const Glib::ustring& style)
+void Element::set_style(const xmlpp::string& style)
 {
   set_attribute("style", style);
 }
     
-const Glib::ustring Element::get_style() const
+const xmlpp::string Element::get_style() const
 {
   return get_attribute("style")->get_value();
 }
diff -u -r libxml++-2.14.0/examples/sax_parser_build_dom/svgelement.h libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgelement.h
--- libxml++-2.14.0/examples/sax_parser_build_dom/svgelement.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgelement.h	2006-08-22 15:39:22.000000000 -0700
@@ -24,7 +24,7 @@
 #ifndef __LIBXMLPP_SVGELEMENT_H
 #define __LIBXMLPP_SVGELEMENT_H
 
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 #include <libxml++/libxml++.h>
 #include <libxml/tree.h>
 
@@ -38,8 +38,8 @@
   virtual ~Element();
 
   // example custom methods
-  void set_style(const Glib::ustring& style);
-  const Glib::ustring get_style() const;
+  void set_style(const xmlpp::string& style);
+  const xmlpp::string get_style() const;
     
   // TODO: add custom methods 
 
diff -u -r libxml++-2.14.0/examples/sax_parser_build_dom/svgparser.cc libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgparser.cc
--- libxml++-2.14.0/examples/sax_parser_build_dom/svgparser.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgparser.cc	2006-08-22 15:39:23.000000000 -0700
@@ -41,7 +41,7 @@
 {
 }
 
-void Parser::on_start_element(const Glib::ustring& name,
+void Parser::on_start_element(const xmlpp::string& name,
                                    const AttributeList& attributes)
 {
   //This method replaces the normal libxml++ node
@@ -50,10 +50,10 @@
   //work with future versions of libxml++.
   
   // Parse namespace prefix and save for later:
-  Glib::ustring elementPrefix;
-  Glib::ustring elementName = name;
-  Glib::ustring::size_type idx = name.find(':'); 
-  if (idx != Glib::ustring::npos) //If the separator was found
+  xmlpp::string elementPrefix;
+  xmlpp::string elementName = name;
+  xmlpp::string::size_type idx = name.find(':'); 
+  if (idx != xmlpp::string::npos) //If the separator was found
   {
     elementPrefix = name.substr(0, idx);
     elementName = name.substr(idx + 1);
@@ -108,10 +108,10 @@
     // In theory, you could change the attributes here.
     for(xmlpp::SaxParser::AttributeList::const_iterator iter = attributes.begin(); iter != attributes.end(); ++iter)
     {
-      Glib::ustring name = (*iter).name;
-      Glib::ustring value = (*iter).value;
-      Glib::ustring::size_type idx = name.find(':');
-      if (idx == Glib::ustring::npos) // If the separator was not found.
+      xmlpp::string name = (*iter).name;
+      xmlpp::string value = (*iter).value;
+      xmlpp::string::size_type idx = name.find(':');
+      if (idx == xmlpp::string::npos) // If the separator was not found.
       {
         if (name == "xmlns") // This is a namespace declaration.
         {
@@ -127,8 +127,8 @@
       else
       {
         //The separator was found:
-        Glib::ustring prefix = name.substr(0, idx);
-        Glib::ustring suffix = name.substr(idx + 1);
+        xmlpp::string prefix = name.substr(0, idx);
+        xmlpp::string suffix = name.substr(idx + 1);
         if (prefix == "xmlns") // This is a namespace declaration.
           element_derived->set_namespace_declaration(value, suffix);
         else
@@ -148,19 +148,19 @@
   }
 }
 
-void Parser::on_end_element(const Glib::ustring& name)
+void Parser::on_end_element(const xmlpp::string& name)
 {
   // This causes the next child elements to be added to the sibling, not this node.
   m_context.pop();
 }
 
-void Parser::on_characters(const Glib::ustring& text)
+void Parser::on_characters(const xmlpp::string& text)
 {
   if(!m_context.empty())
     m_context.top()->add_child_text(text);
 }
 
-void Parser::on_comment(const Glib::ustring& text)
+void Parser::on_comment(const xmlpp::string& text)
 {
   if(!m_context.empty())
     m_context.top()->add_child_comment(text);
@@ -168,17 +168,17 @@
     m_doc.add_comment(text);
 }
 
-void Parser::on_warning(const Glib::ustring& text)
+void Parser::on_warning(const xmlpp::string& text)
 {
   std::cout << "on_warning(): " << text << std::endl;
 }
 
-void Parser::on_error(const Glib::ustring& text)
+void Parser::on_error(const xmlpp::string& text)
 {
   std::cout << "on_error(): " << text << std::endl;
 }
 
-void Parser::on_fatal_error(const Glib::ustring& text)
+void Parser::on_fatal_error(const xmlpp::string& text)
 {
   std::cout << "on_fatal_error(): " << text << std::endl;
 }
diff -u -r libxml++-2.14.0/examples/sax_parser_build_dom/svgparser.h libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgparser.h
--- libxml++-2.14.0/examples/sax_parser_build_dom/svgparser.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgparser.h	2006-08-22 15:39:22.000000000 -0700
@@ -25,7 +25,7 @@
 #define __LIBXMLPP_SVGPARSER_H
 
 #include <stack>
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 #include <libxml++/libxml++.h>
 
 namespace SVG {
@@ -40,14 +40,14 @@
   // SAX parser callbacks
   void on_start_document() {};
   void on_end_document() {};
-  void on_start_element(const Glib::ustring& name,
+  void on_start_element(const xmlpp::string& name,
                                 const AttributeList& properties);
-  void on_end_element(const Glib::ustring& name);
-  void on_characters(const Glib::ustring& characters);
-  void on_comment(const Glib::ustring& text);
-  void on_warning(const Glib::ustring& text);
-  void on_error(const Glib::ustring& text);
-  void on_fatal_error(const Glib::ustring& text);
+  void on_end_element(const xmlpp::string& name);
+  void on_characters(const xmlpp::string& characters);
+  void on_comment(const xmlpp::string& text);
+  void on_warning(const xmlpp::string& text);
+  void on_error(const xmlpp::string& text);
+  void on_fatal_error(const xmlpp::string& text);
 
 private:
   // context is a stack to keep track of parent node while the SAX parser
diff -u -r libxml++-2.14.0/examples/sax_parser_build_dom/svgpath.h libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgpath.h
--- libxml++-2.14.0/examples/sax_parser_build_dom/svgpath.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_build_dom/svgpath.h	2006-08-22 15:39:22.000000000 -0700
@@ -24,7 +24,7 @@
 #ifndef __LIBXMLPP_SVGPATH_H
 #define __LIBXMLPP_SVGPATH_H
 
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 #include <libxml++/libxml++.h>
 #include "svgelement.h"
 
@@ -37,7 +37,7 @@
     : Element(node)
     {}
     
-  const Glib::ustring get_data() const
+  const xmlpp::string get_data() const
     {
       return get_attribute("d")->get_value();
     }
diff -u -r libxml++-2.14.0/examples/sax_parser_entities/main.cc libxml++_std_string-2.14.0/examples/sax_parser_entities/main.cc
--- libxml++-2.14.0/examples/sax_parser_entities/main.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_entities/main.cc	2006-08-22 15:39:22.000000000 -0700
@@ -31,7 +31,7 @@
 int
 main(int argc, char* argv[])
 {
-  Glib::ustring filepath;
+  xmlpp::string filepath;
   if(argc > 1 )
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
diff -u -r libxml++-2.14.0/examples/sax_parser_entities/myparser.cc libxml++_std_string-2.14.0/examples/sax_parser_entities/myparser.cc
--- libxml++-2.14.0/examples/sax_parser_entities/myparser.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_entities/myparser.cc	2006-08-22 15:39:22.000000000 -0700
@@ -42,7 +42,7 @@
   std::cout << "on_end_document()" << std::endl;
 }
 
-void MySaxParser::on_start_element(const Glib::ustring& name,
+void MySaxParser::on_start_element(const xmlpp::string& name,
                                    const AttributeList& attributes)
 {
   std::cout << "node name=" << name << std::endl;
@@ -54,37 +54,37 @@
   }
 }
 
-void MySaxParser::on_end_element(const Glib::ustring& name)
+void MySaxParser::on_end_element(const xmlpp::string& name)
 {
   std::cout << "on_end_element()" << std::endl;
 }
 
-void MySaxParser::on_characters(const Glib::ustring& text)
+void MySaxParser::on_characters(const xmlpp::string& text)
 {
   std::cout << "on_characters(): " << text << std::endl;
 }
 
-void MySaxParser::on_comment(const Glib::ustring& text)
+void MySaxParser::on_comment(const xmlpp::string& text)
 {
   std::cout << "on_comment(): " << text << std::endl;
 }
 
-void MySaxParser::on_warning(const Glib::ustring& text)
+void MySaxParser::on_warning(const xmlpp::string& text)
 {
   std::cout << "on_warning(): " << text << std::endl;
 }
 
-void MySaxParser::on_error(const Glib::ustring& text)
+void MySaxParser::on_error(const xmlpp::string& text)
 {
   std::cout << "on_error(): " << text << std::endl;
 }
 
-void MySaxParser::on_fatal_error(const Glib::ustring& text)
+void MySaxParser::on_fatal_error(const xmlpp::string& text)
 {
   std::cout << "on_fatal_error(): " << text << std::endl;
 }
 
-_xmlEntity* MySaxParser::on_get_entity(const Glib::ustring& name)
+_xmlEntity* MySaxParser::on_get_entity(const xmlpp::string& name)
 {
   std::cout << "on_get_entity(): " << name << std::endl;
   
@@ -92,7 +92,7 @@
   return SaxParser::on_get_entity(name);
 }
 
-void MySaxParser::on_entity_declaration(const Glib::ustring& name, xmlpp::XmlEntityType type, const Glib::ustring& publicId, const Glib::ustring& systemId, const Glib::ustring& content)
+void MySaxParser::on_entity_declaration(const xmlpp::string& name, xmlpp::XmlEntityType type, const xmlpp::string& publicId, const xmlpp::string& systemId, const xmlpp::string& content)
 {
   std::cout << "on_entity_declaration(): name=" << name << ", publicId=" << publicId << ", systemId=" << systemId << ", content=" << content << std::endl;
 
diff -u -r libxml++-2.14.0/examples/sax_parser_entities/myparser.h libxml++_std_string-2.14.0/examples/sax_parser_entities/myparser.h
--- libxml++-2.14.0/examples/sax_parser_entities/myparser.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/examples/sax_parser_entities/myparser.h	2006-08-22 15:39:22.000000000 -0700
@@ -34,17 +34,17 @@
   //overrides:
   virtual void on_start_document();
   virtual void on_end_document();
-  virtual void on_start_element(const Glib::ustring& name,
+  virtual void on_start_element(const xmlpp::string& name,
                                 const AttributeList& properties);
-  virtual void on_end_element(const Glib::ustring& name);
-  virtual void on_characters(const Glib::ustring& characters);
-  virtual void on_comment(const Glib::ustring& text);
-  virtual void on_warning(const Glib::ustring& text);
-  virtual void on_error(const Glib::ustring& text);
-  virtual void on_fatal_error(const Glib::ustring& text);
+  virtual void on_end_element(const xmlpp::string& name);
+  virtual void on_characters(const xmlpp::string& characters);
+  virtual void on_comment(const xmlpp::string& text);
+  virtual void on_warning(const xmlpp::string& text);
+  virtual void on_error(const xmlpp::string& text);
+  virtual void on_fatal_error(const xmlpp::string& text);
 
-  virtual _xmlEntity* on_get_entity(const Glib::ustring& name);
-  virtual void on_entity_declaration(const Glib::ustring& name, xmlpp::XmlEntityType type, const Glib::ustring& publicId, const Glib::ustring& systemId, const Glib::ustring& content);
+  virtual _xmlEntity* on_get_entity(const xmlpp::string& name);
+  virtual void on_entity_declaration(const xmlpp::string& name, xmlpp::XmlEntityType type, const xmlpp::string& publicId, const xmlpp::string& systemId, const xmlpp::string& content);
 };
 
 
diff -u -r libxml++-2.14.0/libxml++/attribute.cc libxml++_std_string-2.14.0/libxml++/attribute.cc
--- libxml++-2.14.0/libxml++/attribute.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/attribute.cc	2006-08-22 15:19:21.000000000 -0700
@@ -20,20 +20,20 @@
 {
 }
 
-Glib::ustring Attribute::get_name() const
+xmlpp::string Attribute::get_name() const
 {
   return cobj()->name ? (char*)cobj()->name : "";
 }
 
-Glib::ustring Attribute::get_value() const
+xmlpp::string Attribute::get_value() const
 {
   xmlChar *value = xmlGetProp(cobj()->parent, cobj()->name);
-  Glib::ustring retn = value ? (char *)value : "";
+  xmlpp::string retn = value ? (char *)value : "";
   xmlFree(value);
   return retn;
 }
 
-void Attribute::set_value(const Glib::ustring& value)
+void Attribute::set_value(const xmlpp::string& value)
 {
   xmlSetProp(cobj()->parent, cobj()->name, (xmlChar*)value.c_str());
 }
diff -u -r libxml++-2.14.0/libxml++/attribute.h libxml++_std_string-2.14.0/libxml++/attribute.h
--- libxml++-2.14.0/libxml++/attribute.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/attribute.h	2006-08-22 15:19:20.000000000 -0700
@@ -8,7 +8,7 @@
 #define __LIBXMLPP_ATTRIBUTE_H
 
 
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 
 #include <libxml++/nodes/node.h>
 
@@ -30,9 +30,9 @@
   explicit Attribute(_xmlNode* node);
   virtual ~Attribute();
   
-  Glib::ustring get_name() const;
-  Glib::ustring get_value() const;
-  void set_value(const Glib::ustring& value);
+  xmlpp::string get_name() const;
+  xmlpp::string get_value() const;
+  void set_value(const xmlpp::string& value);
 
   ///Access the underlying libxml implementation.
   _xmlAttr* cobj();
diff -u -r libxml++-2.14.0/libxml++/document.cc libxml++_std_string-2.14.0/libxml++/document.cc
--- libxml++-2.14.0/libxml++/document.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/document.cc	2006-08-22 15:19:20.000000000 -0700
@@ -146,7 +146,7 @@
 
 Document::Init Document::init_;
 
-Document::Document(const Glib::ustring& version)
+Document::Document(const xmlpp::string& version)
   : impl_(xmlNewDoc((const xmlChar*)version.c_str()))
 {
   impl_->_private = this;
@@ -163,9 +163,9 @@
   xmlFreeDoc(impl_);
 }
 
-Glib::ustring Document::get_encoding() const
+xmlpp::string Document::get_encoding() const
 {
-  Glib::ustring encoding;
+  xmlpp::string encoding;
   if(impl_->encoding)
     encoding = (const char*)impl_->encoding;
     
@@ -184,9 +184,9 @@
   return reinterpret_cast<Dtd*>(dtd->_private);
 }
 
-void Document::set_internal_subset(const Glib::ustring& name,
-                                   const Glib::ustring& external_id,
-                                   const Glib::ustring& system_id)
+void Document::set_internal_subset(const xmlpp::string& name,
+                                   const xmlpp::string& external_id,
+                                   const xmlpp::string& system_id)
 {
   xmlDtd* dtd = xmlCreateIntSubset(impl_,
 				   (const xmlChar*)name.c_str(),
@@ -206,9 +206,9 @@
     return reinterpret_cast<Element*>(root->_private);
 }
 
-Element* Document::create_root_node(const Glib::ustring& name,
-                                    const Glib::ustring& ns_uri,
-                                    const Glib::ustring& ns_prefix)
+Element* Document::create_root_node(const xmlpp::string& name,
+                                    const xmlpp::string& ns_uri,
+                                    const xmlpp::string& ns_prefix)
 {
   xmlNode* node = xmlNewDocNode(impl_, 0, (const xmlChar*)name.c_str(), 0);
   xmlDocSetRootElement(impl_, node);
@@ -237,7 +237,7 @@
   return get_root_node();
 }
 
-CommentNode* Document::add_comment(const Glib::ustring& content)
+CommentNode* Document::add_comment(const xmlpp::string& content)
 {
   xmlNode* node = xmlNewComment((const xmlChar*)content.c_str());
   if(!node)
@@ -246,39 +246,39 @@
   return static_cast<CommentNode*>(node->_private);
 }
 
-void Document::write_to_file(const Glib::ustring& filename, const Glib::ustring& encoding)
+void Document::write_to_file(const xmlpp::string& filename, const xmlpp::string& encoding)
 {
   do_write_to_file(filename, encoding, false);
 }
 
-void Document::write_to_file_formatted(const Glib::ustring& filename, const Glib::ustring& encoding)
+void Document::write_to_file_formatted(const xmlpp::string& filename, const xmlpp::string& encoding)
 {
   do_write_to_file(filename, encoding, true);
 }
 
-Glib::ustring Document::write_to_string(const Glib::ustring& encoding)
+xmlpp::string Document::write_to_string(const xmlpp::string& encoding)
 {
   return do_write_to_string(encoding, false);
 }
 
-Glib::ustring Document::write_to_string_formatted(const Glib::ustring& encoding)
+xmlpp::string Document::write_to_string_formatted(const xmlpp::string& encoding)
 {
   return do_write_to_string(encoding, true);
 }
 
-void Document::write_to_stream(std::ostream& output, const Glib::ustring& encoding)
+void Document::write_to_stream(std::ostream& output, const xmlpp::string& encoding)
 {
   do_write_to_stream(output, encoding.empty()?get_encoding():encoding, false);
 }
 
-void Document::write_to_stream_formatted(std::ostream& output, const Glib::ustring& encoding)
+void Document::write_to_stream_formatted(std::ostream& output, const xmlpp::string& encoding)
 {
   do_write_to_stream(output, encoding.empty()?get_encoding():encoding, true);
 }
 
 void Document::do_write_to_file(
-    const Glib::ustring& filename,
-    const Glib::ustring& encoding,
+    const xmlpp::string& filename,
+    const xmlpp::string& encoding,
     bool format)
 {
   KeepBlanks k(KeepBlanks::Default);
@@ -291,8 +291,8 @@
     throw exception("do_write_to_file() failed.");
 }
 
-Glib::ustring Document::do_write_to_string(
-    const Glib::ustring& encoding,
+xmlpp::string Document::do_write_to_string(
+    const xmlpp::string& encoding,
     bool format)
 {
   KeepBlanks k(KeepBlanks::Default);
@@ -305,12 +305,12 @@
   if(!buffer)
     throw exception("do_write_to_string() failed.");
 
-  // Create a Glib::ustring copy of the buffer
+  // Create a xmlpp::string copy of the buffer
 
-  // Here we force the use of Glib::ustring::ustring( InputIterator begin, InputIterator end )
-  // instead of Glib::ustring::ustring( const char*, size_type ) because it
+  // Here we force the use of xmlpp::string::ustring( InputIterator begin, InputIterator end )
+  // instead of xmlpp::string::ustring( const char*, size_type ) because it
   // expects the length of the string in characters, not in bytes.
-  Glib::ustring result( reinterpret_cast<const char *>(buffer), reinterpret_cast<const char *>(buffer + length) );
+  xmlpp::string result( reinterpret_cast<const char *>(buffer), reinterpret_cast<const char *>(buffer + length) );
 
   // Deletes the original buffer
   xmlFree(buffer);
@@ -318,16 +318,16 @@
   return result;
 }
 
-void Document::do_write_to_stream(std::ostream& output, const Glib::ustring& encoding, bool format)
+void Document::do_write_to_stream(std::ostream& output, const xmlpp::string& encoding, bool format)
 {
   // TODO assert document encoding is UTF-8 if encoding is different than UTF-8
   OStreamOutputBuffer buffer(output, encoding);
   xmlSaveFormatFileTo(buffer.cobj(), impl_, encoding.c_str(), format?1:0);
 }
 
-void Document::set_entity_declaration(const Glib::ustring& name, XmlEntityType type,
-                              const Glib::ustring& publicId, const Glib::ustring& systemId,
-                              const Glib::ustring& content)
+void Document::set_entity_declaration(const xmlpp::string& name, XmlEntityType type,
+                              const xmlpp::string& publicId, const xmlpp::string& systemId,
+                              const xmlpp::string& content)
 {
   xmlAddDocEntity( impl_, (const xmlChar*) name.c_str(), type, 
     publicId.empty() ? (const xmlChar*)0 : (const xmlChar*)publicId.c_str(),
@@ -335,7 +335,7 @@
     (const xmlChar*) content.c_str() );
 }
 
-_xmlEntity* Document::get_entity(const Glib::ustring& name)
+_xmlEntity* Document::get_entity(const xmlpp::string& name)
 {
   return xmlGetDocEntity(impl_, (const xmlChar*) name.c_str());
 }
diff -u -r libxml++-2.14.0/libxml++/document.h libxml++_std_string-2.14.0/libxml++/document.h
--- libxml++-2.14.0/libxml++/document.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/document.h	2006-08-22 15:19:21.000000000 -0700
@@ -59,18 +59,18 @@
   friend class SaxParser;
 
 public:
-  explicit Document(const Glib::ustring& version = "1.0");
+  explicit Document(const xmlpp::string& version = "1.0");
   virtual ~Document();
   
   /** @return The encoding used in the source from which the document has been loaded.
     */
-  Glib::ustring get_encoding() const;
+  xmlpp::string get_encoding() const;
   
   Dtd* get_internal_subset() const;
   
-  void set_internal_subset(const Glib::ustring& name,
-                           const Glib::ustring& external_id,
-                           const Glib::ustring& system_id);
+  void set_internal_subset(const xmlpp::string& name,
+                           const xmlpp::string& external_id,
+                           const xmlpp::string& system_id);
 
   /** Return the root node.
    * This function does _not_ create a default root node if it doesn't exist.
@@ -86,9 +86,9 @@
      the namespace URI will be the default namespace.
    * @return A pointer to the new root node
    */
-  Element* create_root_node(const Glib::ustring& name,
-                            const Glib::ustring& ns_uri = Glib::ustring(),
-                            const Glib::ustring& ns_prefix = Glib::ustring() );
+  Element* create_root_node(const xmlpp::string& name,
+                            const xmlpp::string& ns_uri = xmlpp::string(),
+                            const xmlpp::string& ns_prefix = xmlpp::string() );
 
   /** Creates a root node by importing the node from another document, without affecting the source node.
    * @param node The node to copy and insert as the root node of the document
@@ -102,13 +102,13 @@
    * @param content The text. This should be unescaped - see ContentNode::set_content().
    * @returns The new comment node.
    */
-  CommentNode* add_comment(const Glib::ustring& content);
+  CommentNode* add_comment(const xmlpp::string& content);
 
   /** Write the document to a file.
    * @param filename
    * @param encoding If not provided, UTF-8 is used
    */
-  void write_to_file(const Glib::ustring& filename, const Glib::ustring& encoding = Glib::ustring());
+  void write_to_file(const xmlpp::string& filename, const xmlpp::string& encoding = xmlpp::string());
 
   /** Write the document to a file.
    * The output is formatted by inserting whitespaces, which is easier to read for a human,
@@ -116,12 +116,12 @@
    * @param filename
    * @param encoding If not provided, UTF-8 is used
    */
-  void write_to_file_formatted(const Glib::ustring& filename, const Glib::ustring& encoding = Glib::ustring());
+  void write_to_file_formatted(const xmlpp::string& filename, const xmlpp::string& encoding = xmlpp::string());
 
   /** Write the document to the memory.
    * @param encoding If not provided, UTF-8 is used
    */
-  Glib::ustring write_to_string(const Glib::ustring& encoding = Glib::ustring());
+  xmlpp::string write_to_string(const xmlpp::string& encoding = xmlpp::string());
 
   /** Write the document to the memory.
    * The output is formatted by inserting whitespaces, which is easier to read for a human,
@@ -129,7 +129,7 @@
    * @param encoding If not provided, UTF-8 is used
    * @return The written document.
    */
-  Glib::ustring write_to_string_formatted(const Glib::ustring& encoding = Glib::ustring());
+  xmlpp::string write_to_string_formatted(const xmlpp::string& encoding = xmlpp::string());
 
   /** Write the document to a std::ostream.
    * @param output A reference to the stream in which the document will be written
@@ -137,7 +137,7 @@
    * @warning This method is much less efficient than write_to_string if you want to dump the
    * document to a buffer or the standard output. Writing to a fstream is almost as fast as write_to_file
    */
-  void write_to_stream(std::ostream& output, const Glib::ustring& encoding = Glib::ustring());
+  void write_to_stream(std::ostream& output, const xmlpp::string& encoding = xmlpp::string());
 
   /** Write the document to a std::ostream.
    * The output is formatted by inserting whitespaces, which is easier to read for a human,
@@ -146,7 +146,7 @@
    * @param encoding If not provided, UTF-8 is used
    * @warning See write_to_stream
    */
-  void write_to_stream_formatted(std::ostream & output, const Glib::ustring& encoding = Glib::ustring());
+  void write_to_stream_formatted(std::ostream & output, const xmlpp::string& encoding = xmlpp::string());
 
   /** Add an Entity declaration to the document.
    * @param name The name of the entity that will be used in an entity reference.
@@ -156,9 +156,9 @@
    * @param content The value of the Entity. In entity reference substitutions, this
    * is the replacement value.
    */
-  virtual void set_entity_declaration(const Glib::ustring& name, XmlEntityType type,
-                                      const Glib::ustring& publicId, const Glib::ustring& systemId,
-                                      const Glib::ustring& content);
+  virtual void set_entity_declaration(const xmlpp::string& name, XmlEntityType type,
+                                      const xmlpp::string& publicId, const xmlpp::string& systemId,
+                                      const xmlpp::string& content);
 
   ///Access the underlying libxml implementation.
   _xmlDoc* cobj();
@@ -172,12 +172,12 @@
    * @param name Then name of the entity to get.
    * @returns A pointer to the libxml2 entity structure.
    */
-  _xmlEntity* get_entity(const Glib::ustring& name);
+  _xmlEntity* get_entity(const xmlpp::string& name);
 
 private:
-  virtual void do_write_to_file(const Glib::ustring& filename, const Glib::ustring& encoding, bool format);
-  virtual Glib::ustring do_write_to_string(const Glib::ustring& encoding, bool format);
-  virtual void do_write_to_stream(std::ostream& output, const Glib::ustring& encoding, bool format);
+  virtual void do_write_to_file(const xmlpp::string& filename, const xmlpp::string& encoding, bool format);
+  virtual xmlpp::string do_write_to_string(const xmlpp::string& encoding, bool format);
+  virtual void do_write_to_stream(std::ostream& output, const xmlpp::string& encoding, bool format);
 
   static Init init_;
 
diff -u -r libxml++-2.14.0/libxml++/dtd.cc libxml++_std_string-2.14.0/libxml++/dtd.cc
--- libxml++-2.14.0/libxml++/dtd.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/dtd.cc	2006-08-22 15:19:21.000000000 -0700
@@ -21,17 +21,17 @@
 { 
 }
 
-Glib::ustring Dtd::get_name() const
+xmlpp::string Dtd::get_name() const
 {
   return (char*)impl_->name;
 }
 
-Glib::ustring Dtd::get_external_id() const
+xmlpp::string Dtd::get_external_id() const
 {
   return (char*)impl_->ExternalID;
 }
 
-Glib::ustring Dtd::get_system_id() const
+xmlpp::string Dtd::get_system_id() const
 {
   return (char*)impl_->SystemID;
 }
diff -u -r libxml++-2.14.0/libxml++/dtd.h libxml++_std_string-2.14.0/libxml++/dtd.h
--- libxml++-2.14.0/libxml++/dtd.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/dtd.h	2006-08-22 15:19:20.000000000 -0700
@@ -29,9 +29,9 @@
   Dtd(_xmlDtd* dtd);
   ~Dtd();
 
-  Glib::ustring get_name() const;
-  Glib::ustring get_external_id() const;
-  Glib::ustring get_system_id() const;
+  xmlpp::string get_name() const;
+  xmlpp::string get_external_id() const;
+  xmlpp::string get_system_id() const;
   
   /** Access the underlying libxml implementation. */
   _xmlDtd* cobj();
diff -u -r libxml++-2.14.0/libxml++/exceptions/exception.cc libxml++_std_string-2.14.0/libxml++/exceptions/exception.cc
--- libxml++-2.14.0/libxml++/exceptions/exception.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/exception.cc	2006-08-22 15:19:21.000000000 -0700
@@ -2,7 +2,7 @@
 
 namespace xmlpp {
   
-exception::exception(const Glib::ustring& message)
+exception::exception(const xmlpp::string& message)
 : message_(message)
 {
 }
diff -u -r libxml++-2.14.0/libxml++/exceptions/exception.h libxml++_std_string-2.14.0/libxml++/exceptions/exception.h
--- libxml++-2.14.0/libxml++/exceptions/exception.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/exception.h	2006-08-22 15:19:21.000000000 -0700
@@ -23,7 +23,7 @@
 #define __LIBXMLPP_EXCEPTION_H
 
 #include <exception>
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 
 namespace xmlpp
 {
@@ -33,7 +33,7 @@
 class exception: public std::exception
 {
 public:
-  explicit exception(const Glib::ustring& message);
+  explicit exception(const xmlpp::string& message);
   virtual ~exception() throw();
 
   virtual const char* what() const throw();
@@ -41,7 +41,7 @@
   virtual exception * Clone() const;
 
 private:
-  Glib::ustring message_;
+  xmlpp::string message_;
 };
 
 } // namespace xmlpp
diff -u -r libxml++-2.14.0/libxml++/exceptions/internal_error.cc libxml++_std_string-2.14.0/libxml++/exceptions/internal_error.cc
--- libxml++-2.14.0/libxml++/exceptions/internal_error.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/internal_error.cc	2006-08-22 15:19:21.000000000 -0700
@@ -3,7 +3,7 @@
 
 namespace xmlpp {
 
-internal_error::internal_error(const Glib::ustring& message)
+internal_error::internal_error(const xmlpp::string& message)
 : exception(message)
 {
 }
diff -u -r libxml++-2.14.0/libxml++/exceptions/internal_error.h libxml++_std_string-2.14.0/libxml++/exceptions/internal_error.h
--- libxml++-2.14.0/libxml++/exceptions/internal_error.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/internal_error.h	2006-08-22 15:19:21.000000000 -0700
@@ -25,14 +25,14 @@
 #include <libxml++/exceptions/exception.h>
 
 #include <exception>
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 
 namespace xmlpp {
   
 class internal_error: public exception
 {
 public:
-  explicit internal_error(const Glib::ustring& message);
+  explicit internal_error(const xmlpp::string& message);
   virtual ~internal_error() throw();
 
   virtual void Raise() const;
diff -u -r libxml++-2.14.0/libxml++/exceptions/parse_error.cc libxml++_std_string-2.14.0/libxml++/exceptions/parse_error.cc
--- libxml++-2.14.0/libxml++/exceptions/parse_error.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/parse_error.cc	2006-08-22 15:19:21.000000000 -0700
@@ -2,7 +2,7 @@
 
 namespace xmlpp {
 
-parse_error::parse_error(const Glib::ustring& message)
+parse_error::parse_error(const xmlpp::string& message)
 : exception(message)
 {
 }
diff -u -r libxml++-2.14.0/libxml++/exceptions/parse_error.h libxml++_std_string-2.14.0/libxml++/exceptions/parse_error.h
--- libxml++-2.14.0/libxml++/exceptions/parse_error.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/parse_error.h	2006-08-22 15:19:21.000000000 -0700
@@ -25,7 +25,7 @@
 #include <libxml++/exceptions/exception.h>
 
 #include <exception>
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 
 namespace xmlpp
 {
@@ -35,7 +35,7 @@
 class parse_error: public exception
 {
 public:
-  explicit parse_error(const Glib::ustring& message);
+  explicit parse_error(const xmlpp::string& message);
   virtual ~parse_error() throw();
 
   virtual void Raise() const;
diff -u -r libxml++-2.14.0/libxml++/exceptions/validity_error.cc libxml++_std_string-2.14.0/libxml++/exceptions/validity_error.cc
--- libxml++-2.14.0/libxml++/exceptions/validity_error.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/validity_error.cc	2006-08-22 15:19:21.000000000 -0700
@@ -2,7 +2,7 @@
 
 namespace xmlpp {
 
-validity_error::validity_error(const Glib::ustring& message)
+validity_error::validity_error(const xmlpp::string& message)
 : parse_error(message)
 {
 }
diff -u -r libxml++-2.14.0/libxml++/exceptions/validity_error.h libxml++_std_string-2.14.0/libxml++/exceptions/validity_error.h
--- libxml++-2.14.0/libxml++/exceptions/validity_error.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/exceptions/validity_error.h	2006-08-22 15:19:21.000000000 -0700
@@ -32,7 +32,7 @@
 class validity_error: public parse_error
 {
 public:
-  explicit validity_error(const Glib::ustring& message);
+  explicit validity_error(const xmlpp::string& message);
   virtual ~validity_error() throw();
 
   virtual void Raise() const;
diff -u -r libxml++-2.14.0/libxml++/io/ostreamoutputbuffer.cc libxml++_std_string-2.14.0/libxml++/io/ostreamoutputbuffer.cc
--- libxml++-2.14.0/libxml++/io/ostreamoutputbuffer.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/io/ostreamoutputbuffer.cc	2006-08-22 15:19:20.000000000 -0700
@@ -13,7 +13,7 @@
 {
   OStreamOutputBuffer::OStreamOutputBuffer(
       std::ostream & output,
-      const Glib::ustring& encoding)
+      const xmlpp::string& encoding)
     : OutputBuffer(encoding), output_(output)
   {
   }
diff -u -r libxml++-2.14.0/libxml++/io/ostreamoutputbuffer.h libxml++_std_string-2.14.0/libxml++/io/ostreamoutputbuffer.h
--- libxml++-2.14.0/libxml++/io/ostreamoutputbuffer.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/io/ostreamoutputbuffer.h	2006-08-22 15:19:20.000000000 -0700
@@ -26,7 +26,7 @@
        * @param encoding Charset in which data will be encoded before being
        * sent to the stream
        */
-      OStreamOutputBuffer(std::ostream& output, const Glib::ustring& encoding = Glib::ustring());
+      OStreamOutputBuffer(std::ostream& output, const xmlpp::string& encoding = xmlpp::string());
       virtual ~OStreamOutputBuffer();
 
     private:
diff -u -r libxml++-2.14.0/libxml++/io/outputbuffer.cc libxml++_std_string-2.14.0/libxml++/io/outputbuffer.cc
--- libxml++-2.14.0/libxml++/io/outputbuffer.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/io/outputbuffer.cc	2006-08-22 15:19:20.000000000 -0700
@@ -32,7 +32,7 @@
 
 
   OutputBuffer::OutputBuffer(
-      const Glib::ustring& encoding)
+      const xmlpp::string& encoding)
   {
     // we got to initialise the char encoding handler
     // The code is almost cut/paste from xmlSaveFormatFileEnc
diff -u -r libxml++-2.14.0/libxml++/io/outputbuffer.h libxml++_std_string-2.14.0/libxml++/io/outputbuffer.h
--- libxml++-2.14.0/libxml++/io/outputbuffer.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/io/outputbuffer.h	2006-08-22 15:19:20.000000000 -0700
@@ -10,7 +10,7 @@
 #ifndef __LIBXMLPP_OUTPUTBUFFER_H
 #define __LIBXMLPP_OUTPUTBUFFER_H
 
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 #include <libxml++/noncopyable.h>
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -40,7 +40,7 @@
        * @warning The encoding is done by libxml. As a consequence, libxml must
        * have a translator to the target encoding.
        */
-      OutputBuffer(const Glib::ustring& encoding = Glib::ustring());
+      OutputBuffer(const xmlpp::string& encoding = xmlpp::string());
       virtual ~OutputBuffer();
 
     public:
diff -u -r libxml++-2.14.0/libxml++/libxml++.h libxml++_std_string-2.14.0/libxml++/libxml++.h
--- libxml++-2.14.0/libxml++/libxml++.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/libxml++.h	2006-08-22 15:19:21.000000000 -0700
@@ -21,5 +21,6 @@
 #include <libxml++/document.h>
 #include <libxml++/validators/validator.h>
 #include <libxml++/validators/dtdvalidator.h>
+#include <libxml++/libxml++_string.h>
 
 #endif //__LIBXMLCPP_H
diff -u -r libxml++-2.14.0/libxml++/Makefile.in libxml++_std_string-2.14.0/libxml++/Makefile.in
--- libxml++-2.14.0/libxml++/Makefile.in	2006-03-13 07:58:01.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/Makefile.in	2006-08-22 16:21:38.000000000 -0700
@@ -216,7 +216,7 @@
 target_alias = @target_alias@
 SUBDIRS = parsers exceptions nodes io validators
 INCLUDES = -I$(top_srcdir) @LIBXML_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 libxml++_string.h
 h_sources_private = 
 cc_sources = attribute.cc dtd.cc document.cc noncopyable.cc keepblanks.cc
 cc_sources_private = 
diff -u -r libxml++-2.14.0/libxml++/nodes/contentnode.cc libxml++_std_string-2.14.0/libxml++/nodes/contentnode.cc
--- libxml++-2.14.0/libxml++/nodes/contentnode.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/contentnode.cc	2006-08-22 15:19:21.000000000 -0700
@@ -19,7 +19,7 @@
 ContentNode::~ContentNode()
 {}
 
-Glib::ustring ContentNode::get_content() const
+xmlpp::string ContentNode::get_content() const
 {
   if(cobj()->type == XML_ELEMENT_NODE)
     throw internal_error("this node type doesn't have content");
@@ -27,7 +27,7 @@
   return cobj()->content ? (char*)cobj()->content : "";
 }
 
-void ContentNode::set_content(const Glib::ustring& content)
+void ContentNode::set_content(const xmlpp::string& content)
 {
    if(cobj()->type == XML_ELEMENT_NODE)
       throw internal_error("can't set content for this node type");
diff -u -r libxml++-2.14.0/libxml++/nodes/contentnode.h libxml++_std_string-2.14.0/libxml++/nodes/contentnode.h
--- libxml++-2.14.0/libxml++/nodes/contentnode.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/contentnode.h	2006-08-22 15:19:21.000000000 -0700
@@ -24,13 +24,13 @@
    * @returns The text. Note that the 5 predefined entities (&amp;, &quot;, &lt;, &qt, &apos;)
    * are always resolved, so this content will show their human-readable equivalents.
    */
-  Glib::ustring get_content() const;
+  xmlpp::string get_content() const;
 
   /** Set the text of this content node
    * @param content The text. This must be unescaped, meaning that the predefined entities will be created for you where necessary.
    * See get_content().
    */
-  void set_content(const Glib::ustring& content);
+  void set_content(const xmlpp::string& content);
 
   /// @returns Whether this node contains only white space, or is empty.
   bool is_white_space() const;
diff -u -r libxml++-2.14.0/libxml++/nodes/element.cc libxml++_std_string-2.14.0/libxml++/nodes/element.cc
--- libxml++-2.14.0/libxml++/nodes/element.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/element.cc	2006-08-22 15:19:20.000000000 -0700
@@ -36,8 +36,8 @@
   return const_cast<Element*>(this)->get_attributes();
 }
 
-Attribute* Element::get_attribute(const Glib::ustring& name,
-                                  const Glib::ustring& ns_prefix) const
+Attribute* Element::get_attribute(const xmlpp::string& name,
+                                  const xmlpp::string& ns_prefix) const
 {
   if (ns_prefix.empty())
   {
@@ -49,7 +49,7 @@
   }
   else
   {
-    Glib::ustring ns_uri = get_namespace_uri_for_prefix(ns_prefix);  
+    xmlpp::string ns_uri = get_namespace_uri_for_prefix(ns_prefix);  
     xmlAttr* attr = xmlHasNsProp(const_cast<xmlNode*>(cobj()), (const xmlChar*)name.c_str(),
                                  (const xmlChar*)ns_uri.c_str());
 	if( attr )
@@ -61,8 +61,8 @@
   return 0;
 }
 
-Attribute* Element::set_attribute(const Glib::ustring& name, const Glib::ustring& value,
-                                  const Glib::ustring& ns_prefix)
+Attribute* Element::set_attribute(const xmlpp::string& name, const xmlpp::string& value,
+                                  const xmlpp::string& ns_prefix)
 {
   xmlAttr* attr = 0;
 
@@ -93,7 +93,7 @@
     return 0;
 }
 
-void Element::remove_attribute(const Glib::ustring& name, const Glib::ustring& ns_prefix)
+void Element::remove_attribute(const xmlpp::string& name, const xmlpp::string& ns_prefix)
 {
   if (ns_prefix.empty())
     xmlUnsetProp(cobj(), (const xmlChar*)name.c_str());
@@ -126,7 +126,7 @@
   return 0;
 }
 
-void Element::set_child_text(const Glib::ustring& content)
+void Element::set_child_text(const xmlpp::string& content)
 {
   TextNode* node = get_child_text();
   if(node)
@@ -135,7 +135,7 @@
     add_child_text(content);
 }
 
-TextNode* Element::add_child_text(const Glib::ustring& content)
+TextNode* Element::add_child_text(const xmlpp::string& content)
 {
   if(cobj()->type == XML_ELEMENT_NODE)
   {
@@ -151,7 +151,7 @@
   return get_child_text() != 0;
 }
 
-void Element::set_namespace_declaration(const Glib::ustring& ns_uri, const Glib::ustring& ns_prefix)
+void Element::set_namespace_declaration(const xmlpp::string& ns_uri, const xmlpp::string& ns_prefix)
 {
   //Create a new namespace declaration for this element:
   xmlNewNs(cobj(), (const xmlChar*)(ns_uri.empty() ? 0 : ns_uri.c_str()),
@@ -159,9 +159,9 @@
   //We ignore the returned xmlNS*. Hopefully this is owned by the node. murrayc.
 }
 
-Glib::ustring Element::get_namespace_uri_for_prefix(const Glib::ustring& ns_prefix) const
+xmlpp::string Element::get_namespace_uri_for_prefix(const xmlpp::string& ns_prefix) const
 {
-  Glib::ustring result;
+  xmlpp::string result;
   
   //Find the namespace:
   const xmlNs* ns = xmlSearchNs( cobj()->doc, const_cast<xmlNode*>(cobj()), (xmlChar*)ns_prefix.c_str() );
@@ -176,7 +176,7 @@
 }
 
 
-CommentNode* Element::add_child_comment(const Glib::ustring& content)
+CommentNode* Element::add_child_comment(const xmlpp::string& content)
 {
   xmlNode* node = xmlNewComment((const xmlChar*)content.c_str());
   xmlAddChild(cobj(), node);
diff -u -r libxml++-2.14.0/libxml++/nodes/element.h libxml++_std_string-2.14.0/libxml++/nodes/element.h
--- libxml++-2.14.0/libxml++/nodes/element.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/element.h	2006-08-22 15:19:20.000000000 -0700
@@ -28,7 +28,7 @@
    * @param ns_uri The namespace to associate with the prefix, or to use as the default namespace if no prefix is specified.
    * @param ns_prefix The namespace prefix. If no prefix is specified then the namespace URI will be the default namespace.
    */
-  void set_namespace_declaration(const Glib::ustring& ns_uri, const Glib::ustring& ns_prefix = Glib::ustring());
+  void set_namespace_declaration(const xmlpp::string& ns_uri, const xmlpp::string& ns_prefix = xmlpp::string());
 
   /** Obtain the list of attributes for this element.
    * @returns The list of attributes.
@@ -43,8 +43,8 @@
   // FIXME: the following only returns explicitely provided
   // attributes, not default ones declared in the dtd.
   // TOOD: Is this still true? murrayc
-  Attribute* get_attribute(const Glib::ustring& name,
-                           const Glib::ustring& ns_prefix = Glib::ustring()) const;
+  Attribute* get_attribute(const xmlpp::string& name,
+                           const xmlpp::string& ns_prefix = xmlpp::string()) const;
 
   /** Set the value of the attribute with this name, and optionally with this namespace.
    * A matching attribute will be added if no matching attribute already exists.
@@ -54,15 +54,15 @@
    * @param ns_prefix Namespace prefix. If the prefix has not been declared then this method will throw an exception.
    * @return The attribute that was changed, or 0 is no suitable Attribute was found.
    */
-  Attribute* set_attribute(const Glib::ustring& name, const Glib::ustring& value,
-                           const Glib::ustring& ns_prefix = Glib::ustring());
+  Attribute* set_attribute(const xmlpp::string& name, const xmlpp::string& value,
+                           const xmlpp::string& ns_prefix = xmlpp::string());
 
   /** Remove the attribute with this name, and optionally with this namespace.
    * @param name The name of the attribute to be removed
    * @param ns_prefix Namespace prefix. If specified, the attribute will be removed only if the attribute has this namespace.
    */
-  void remove_attribute(const Glib::ustring& name,
-                        const Glib::ustring& ns_prefix = Glib::ustring());
+  void remove_attribute(const xmlpp::string& name,
+                        const xmlpp::string& ns_prefix = xmlpp::string());
   
   
   /** Get the first child text content node.
@@ -81,13 +81,13 @@
    * @param content The text. This should be unescaped - see ContentNode::set_content().
    * @returns The new text node.
    */
-  TextNode* add_child_text(const Glib::ustring& content = Glib::ustring());
+  TextNode* add_child_text(const xmlpp::string& content = xmlpp::string());
 
   /** Set the text of the first text node, adding one if necessary.
    * This is a convenience method, meant as an alternative to iterating over all the child nodes to find the first suitable node then and setting the text directly.
    * @param content The text. This should be unescaped - see ContentNode::set_content().
    */
-  void set_child_text(const Glib::ustring& content);
+  void set_child_text(const xmlpp::string& content);
 
   /** Discover whether one of the child nodes is a text node.
    * This is a convenience method, meant as an alternative to iterating over all the child nodes and examining them directly.
@@ -99,10 +99,10 @@
    * @param content The text. This should be unescaped - see ContentNode::set_content().
    * @returns The new comment node.
    */
-  CommentNode* add_child_comment(const Glib::ustring& content);
+  CommentNode* add_child_comment(const xmlpp::string& content);
 
 protected:
-  Glib::ustring get_namespace_uri_for_prefix(const Glib::ustring& ns_prefix) const;
+  xmlpp::string get_namespace_uri_for_prefix(const xmlpp::string& ns_prefix) const;
 };
 
 } // namespace xmlpp
diff -u -r libxml++-2.14.0/libxml++/nodes/entityreference.cc libxml++_std_string-2.14.0/libxml++/nodes/entityreference.cc
--- libxml++-2.14.0/libxml++/nodes/entityreference.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/entityreference.cc	2006-08-22 15:19:20.000000000 -0700
@@ -19,9 +19,9 @@
 EntityReference::~EntityReference()
 {}
 
-Glib::ustring EntityReference::get_resolved_text() const
+xmlpp::string EntityReference::get_resolved_text() const
 {
-  Glib::ustring result;
+  xmlpp::string result;
 
   //Get the child xmlEntity node (there should only be 1).
   xmlNode* cChild = cobj()->children;
@@ -36,9 +36,9 @@
   return result;
 }
 
-Glib::ustring EntityReference::get_original_text() const
+xmlpp::string EntityReference::get_original_text() const
 {
-  Glib::ustring result;
+  xmlpp::string result;
 
   //Get the child xmlEntity node (there should only be 1).
   xmlNode* cChild = cobj()->children;
diff -u -r libxml++-2.14.0/libxml++/nodes/entityreference.h libxml++_std_string-2.14.0/libxml++/nodes/entityreference.h
--- libxml++-2.14.0/libxml++/nodes/entityreference.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/entityreference.h	2006-08-22 15:19:21.000000000 -0700
@@ -23,11 +23,11 @@
   /** Get the text to which this entity reference would have resolved if the XML document had been parsed with Parser::set_substitute_entities(true).
    * @returns The unescaped text.
    */
-  Glib::ustring get_resolved_text() const;
+  xmlpp::string get_resolved_text() const;
 
   //TODO: I'm not sure what this is. So far it seems to be the same as get_resolved_text().
   //      Maybe it's for nested entity declarations, though I don't know if that is even possile. murrayc.
-  Glib::ustring get_original_text() const;
+  xmlpp::string get_original_text() const;
 
 };
 
diff -u -r libxml++-2.14.0/libxml++/nodes/node.cc libxml++_std_string-2.14.0/libxml++/nodes/node.cc
--- libxml++-2.14.0/libxml++/nodes/node.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/node.cc	2006-08-22 15:19:21.000000000 -0700
@@ -25,7 +25,7 @@
 Node::~Node()
 {}
 
-Node::NodeList Node::get_children(const Glib::ustring& name)
+Node::NodeList Node::get_children(const xmlpp::string& name)
 {
    xmlNode* child = impl_->children;
    if(!child)
@@ -55,13 +55,13 @@
    return children;
 }
 
-const Node::NodeList Node::get_children(const Glib::ustring& name) const
+const Node::NodeList Node::get_children(const xmlpp::string& name) const
 {
   return const_cast<Node*>(this)->get_children(name);
 }
 
-Element* Node::add_child(const Glib::ustring& name,
-                         const Glib::ustring& ns_prefix)
+Element* Node::add_child(const xmlpp::string& name,
+                         const xmlpp::string& ns_prefix)
 {
    xmlNode* node = 0;
    xmlNs* ns = 0;
@@ -112,12 +112,12 @@
   return static_cast<Node*>(imported_node->_private);
 }
 
-Glib::ustring Node::get_name() const
+xmlpp::string Node::get_name() const
 {
   return impl_->name ? (const char*)impl_->name : "";
 }
 
-void Node::set_name(const Glib::ustring& name)
+void Node::set_name(const xmlpp::string& name)
 {
   xmlNodeSetName( impl_, (const xmlChar *)name.c_str() );
 }
@@ -138,15 +138,15 @@
   return impl_;
 }
 
-Glib::ustring Node::get_path() const
+xmlpp::string Node::get_path() const
 {
   xmlChar* path = xmlGetNodePath(impl_);
-  Glib::ustring retn = path ? (char*)path : "";
+  xmlpp::string retn = path ? (char*)path : "";
   xmlFree(path);
   return retn;
 }
 
-static NodeSet find_impl(xmlXPathContext* ctxt, const Glib::ustring& xpath)
+static NodeSet find_impl(xmlXPathContext* ctxt, const xmlpp::string& xpath)
 {
   xmlXPathObject* result = xmlXPathEval((const xmlChar*)xpath.c_str(), ctxt);
 
@@ -182,7 +182,7 @@
   return nodes;
 }
 
-NodeSet Node::find(const Glib::ustring& xpath) const
+NodeSet Node::find(const xmlpp::string& xpath) const
 {
   xmlXPathContext* ctxt = xmlXPathNewContext(impl_->doc);
   ctxt->node = impl_;
@@ -190,7 +190,7 @@
   return find_impl(ctxt, xpath);
 }
 
-NodeSet Node::find(const Glib::ustring& xpath,
+NodeSet Node::find(const xmlpp::string& xpath,
 		   const PrefixNsMap& namespaces) const
 {
   xmlXPathContext* ctxt = xmlXPathNewContext(impl_->doc);
@@ -205,7 +205,7 @@
   return find_impl(ctxt, xpath);
 }
 
-Glib::ustring Node::get_namespace_prefix() const
+xmlpp::string Node::get_namespace_prefix() const
 {
   if(impl_->type == XML_DOCUMENT_NODE)
   {
@@ -215,16 +215,16 @@
     //This can be an issue when calling this method on a Node returned by Node::find().
     //See the TODO comment on Document, suggesting that Document should derived from Node.
 
-    return Glib::ustring();
+    return xmlpp::string();
   }
 
   if(impl_ && impl_->ns && impl_->ns->prefix)
     return (char*)impl_->ns->prefix;
   else
-    return Glib::ustring();
+    return xmlpp::string();
 }
 
-Glib::ustring Node::get_namespace_uri() const
+xmlpp::string Node::get_namespace_uri() const
 {
   if(impl_->type == XML_DOCUMENT_NODE)
   {
@@ -234,16 +234,16 @@
     //This can be an issue when calling this method on a Node returned by Node::find().
     //See the TODO comment on Document, suggesting that Document should derived from Node.
 
-    return Glib::ustring();
+    return xmlpp::string();
   }
 
    if(impl_ && impl_->ns && impl_->ns->href)
     return (char*)impl_->ns->href;
   else
-    return Glib::ustring();
+    return xmlpp::string();
 }
 
-void Node::set_namespace(const Glib::ustring& ns_prefix)
+void Node::set_namespace(const xmlpp::string& ns_prefix)
 {
   //Look for the existing namespace to use:
   xmlNs* ns = xmlSearchNs( cobj()->doc, cobj(), (xmlChar*)(ns_prefix.empty() ? 0 : ns_prefix.c_str()) );
diff -u -r libxml++-2.14.0/libxml++/nodes/node.h libxml++_std_string-2.14.0/libxml++/nodes/node.h
--- libxml++-2.14.0/libxml++/nodes/node.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/nodes/node.h	2006-08-22 15:19:21.000000000 -0700
@@ -9,7 +9,7 @@
 
 #include <libxml++/noncopyable.h>
 #include <libxml++/exceptions/exception.h>
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 #include <list>
 #include <map>
 #include <vector>
@@ -43,21 +43,21 @@
   /** Get the name of this node.
    * @returns The node's name.
    */
-  Glib::ustring get_name() const;
+  xmlpp::string get_name() const;
 
   /** Set the name of this node.
    * @param name The new name for the node.
    */
-  void set_name(const Glib::ustring& name);
+  void set_name(const xmlpp::string& name);
 
   /** Set the namespace prefix used by the node
    * If no such namespace prefix has been declared then this method will throw an exception.
    * @param ns_prefix The namespace prefix.
    */
-  void set_namespace(const Glib::ustring& ns_prefix);
+  void set_namespace(const xmlpp::string& ns_prefix);
 
-  Glib::ustring get_namespace_prefix() const;
-  Glib::ustring get_namespace_uri() const;
+  xmlpp::string get_namespace_prefix() const;
+  xmlpp::string get_namespace_uri() const;
 
   /** Discover at what line number this node occurs in the XML file.
    * @returns The line number.
@@ -68,21 +68,21 @@
    * @param name The names of the child nodes to get. If you do not specigy a name, then the list will contain all nodes, regardless of their names.
    * @returns The list of child nodes.
    */
-  NodeList get_children(const Glib::ustring& name = Glib::ustring());
+  NodeList get_children(const xmlpp::string& name = xmlpp::string());
 
   /** Obtain the list of child nodes. You may optionally obtain a list of only the child nodes which have a certain name.
    * @param name The names of the child nodes to get. If you do not specigy a name, then the list will contain all nodes, regardless of their names.
    * @returns The list of child nodes.
    */
-  const NodeList get_children(const Glib::ustring& name = Glib::ustring()) const;
+  const NodeList get_children(const xmlpp::string& name = xmlpp::string()) const;
 
   /** Add a child element to this node
    * @param name The new node name
    * @param ns_prefix The namespace prefix. If the prefix has not been declared then this method will throw an exception.
    * @returns The newly-created element
    */
-  Element* add_child(const Glib::ustring& name,
-                     const Glib::ustring& ns_prefix = Glib::ustring());
+  Element* add_child(const xmlpp::string& name,
+                     const xmlpp::string& ns_prefix = xmlpp::string());
 
   /** Remove the child node.
    * @param node The child node to remove. This Node will be deleted and therefore unusable after calling this method.
@@ -100,22 +100,22 @@
   /** Return the XPath of this node
    * @result The XPath of the node.
    */
-  Glib::ustring get_path() const;
+  xmlpp::string get_path() const;
 
   /** Find nodes from a XPath expression
    * @param xpath The XPath of the nodes.
    */
-  NodeSet find(const Glib::ustring& xpath) const;
+  NodeSet find(const xmlpp::string& xpath) const;
 
   /** A map of namespace prefixes to namespace URIs.
    */
-  typedef std::map<Glib::ustring, Glib::ustring> PrefixNsMap;
+  typedef std::map<xmlpp::string, xmlpp::string> PrefixNsMap;
 
   /** Find nodes from a XPath expression
    * @param xpath The XPath of the nodes.
    * @param namespaces A map of namespace prefixes to namespace URIs to be used while finding.
    */
-  NodeSet find(const Glib::ustring& xpath, const PrefixNsMap& namespaces) const;
+  NodeSet find(const xmlpp::string& xpath, const PrefixNsMap& namespaces) const;
 
 
   ///Access the underlying libxml implementation.
diff -u -r libxml++-2.14.0/libxml++/parsers/domparser.cc libxml++_std_string-2.14.0/libxml++/parsers/domparser.cc
--- libxml++-2.14.0/libxml++/parsers/domparser.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/domparser.cc	2006-08-22 15:19:21.000000000 -0700
@@ -26,7 +26,7 @@
   doc_ = new Document();
 }
 
-DomParser::DomParser(const Glib::ustring& filename, bool validate)
+DomParser::DomParser(const xmlpp::string& filename, bool validate)
 : doc_(0)
 {
   set_validate(validate);
@@ -38,7 +38,7 @@
   release_underlying();
 }
 
-void DomParser::parse_file(const Glib::ustring& filename)
+void DomParser::parse_file(const xmlpp::string& filename)
 {
   release_underlying(); //Free any existing document.
 
@@ -78,9 +78,13 @@
   parse_context();
 }
 
-void DomParser::parse_memory(const Glib::ustring& contents)
+void DomParser::parse_memory(const xmlpp::string& contents)
 {
+#ifdef LIBXMLPP_USE_STD_STRING
+  parse_memory_raw((const unsigned char*)contents.c_str(), contents.length());
+#else
   parse_memory_raw((const unsigned char*)contents.c_str(), contents.bytes());
+#endif
 }
 
 void DomParser::parse_context()
@@ -149,7 +153,7 @@
 
   initialize_context();
 
-  //TODO: Shouldn't we use a Glib::ustring here, and some alternative to std::getline()?
+  //TODO: Shouldn't we use a xmlpp::string here, and some alternative to std::getline()?
   std::string line;
   while(std::getline(in, line))
   {
diff -u -r libxml++-2.14.0/libxml++/parsers/domparser.h libxml++_std_string-2.14.0/libxml++/parsers/domparser.h
--- libxml++-2.14.0/libxml++/parsers/domparser.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/domparser.h	2006-08-22 15:19:21.000000000 -0700
@@ -26,20 +26,20 @@
    * @param filename The path to the file.
    * @param validate Whether the parser should validate the XML.             
    */  
-  explicit DomParser(const Glib::ustring& filename, bool validate = false);
+  explicit DomParser(const xmlpp::string& filename, bool validate = false);
   virtual ~DomParser();
 
   /** Parse an XML document from a file.
    * @throw exception
    * @param filename The path to the file.
    */                                                                                                                                                                                               
-  virtual void parse_file(const Glib::ustring& filename);
+  virtual void parse_file(const xmlpp::string& filename);
 
   /** Parse an XML document from a string.
    * @throw exception  
    * @param contents The XML document as a string.
    */ 
-  virtual void parse_memory(const Glib::ustring& contents);
+  virtual void parse_memory(const xmlpp::string& contents);
   
   /** Parse an XML document from raw memory.
    * @throw exception
diff -u -r libxml++-2.14.0/libxml++/parsers/parser.cc libxml++_std_string-2.14.0/libxml++/parsers/parser.cc
--- libxml++-2.14.0/libxml++/parsers/parser.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/parser.cc	2006-08-22 15:19:21.000000000 -0700
@@ -86,13 +86,13 @@
   }
 }
 
-void Parser::on_validity_error(const Glib::ustring& message)
+void Parser::on_validity_error(const xmlpp::string& message)
 {
   //Throw an exception later when the whole message has been received:
   validate_error_ += message;
 }
 
-void Parser::on_validity_warning(const Glib::ustring& message)
+void Parser::on_validity_warning(const xmlpp::string& message)
 {
   //Throw an exception later when the whole message has been received:
   validate_warning_ += message;
@@ -137,7 +137,7 @@
 
       try
       {
-        parser->on_validity_error(Glib::ustring(buff));
+        parser->on_validity_error(xmlpp::string(buff));
       }
       catch(const exception& e)
       {
@@ -168,7 +168,7 @@
 
       try
       {
-        parser->on_validity_warning(Glib::ustring(buff));
+        parser->on_validity_warning(xmlpp::string(buff));
       }
       catch(const exception& e)
       {
diff -u -r libxml++-2.14.0/libxml++/parsers/parser.h libxml++_std_string-2.14.0/libxml++/parsers/parser.h
--- libxml++-2.14.0/libxml++/parsers/parser.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/parser.h	2006-08-22 15:19:21.000000000 -0700
@@ -66,7 +66,7 @@
    * @throw exception
    * @param filename The path to the file.
    */
-  virtual void parse_file(const Glib::ustring& filename) = 0;
+  virtual void parse_file(const xmlpp::string& filename) = 0;
 
   //TODO: In a future ABI-break, add a virtual void parse_memory_raw(const unsigned char* contents, size_type bytes_count);
   
@@ -74,7 +74,7 @@
    * @throw exception
    * @param contents The XML document as a string.
    */
-  virtual void parse_memory(const Glib::ustring& contents) = 0;
+  virtual void parse_memory(const xmlpp::string& contents) = 0;
 
   /** Parse an XML document from a stream.
    * @throw exception
@@ -86,8 +86,8 @@
   virtual void initialize_context();
   virtual void release_underlying();
 
-  virtual void on_validity_error(const Glib::ustring& message);
-  virtual void on_validity_warning(const Glib::ustring& message);
+  virtual void on_validity_error(const xmlpp::string& message);
+  virtual void on_validity_warning(const xmlpp::string& message);
 
   virtual void handleException(const exception& e);
   virtual void check_for_exception();
@@ -98,8 +98,8 @@
   
   _xmlParserCtxt* context_;
   exception* exception_;
-  Glib::ustring validate_error_;
-  Glib::ustring validate_warning_; //Built gradually - used in an exception at the end of parsing.
+  xmlpp::string validate_error_;
+  xmlpp::string validate_warning_; //Built gradually - used in an exception at the end of parsing.
 
   bool validate_;
   bool substitute_entities_;
diff -u -r libxml++-2.14.0/libxml++/parsers/saxparser.cc libxml++_std_string-2.14.0/libxml++/parsers/saxparser.cc
--- libxml++-2.14.0/libxml++/parsers/saxparser.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/saxparser.cc	2006-08-22 15:19:21.000000000 -0700
@@ -79,12 +79,12 @@
   release_underlying();
 }
 
-xmlEntityPtr SaxParser::on_get_entity(const Glib::ustring& name)
+xmlEntityPtr SaxParser::on_get_entity(const xmlpp::string& name)
 {
   return entity_resolver_doc_.get_entity(name);
 }
 
-void SaxParser::on_entity_declaration(const Glib::ustring& name, XmlEntityType type, const Glib::ustring& publicId, const Glib::ustring& systemId, const Glib::ustring& content)
+void SaxParser::on_entity_declaration(const xmlpp::string& name, XmlEntityType type, const xmlpp::string& publicId, const xmlpp::string& systemId, const xmlpp::string& content)
 {
   entity_resolver_doc_.set_entity_declaration(name, type, publicId, systemId, content);
 }  
@@ -97,42 +97,42 @@
 {
 }
 
-void SaxParser::on_start_element(const Glib::ustring& name, const AttributeList& attributes)
+void SaxParser::on_start_element(const xmlpp::string& name, const AttributeList& attributes)
 {
 }
 
-void SaxParser::on_end_element(const Glib::ustring& name)
+void SaxParser::on_end_element(const xmlpp::string& name)
 {
 }
 
-void SaxParser::on_characters(const Glib::ustring& text)
+void SaxParser::on_characters(const xmlpp::string& text)
 {
 }
 
-void SaxParser::on_comment(const Glib::ustring& text)
+void SaxParser::on_comment(const xmlpp::string& text)
 {
 }
 
-void SaxParser::on_warning(const Glib::ustring& text)
+void SaxParser::on_warning(const xmlpp::string& text)
 {
 }
 
-void SaxParser::on_error(const Glib::ustring& text)
+void SaxParser::on_error(const xmlpp::string& text)
 {
 }
 
-void SaxParser::on_fatal_error(const Glib::ustring& text)
+void SaxParser::on_fatal_error(const xmlpp::string& text)
 {
   throw parse_error("Fatal error: " + text);
 }
 
-void SaxParser::on_cdata_block(const Glib::ustring& text)
+void SaxParser::on_cdata_block(const xmlpp::string& text)
 {
 }
 
-void SaxParser::on_internal_subset(const Glib::ustring& name,
-                         const Glib::ustring& publicId,
-                         const Glib::ustring& systemId)
+void SaxParser::on_internal_subset(const xmlpp::string& name,
+                         const xmlpp::string& publicId,
+                         const xmlpp::string& systemId)
 {
   entity_resolver_doc_.set_internal_subset(name, publicId, systemId);
 }
@@ -162,7 +162,7 @@
   check_for_exception();
 }
 
-void SaxParser::parse_file(const Glib::ustring& filename)
+void SaxParser::parse_file(const xmlpp::string& filename)
 {
   if(context_)
     throw parse_error("Attempt to start a second parse while a parse is in progress.");
@@ -184,9 +184,13 @@
   parse();
 }
   
-void SaxParser::parse_memory(const Glib::ustring& contents)
+void SaxParser::parse_memory(const xmlpp::string& contents)
 {
+#ifdef LIBXMLPP_USE_STD_STRING
+  parse_memory_raw((const unsigned char*)contents.c_str(), contents.length());
+#else
   parse_memory_raw((const unsigned char*)contents.c_str(), contents.bytes());
+#endif
 }
 
 void SaxParser::parse_stream(std::istream& in)
@@ -205,7 +209,7 @@
 
   initialize_context();
 
-  //TODO: Shouldn't we use a Glib::ustring here, and some alternative to std::getline()?
+  //TODO: Shouldn't we use a xmlpp::string here, and some alternative to std::getline()?
   std::string line;
   while( ( ! exception_ )
       && std::getline(in, line))
@@ -225,7 +229,7 @@
   check_for_exception();
 }
 
-void SaxParser::parse_chunk(const Glib::ustring& chunk)
+void SaxParser::parse_chunk(const xmlpp::string& chunk)
 {
   KeepBlanks k(KeepBlanks::Default);
 
@@ -242,8 +246,11 @@
   }
   
   if(!exception_)
+#ifdef LIBXMLPP_USE_STD_STRING
+    xmlParseChunk(context_, chunk.c_str(), chunk.length(), 0 /* don't terminate */);
+#else
     xmlParseChunk(context_, chunk.c_str(), chunk.bytes(), 0 /* don't terminate */);
-
+#endif
   check_for_exception();
 }
 
@@ -300,11 +307,11 @@
   try
   {
     parser->on_entity_declaration(
-      ( name ? Glib::ustring((const char*)name) : ""),
+      ( name ? xmlpp::string((const char*)name) : ""),
       static_cast<XmlEntityType>(type),
-      ( publicId ? Glib::ustring((const char*)publicId) : ""),
-      ( systemId ? Glib::ustring((const char*)systemId) : ""),
-      ( content ? Glib::ustring((const char*)content) : "") );
+      ( publicId ? xmlpp::string((const char*)publicId) : ""),
+      ( systemId ? xmlpp::string((const char*)systemId) : ""),
+      ( content ? xmlpp::string((const char*)content) : "") );
   }
   catch(const exception& e)
   {
@@ -362,7 +369,7 @@
 
   try
   {
-    parser->on_start_element(Glib::ustring((const char*) name), attributes);
+    parser->on_start_element(xmlpp::string((const char*) name), attributes);
   }
   catch(const exception& e)
   {
@@ -377,7 +384,7 @@
 
   try
   {
-    parser->on_end_element(Glib::ustring((const char*) name));
+    parser->on_end_element(xmlpp::string((const char*) name));
   }
   catch(const exception& e)
   {
@@ -392,11 +399,11 @@
 
   try
   {
-    // Here we force the use of Glib::ustring::ustring( InputIterator begin, InputIterator end )
-    // instead of Glib::ustring::ustring( const char*, size_type ) because it
+    // Here we force the use of xmlpp::string::ustring( InputIterator begin, InputIterator end )
+    // instead of xmlpp::string::ustring( const char*, size_type ) because it
     // expects the length of the string in characters, not in bytes.
     parser->on_characters(
-        Glib::ustring(
+        xmlpp::string(
           reinterpret_cast<const char *>(ch),
           reinterpret_cast<const char *>(ch + len) ) );
   }
@@ -413,7 +420,7 @@
 
   try
   {
-    parser->on_comment(Glib::ustring((const char*) value));
+    parser->on_comment(xmlpp::string((const char*) value));
   }
   catch(const exception& e)
   {
@@ -435,7 +442,7 @@
 
   try
   {
-    parser->on_warning(Glib::ustring(buff));
+    parser->on_warning(xmlpp::string(buff));
   }
   catch(const exception& e)
   {
@@ -460,7 +467,7 @@
 
   try
   {
-    parser->on_error(Glib::ustring(buff));
+    parser->on_error(xmlpp::string(buff));
   }
   catch(const exception& e)
   {
@@ -482,7 +489,7 @@
 
   try
   {
-    parser->on_fatal_error(Glib::ustring(buff));
+    parser->on_fatal_error(xmlpp::string(buff));
   }
   catch(const exception& e)
   {
@@ -497,10 +504,10 @@
 
   try
   {
-    // Here we force the use of Glib::ustring::ustring( InputIterator begin, InputIterator end )
+    // Here we force the use of xmlpp::string::ustring( InputIterator begin, InputIterator end )
     // see comments in SaxParserCallback::characters
     parser->on_cdata_block(
-        Glib::ustring(
+        xmlpp::string(
           reinterpret_cast<const char *>(value),
           reinterpret_cast<const char *>(value + len) ) );
   }
@@ -518,10 +525,10 @@
   
   try
   {
-    Glib::ustring pid = publicId ? Glib::ustring((const char*) publicId) : "";
-    Glib::ustring sid = systemId ? Glib::ustring((const char*) systemId) : "";
+    xmlpp::string pid = publicId ? xmlpp::string((const char*) publicId) : "";
+    xmlpp::string sid = systemId ? xmlpp::string((const char*) systemId) : "";
 
-    parser->on_internal_subset( Glib::ustring((const char*) name), pid, sid);
+    parser->on_internal_subset( xmlpp::string((const char*) name), pid, sid);
   }
   catch(const exception& e)
   {
diff -u -r libxml++-2.14.0/libxml++/parsers/saxparser.h libxml++_std_string-2.14.0/libxml++/parsers/saxparser.h
--- libxml++-2.14.0/libxml++/parsers/saxparser.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/saxparser.h	2006-08-22 15:19:21.000000000 -0700
@@ -35,10 +35,10 @@
    */
   struct Attribute
   {
-    Glib::ustring name;
-    Glib::ustring value;
+    xmlpp::string name;
+    xmlpp::string value;
 
-    Attribute(Glib::ustring const & name, Glib::ustring const & value)
+    Attribute(xmlpp::string const & name, xmlpp::string const & value)
       : name(name), value(value)
       {
       }
@@ -51,15 +51,15 @@
    * 
    * Example:@n
    * <code>
-   *   Glib::ustring name = "foo";@n
+   *   xmlpp::string name = "foo";@n
    *   AttributeList::const_iterator attribute = std::find_if(attributes.begin(), attributes.end(), AttributeHasName(name));
    * </code>
    */
   struct AttributeHasName
   {
-    Glib::ustring const & name;
+    xmlpp::string const & name;
 
-    AttributeHasName(Glib::ustring const & name)
+    AttributeHasName(xmlpp::string const & name)
       : name(name)
       {
       }
@@ -84,13 +84,13 @@
    * @throw exception
    * @param filename The path to the file.
    */
-  virtual void parse_file(const Glib::ustring& filename);
+  virtual void parse_file(const xmlpp::string& filename);
 
   /** Parse an XML document from a string.
    * @throw exception
    * @param contents The XML document as a string.
    */
-  virtual void parse_memory(const Glib::ustring& contents);
+  virtual void parse_memory(const xmlpp::string& contents);
 
   /** Parse an XML document from raw memory.
    * @throw exception
@@ -117,7 +117,7 @@
    * @throw exception
    * @param chunk The next piece of the XML document.
    */
-  virtual void parse_chunk(const Glib::ustring& chunk);
+  virtual void parse_chunk(const xmlpp::string& chunk);
 
   /** Finish a chunk-wise parse.
    *
@@ -130,18 +130,18 @@
         
   virtual void on_start_document();
   virtual void on_end_document();
-  virtual void on_start_element(const Glib::ustring& name, const AttributeList& attributes);
-  virtual void on_end_element(const Glib::ustring& name);
-  virtual void on_characters(const Glib::ustring& characters);
-  virtual void on_comment(const Glib::ustring& text);
-  virtual void on_warning(const Glib::ustring& text);
-  virtual void on_error(const Glib::ustring& text);
-  virtual void on_fatal_error(const Glib::ustring& text);
-  virtual void on_cdata_block(const Glib::ustring& text);
+  virtual void on_start_element(const xmlpp::string& name, const AttributeList& attributes);
+  virtual void on_end_element(const xmlpp::string& name);
+  virtual void on_characters(const xmlpp::string& characters);
+  virtual void on_comment(const xmlpp::string& text);
+  virtual void on_warning(const xmlpp::string& text);
+  virtual void on_error(const xmlpp::string& text);
+  virtual void on_fatal_error(const xmlpp::string& text);
+  virtual void on_cdata_block(const xmlpp::string& text);
 
   /** Override this to receive information about the document's DTD and any entity declarations.
    */
-  virtual void on_internal_subset(const Glib::ustring& name, const Glib::ustring& publicId, const Glib::ustring& systemId);
+  virtual void on_internal_subset(const xmlpp::string& name, const xmlpp::string& publicId, const xmlpp::string& systemId);
 
   /** Override this method to resolve entities references in your derived parser, instead of using the default entity resolution,
    * or to be informed when entity references are encountered.
@@ -162,14 +162,14 @@
    * @returns The resolved xmlEntity for the entity reference. You must include libxml/parser.h in order to use this C struct.
    * This instance will not be freed by the caller.
    */
-  virtual _xmlEntity* on_get_entity(const Glib::ustring& name);
+  virtual _xmlEntity* on_get_entity(const xmlpp::string& name);
 
   /** Override this to receive information about every entity declaration.
    * If you override this function, and you want normal entity substitution to work, then you must call the base class in your override.
    *
    * This would be useful when overriding on_get_entity().
    */
-  virtual void on_entity_declaration(const Glib::ustring& name, XmlEntityType type, const Glib::ustring& publicId, const Glib::ustring& systemId, const Glib::ustring& content);
+  virtual void on_entity_declaration(const xmlpp::string& name, XmlEntityType type, const xmlpp::string& publicId, const xmlpp::string& systemId, const xmlpp::string& content);
 
   virtual void release_underlying();
   
diff -u -r libxml++-2.14.0/libxml++/parsers/textreader.cc libxml++_std_string-2.14.0/libxml++/parsers/textreader.cc
--- libxml++-2.14.0/libxml++/parsers/textreader.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/textreader.cc	2006-08-22 15:19:21.000000000 -0700
@@ -16,12 +16,12 @@
     int Int(int value);
     bool Bool(int value);
     char Char(int value);
-    Glib::ustring String(xmlChar * value, bool free = false);
-    Glib::ustring String(xmlChar const * value);
+    xmlpp::string String(xmlChar * value, bool free = false);
+    xmlpp::string String(xmlChar const * value);
   };
 
 TextReader::TextReader(
-    const Glib::ustring& URI)
+    const xmlpp::string& URI)
   : propertyreader(new PropertyReader(*this)), impl_( xmlNewTextReaderFilename(URI.c_str()) )
 {
   if( ! impl_ )
@@ -39,19 +39,19 @@
       xmlTextReaderRead(impl_));
 }
 
-Glib::ustring TextReader::read_inner_xml()
+xmlpp::string TextReader::read_inner_xml()
 {
   return propertyreader->String(
       xmlTextReaderReadInnerXml(impl_), true);
 }
 
-Glib::ustring TextReader::read_outer_xml()
+xmlpp::string TextReader::read_outer_xml()
 {
   return propertyreader->String(
       xmlTextReaderReadOuterXml(impl_), true);
 }
 
-Glib::ustring TextReader::read_string()
+xmlpp::string TextReader::read_string()
 {
   return propertyreader->String(
       xmlTextReaderReadString(impl_), true);
@@ -69,7 +69,7 @@
       xmlTextReaderAttributeCount(impl_));
 }
 
-Glib::ustring TextReader::get_base_uri() const
+xmlpp::string TextReader::get_base_uri() const
 {
   return propertyreader->String(
       xmlTextReaderBaseUri(impl_));
@@ -105,19 +105,19 @@
       xmlTextReaderIsEmptyElement(impl_));
 }
 
-Glib::ustring TextReader::get_local_name() const
+xmlpp::string TextReader::get_local_name() const
 {
   return propertyreader->String(
       xmlTextReaderLocalName(impl_));
 }
 
-Glib::ustring TextReader::get_name() const
+xmlpp::string TextReader::get_name() const
 {
   return propertyreader->String(
       xmlTextReaderName(impl_));
 }
 
-Glib::ustring TextReader::get_namespace_uri() const
+xmlpp::string TextReader::get_namespace_uri() const
 {
   return propertyreader->String(
       xmlTextReaderNamespaceUri(impl_));
@@ -131,7 +131,7 @@
   return (xmlNodeType)result;
 }
 
-Glib::ustring TextReader::get_prefix() const
+xmlpp::string TextReader::get_prefix() const
 {
   return propertyreader->String(
       xmlTextReaderPrefix(impl_));
@@ -143,13 +143,13 @@
       xmlTextReaderQuoteChar(impl_));
 }
 
-Glib::ustring TextReader::get_value() const
+xmlpp::string TextReader::get_value() const
 {
   return propertyreader->String(
       xmlTextReaderValue(impl_), true);
 }
 
-Glib::ustring TextReader::get_xml_lang() const
+xmlpp::string TextReader::get_xml_lang() const
 {
   return propertyreader->String(
       xmlTextReaderXmlLang(impl_));
@@ -169,29 +169,29 @@
     check_for_exceptions();
 }
 
-Glib::ustring TextReader::get_attribute(int number) const
+xmlpp::string TextReader::get_attribute(int number) const
 {
   return propertyreader->String(
       xmlTextReaderGetAttributeNo(impl_, number), true);
 }
 
-Glib::ustring TextReader::get_attribute(
-    const Glib::ustring& name) const
+xmlpp::string TextReader::get_attribute(
+    const xmlpp::string& name) const
 {
   return propertyreader->String(
       xmlTextReaderGetAttribute(impl_, (const xmlChar *)name.c_str()), true);
 }
 
-Glib::ustring TextReader::get_attribute(
-    const Glib::ustring& localName,
-    const Glib::ustring& namespaceURI) const
+xmlpp::string TextReader::get_attribute(
+    const xmlpp::string& localName,
+    const xmlpp::string& namespaceURI) const
 {
   return propertyreader->String(
       xmlTextReaderGetAttributeNs(impl_, (const xmlChar *)localName.c_str(), (const xmlChar *)namespaceURI.c_str()), true);
 }
 
-Glib::ustring TextReader::lookup_namespace(
-    const Glib::ustring& prefix) const
+xmlpp::string TextReader::lookup_namespace(
+    const xmlpp::string& prefix) const
 {
   return propertyreader->String(
       xmlTextReaderLookupNamespace(impl_, (const xmlChar *)prefix.c_str()), true);
@@ -204,15 +204,15 @@
 }
 
 bool TextReader::move_to_attribute(
-    const Glib::ustring& name)
+    const xmlpp::string& name)
 {
   return propertyreader->Bool(
       xmlTextReaderMoveToAttribute(impl_, (const xmlChar *)name.c_str()));
 }
 
 bool TextReader::move_to_attribute(
-    const Glib::ustring& localName,
-    const Glib::ustring& namespaceURI)
+    const xmlpp::string& localName,
+    const xmlpp::string& namespaceURI)
 {
   return propertyreader->Bool(
       xmlTextReaderMoveToAttributeNs(impl_, (const xmlChar *)localName.c_str(), (const xmlChar *)namespaceURI.c_str()));
@@ -336,16 +336,16 @@
   return value;
 }
 
-Glib::ustring TextReader::PropertyReader::String(
+xmlpp::string TextReader::PropertyReader::String(
     xmlChar * value,
     bool free)
 {
   owner_.check_for_exceptions();
   
   if(value == (xmlChar *)0)
-    return Glib::ustring();
+    return xmlpp::string();
     
-  Glib::ustring result = (char *)value;
+  xmlpp::string result = (char *)value;
 
   if(free)
     xmlFree(value);
@@ -353,13 +353,13 @@
   return result;
 }
 
-Glib::ustring TextReader::PropertyReader::String(
+xmlpp::string TextReader::PropertyReader::String(
     xmlChar const * value)
 {
   owner_.check_for_exceptions();
 
   if(value == (xmlChar *)0)
-    return Glib::ustring();
+    return xmlpp::string();
 
   return (const char *)value;
 }
diff -u -r libxml++-2.14.0/libxml++/parsers/textreader.h libxml++_std_string-2.14.0/libxml++/parsers/textreader.h
--- libxml++-2.14.0/libxml++/parsers/textreader.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/parsers/textreader.h	2006-08-22 15:19:21.000000000 -0700
@@ -10,7 +10,7 @@
 #include <libxml++/noncopyable.h>
 #include <libxml++/nodes/node.h>
 
-#include <glibmm/ustring.h>
+#include <libxml++/libxml++_string.h>
 
 extern "C"
 {
@@ -64,7 +64,7 @@
                         
   public:
     // TextReader(InputBuffer)
-    TextReader(const Glib::ustring& URI);
+    TextReader(const xmlpp::string& URI);
     ~TextReader();
     
     /** Moves the position of the current instance to the next node in the stream, exposing its properties.
@@ -73,19 +73,19 @@
     bool read();
 
     /** Reads the contents of the current node, including child nodes and markup.
-     * @return A Glib::ustring containing the XML content, or and empty Glib::ustring if the current node is neither an element nor attribute, or has no child nodes.
+     * @return A xmlpp::string containing the XML content, or and empty xmlpp::string if the current node is neither an element nor attribute, or has no child nodes.
      */
-    Glib::ustring read_inner_xml();
+    xmlpp::string read_inner_xml();
     
     /** Reads the current node and its contents, including child nodes and markup.
-     * @return A Glib::ustring containing the XML content, or an empty Glib::ustring if the current node is neither an element nor attribute.
+     * @return A xmlpp::string containing the XML content, or an empty xmlpp::string if the current node is neither an element nor attribute.
      */
-    Glib::ustring read_outer_xml();
+    xmlpp::string read_outer_xml();
 
     /** Reads the contents of an element or a text node as a string.
-     * @return A Glib::ustring containing the contents of the Element or Text node, or an empty Glib::ustring if the reader is positioned on any other type of node.
+     * @return A xmlpp::string containing the contents of the Element or Text node, or an empty xmlpp::string if the reader is positioned on any other type of node.
      */
-    Glib::ustring read_string();
+    xmlpp::string read_string();
 
     /** Parses an attribute value into one or more Text and EntityReference nodes.
      * @return A bool where true indicates the attribute value was parsed, and false indicates the reader was not positioned on an attribute node or all the attribute values have been read.
@@ -98,9 +98,9 @@
     int get_attribute_count() const;
 
     /** Gets the base Uniform Resource Identifier (URI) of the current node.
-     * @return The base URI of the current node or an empty Glib::ustring if not available.
+     * @return The base URI of the current node or an empty xmlpp::string if not available.
      */
-    Glib::ustring get_base_uri() const;
+    xmlpp::string get_base_uri() const;
 
     /** Gets the depth of the current node in the XML document.
      * @return The depth of the current node in the XML document.
@@ -127,33 +127,33 @@
      */
     bool is_empty_element() const;
 
-    Glib::ustring get_local_name() const;
-    Glib::ustring get_name() const;
-    Glib::ustring get_namespace_uri() const;
+    xmlpp::string get_local_name() const;
+    xmlpp::string get_name() const;
+    xmlpp::string get_namespace_uri() const;
 
     xmlNodeType get_node_type() const;
 
-    Glib::ustring get_prefix() const;
+    xmlpp::string get_prefix() const;
     char get_quote_char() const;
 
-    Glib::ustring get_value() const;
-    Glib::ustring get_xml_lang() const;
+    xmlpp::string get_value() const;
+    xmlpp::string get_xml_lang() const;
 
     xmlReadState get_read_state() const;
 
     void close();
 
-    Glib::ustring get_attribute(int number) const;
-    Glib::ustring get_attribute(const Glib::ustring& name) const;
-    Glib::ustring get_attribute(const Glib::ustring& local_name, const Glib::ustring& ns_uri) const;
+    xmlpp::string get_attribute(int number) const;
+    xmlpp::string get_attribute(const xmlpp::string& name) const;
+    xmlpp::string get_attribute(const xmlpp::string& local_name, const xmlpp::string& ns_uri) const;
 
     // TODO InputBuffer GetRemainder;
 
-    Glib::ustring lookup_namespace(const Glib::ustring& prefix) const;
+    xmlpp::string lookup_namespace(const xmlpp::string& prefix) const;
 
     bool move_to_attribute(int number);
-    bool move_to_attribute(const Glib::ustring& name);
-    bool move_to_attribute(const Glib::ustring& local_name, const Glib::ustring& ns_uri);
+    bool move_to_attribute(const xmlpp::string& name);
+    bool move_to_attribute(const xmlpp::string& local_name, const xmlpp::string& ns_uri);
     bool move_to_first_attribute();
     bool move_to_next_attribute();
     bool move_to_element();
diff -u -r libxml++-2.14.0/libxml++/validators/dtdvalidator.cc libxml++_std_string-2.14.0/libxml++/validators/dtdvalidator.cc
--- libxml++-2.14.0/libxml++/validators/dtdvalidator.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/validators/dtdvalidator.cc	2006-08-22 15:19:21.000000000 -0700
@@ -27,13 +27,13 @@
 {
 }
 
-DtdValidator::DtdValidator(const Glib::ustring& file)
+DtdValidator::DtdValidator(const xmlpp::string& file)
 : dtd_(0)
 {
   parse_subset("",file);
 }
 
-DtdValidator::DtdValidator(const Glib::ustring& external,const Glib::ustring& system)
+DtdValidator::DtdValidator(const xmlpp::string& external,const xmlpp::string& system)
 : dtd_(0)
 {
   parse_subset(external,system);
@@ -45,12 +45,12 @@
   Validator::release_underlying();
 }
 
-void DtdValidator::parse_file(const Glib::ustring& filename)
+void DtdValidator::parse_file(const xmlpp::string& filename)
 {
   parse_subset("",filename);
 }
 
-void DtdValidator::parse_subset(const Glib::ustring& external,const Glib::ustring& system)
+void DtdValidator::parse_subset(const xmlpp::string& external,const xmlpp::string& system)
 {
   release_underlying(); // Free any existing dtd.
 
@@ -64,7 +64,7 @@
   dtd_ = static_cast<Dtd*>(dtd->_private);
 }
 
-void DtdValidator::parse_memory(const Glib::ustring& contents)
+void DtdValidator::parse_memory(const xmlpp::string& contents)
 {
   // Prepare an istream with buffer
   std::istringstream is( contents );
diff -u -r libxml++-2.14.0/libxml++/validators/dtdvalidator.h libxml++_std_string-2.14.0/libxml++/validators/dtdvalidator.h
--- libxml++-2.14.0/libxml++/validators/dtdvalidator.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/validators/dtdvalidator.h	2006-08-22 15:19:21.000000000 -0700
@@ -21,13 +21,13 @@
 {
 public:
   DtdValidator();
-  explicit DtdValidator(const Glib::ustring& file);
-  explicit DtdValidator(const Glib::ustring& external,const Glib::ustring& system);
+  explicit DtdValidator(const xmlpp::string& file);
+  explicit DtdValidator(const xmlpp::string& external,const xmlpp::string& system);
   virtual ~DtdValidator();
 
-  virtual void parse_subset(const Glib::ustring& external,const Glib::ustring& system);
-  virtual void parse_file(const Glib::ustring& filename);
-  virtual void parse_memory(const Glib::ustring& contents);
+  virtual void parse_subset(const xmlpp::string& external,const xmlpp::string& system);
+  virtual void parse_file(const xmlpp::string& filename);
+  virtual void parse_memory(const xmlpp::string& contents);
   virtual void parse_stream(std::istream& in);
 
   /** Test whether a document has been parsed.
diff -u -r libxml++-2.14.0/libxml++/validators/validator.cc libxml++_std_string-2.14.0/libxml++/validators/validator.cc
--- libxml++-2.14.0/libxml++/validators/validator.cc	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/validators/validator.cc	2006-08-22 15:19:21.000000000 -0700
@@ -49,13 +49,13 @@
   }
 }
 
-void Validator::on_validity_error(const Glib::ustring& message)
+void Validator::on_validity_error(const xmlpp::string& message)
 {
   //Throw an exception later when the whole message has been received:
   validate_error_ += message;
 }
 
-void Validator::on_validity_warning(const Glib::ustring& message)
+void Validator::on_validity_warning(const xmlpp::string& message)
 {
   //Throw an exception later when the whole message has been received:
   validate_warning_ += message;
@@ -96,7 +96,7 @@
 
     try
     {
-      validator->on_validity_error(Glib::ustring(buff));
+      validator->on_validity_error(xmlpp::string(buff));
     }
     catch(const exception& e)
     {
@@ -121,7 +121,7 @@
 
     try
     {
-      validator->on_validity_warning(Glib::ustring(buff));
+      validator->on_validity_warning(xmlpp::string(buff));
     }
     catch(const exception& e)
     {
diff -u -r libxml++-2.14.0/libxml++/validators/validator.h libxml++_std_string-2.14.0/libxml++/validators/validator.h
--- libxml++-2.14.0/libxml++/validators/validator.h	2006-03-13 07:56:58.000000000 -0800
+++ libxml++_std_string-2.14.0/libxml++/validators/validator.h	2006-08-22 15:19:21.000000000 -0700
@@ -39,8 +39,8 @@
   virtual void initialize_valid();
   virtual void release_underlying();
 
-  virtual void on_validity_error(const Glib::ustring& message);
-  virtual void on_validity_warning(const Glib::ustring& message);
+  virtual void on_validity_error(const xmlpp::string& message);
+  virtual void on_validity_warning(const xmlpp::string& message);
 
   virtual void handleException(const exception& e);
   virtual void check_for_exception();
@@ -51,8 +51,8 @@
 
   _xmlValidCtxt* valid_;
   exception* exception_;
-  Glib::ustring validate_error_;
-  Glib::ustring validate_warning_; //Built gradually - used in an exception at the end of parsing.
+  xmlpp::string validate_error_;
+  xmlpp::string validate_warning_; //Built gradually - used in an exception at the end of parsing.
 };
 
 } // namespace xmlpp
