    /*
     *  call-seq:
     *    namespace_scopes()
     *
     * returns namespaces in scope for self -- those defined on self element
     * directly or any ancestor node -- as an array of Namespace objects.  Default
     * namespaces ("xmlns=" style) for self are included in this array; Default
     * namespaces for  ancestors, however, are not. See also #namespaces
     */
    static VALUE namespace_scopes(VALUE self)
    {
      xmlNodePtr node ;
      VALUE list;
      xmlNsPtr *ns_list;
      int j;

      Data_Get_Struct(self, xmlNode, node);

      list = rb_ary_new();
      ns_list = xmlGetNsList(node->doc, node);

      if(!ns_list) return list;

      for (j = 0 ; ns_list[j] != NULL ; ++j) {
        rb_ary_push(list, Nokogiri_wrap_xml_namespace(node->doc, ns_list[j]));
      }

      xmlFree(ns_list);
      return list;
    }