    /*
     *  call-seq:
     *    remove_namespaces!
     *
     *  Remove all namespaces from all nodes in the document.
     *
     *  This could be useful for developers who either don't understand namespaces
     *  or don't care about them.
     *
     *  The following example shows a use case, and you can decide for yourself
     *  whether this is a good thing or not:
     *
     *    doc = Nokogiri::XML <<-EOXML
     *       <root>
     *         <car xmlns:part="http://general-motors.com/">
     *           <part:tire>Michelin Model XGV</part:tire>
     *         </car>
     *         <bicycle xmlns:part="http://schwinn.com/">
     *           <part:tire>I'm a bicycle tire!</part:tire>
     *         </bicycle>
     *       </root>
     *       EOXML
     *
     *    doc.xpath("//tire").to_s # => ""
     *    doc.xpath("//part:tire", "part" => "http://general-motors.com/").to_s # => "<part:tire>Michelin Model XGV</part:tire>"
     *    doc.xpath("//part:tire", "part" => "http://schwinn.com/").to_s # => "<part:tire>I'm a bicycle tire!</part:tire>"
     *
     *    doc.remove_namespaces!
     *
     *    doc.xpath("//tire").to_s # => "<tire>Michelin Model XGV</tire><tire>I'm a bicycle tire!</tire>"
     *    doc.xpath("//part:tire", "part" => "http://general-motors.com/").to_s # => ""
     *    doc.xpath("//part:tire", "part" => "http://schwinn.com/").to_s # => ""
     *
     *  For more information on why this probably is *not* a good thing in general,
     *  please direct your browser to
     *  http://tenderlovemaking.com/2009/04/23/namespaces-in-xml/
     */
    VALUE remove_namespaces_bang(VALUE self)
    {
      xmlDocPtr doc ;
      Data_Get_Struct(self, xmlDoc, doc);

      recursively_remove_namespaces_from_node((xmlNodePtr)doc);
      return self;
    }