# File lib/openid/message.rb, line 132
    def _from_openid_args(openid_args)
      ns_args = []

      # resolve namespaces
      openid_args.each { |rest, value|
        ns_alias, ns_key = rest.split('.', 2)
        if ns_key.nil?
          ns_alias = NULL_NAMESPACE
          ns_key = rest
        end

        if ns_alias == 'ns'
          @namespaces.add_alias(value, ns_key)
        elsif ns_alias == NULL_NAMESPACE and ns_key == 'ns'
          @namespaces.add_alias(value, NULL_NAMESPACE)
        else
          ns_args << [ns_alias, ns_key, value]
        end
      }

      # ensure that there is an OpenID namespace definition
      openid_ns_uri = @namespaces.get_namespace_uri(NULL_NAMESPACE)
      openid_ns_uri = OPENID1_NS unless openid_ns_uri

      self.set_openid_namespace(openid_ns_uri)

      # put the pairs into the appropriate namespaces
      ns_args.each { |ns_alias, ns_key, value|
        ns_uri = @namespaces.get_namespace_uri(ns_alias)
        unless ns_uri
          # only try to map an alias to a default if it's an
          # OpenID 1.x namespace
          @@registered_aliases.each { |_alias, _uri|
            if _alias == ns_alias
              ns_uri = _uri
              break
            end
          }

          unless ns_uri
            ns_uri = openid_ns_uri
            ns_key = "#{ns_alias}.#{ns_key}"
          else
            @namespaces.add_alias(ns_uri, ns_alias)
          end
        end
        self.set_arg(ns_uri, ns_key, value)
      }
    end