def query(cl, *args)
      # WSDL is disabled since calling the server for wsdl can last too long.
      v = []
      body = {
        'urn:objRequestParameters' => {
          'urn:corpus' => 'de',
          'urn:parameters' => {
            'urn:dataVectors' => v
          }
        }
      }

      # _args_ is an Array of arrays with keys and values
      # Setting the first argument (usually 'Wort').
      # Setting the second argument (usually 'Limit').
      # Setting the third argument (no common value).
      args.each do |key, val|
        v << {'dat:dataRow' => [key, val]}
      end

      begin
        resp = cl.call(:execute, {:message => body})
      rescue => e
        raise(WLAPI::ExternalError, e)
      end

      doc = Document.new(resp.to_xml)
      warn(doc) if $DEBUG

      doc
    end
def query(cl, *args)
      # WSDL is disabled since calling the server for wsdl can last too long.
      v = []
      body = {
        'urn:objRequestParameters' => {
          'urn:corpus' => 'de',
          'urn:parameters' => {
            'urn:dataVectors' => v
          }
        }
      }

      # _args_ is an Array of arrays with keys and values
      # Setting the first argument (usually 'Wort').
      # Setting the second argument (usually 'Limit').
      # Setting the third argument (no common value).
      args.each do |key, val|
        v << {'dat:dataRow' => [key, val]}
      end

      begin
        resp = cl.call(:execute, {:message => body})
      rescue => e
        raise(WLAPI::ExternalError, e)
      end

      doc = Document.new(resp.to_xml)
      warn(doc) if $DEBUG

      doc
    end
Main query method, it invokes the soap engine.
 It combines all the data to one SOAP request and gets the answer.
 <args> contains an array [[key1, value1], [key2, value2], [key3, value3]]
 with keys and values for the soap query.