# File lib/xtemplate/xpath.rb, line 432
      def import(val, *args)
        case args[0]
        when /^xml:\/\/(.+)/
          fn = $1
          doc = File.open(fn){|f|f.read}
          parser = XMLParser.new()
          node = parser.parse(doc)
          node.prepare()
          XMLDocument.new(node).to_hash
        when /^data:\/\/(.+)/
          fn = $1
          eval(File.open(fn){|f|f.read})
        when /^var:(.+)/
          eval($1)
        when /^yaml:\/\/(.+)/
          require 'xtemplate/yaml'
          fn = $1
          File.open(fn){|f|YAMLDocument.new(f)}
        when /^soap:\/\/(.+)/
          require 'soap/driver'
          args.shift
          endpoint  = $1
          namespace = args.shift
          if( namespace =~ /^\s*$/ )
            namespace = nil
          end
          obj = SOAP::Driver.new(nil, nil, namespace, "http://#{endpoint}")
          m = args.shift
          argv = args.collect{|s| eval_expr(s,val,nil) }
          i = -1
          obj.addMethod(m, *(argv.collect{ i+=1; "arg" + i.to_s }))
          obj.call(m, *argv)
        when /^xmlrpc:\/\/(.+)/
          require 'xmlrpc/client'
          m = args[1]
          argv = args[2..-1].collect{|s| eval_expr(s,val,nil) }
          client = XMLRPC::Client.new2("http://#{$1}")
          client.call(m, *argv)
        when /^dbi:(.+)/
          require 'dbi'
          h = DBI.connect("dbi:#{$1}")
          query = args[1..-1].collect{|s|s.gsub(/\#\{(.+)\}/){eval_expr($1,val,nil).to_s }}.join(',')
          newval = []
          h.execute(query){|sth|
            while( r = sth.fetch_hash )
              newval.push(r)
            end
          }
          newval
        else
          eval(args[0])
        end
      end