diff -rupN libxml-ruby-0.9.8.org/ext/libxml/ruby_xml_error.c libxml-ruby-0.9.8/ext/libxml/ruby_xml_error.c
--- libxml-ruby-0.9.8.org/ext/libxml/ruby_xml_error.c	2009-02-19 21:27:30.000000000 +0900
+++ libxml-ruby-0.9.8/ext/libxml/ruby_xml_error.c	2009-02-19 21:37:31.000000000 +0900
@@ -41,6 +41,8 @@ static void rxml_set_handler(VALUE self,
 #else
   rb_cvar_set(self, ERROR_HANDLER_ID, block);
 #endif
+
+  rxml_error_init_error_handler();
 }
 
 /*
@@ -176,10 +178,16 @@ void rxml_raise(xmlErrorPtr xerror)
   rb_exc_raise(error);
 }
 
+/* Register libxml error handler */
+void rxml_error_init_error_handler()
+{
+  xmlSetStructuredErrorFunc(NULL, structuredErrorFunc);
+}
+
 void ruby_init_xml_error()
 {
   /* Intercept libxml error handlers */
-  xmlSetStructuredErrorFunc(NULL, structuredErrorFunc);
+  rxml_error_init_error_handler();
 
   /* Error class */
   eXMLError = rb_define_class_under(mXML, "Error", rb_eStandardError);
diff -rupN libxml-ruby-0.9.8.org/lib/libxml/error.rb libxml-ruby-0.9.8/lib/libxml/error.rb
--- libxml-ruby-0.9.8.org/lib/libxml/error.rb	2009-02-19 21:27:30.000000000 +0900
+++ libxml-ruby-0.9.8/lib/libxml/error.rb	2009-02-19 21:58:37.000000000 +0900
@@ -11,6 +11,45 @@ module LibXML
       QUIET_HANDLER = lambda do |error|
       end
       
+      # Register XML_FROM_xxx constants
+      FROM_CONSTANTS = [
+        "NO_ERROR",
+        "PARSER",
+        "TREE",
+        "NAMESPACE",
+        "DTD",
+        "HTML",
+        "MEMORY",
+        "OUTPUT",
+        "IO",
+        "FTP",
+        "HTTP",
+        "XINCLUDE",
+        "XPATH",
+        "XPOINTER",
+        "REGEXP",
+        "DATATYPE",
+        "SCHEMASP",
+        "SCHEMASV",
+        "RELAXNGP",
+        "RELAXNGV",
+        "CATALOG",
+        "C14N",
+        "XSLT",
+        "VALID",
+        "CHECK",
+        "WRITER",
+        "MODULE",
+        "I18N",
+        "SCHEMATRONV",
+      ]
+      FROM_CONSTANTS.each do |name|
+        alias_name = "XML_FROM_" + name
+        if const_defined?(name) && !const_defined?(alias_name)
+          const_set(alias_name, const_get(name))
+        end
+      end
+      
       def ==(other)
         eql?(other)
       end
