# File lib/xtemplate/xpath.rb, line 725
    def value_by_path2(path, data, pdata, rdata, plugin)
      if( path.is_a?(String) )
        if( path =~ /([\?\|])/ )
          case $1[0]
          when ?|
            paths = path.split(PathUnion)
            return paths.collect{|path|
              path.strip!
              value_by_path2(path, data, pdata, rdata, plugin)
            }.flatten
          when ??
            paths = path.split(PathIfNot)
            for path in paths
              path.strip!
              vals = value_by_path2(path, data, pdata, rdata, plugin)
              if( vals.nil? || vals.empty? )
                next
              end
              break
            end
            return vals
          end
        end
        ids = path_split(path)
      else
        ids = path.dup
      end

      x = value_by_path(ids, data, pdata, rdata, plugin)

      if( x )
        case x
        when Array
          x.reject!{|e|e.nil?}
          if( x.size == 1 )
            x[0]
          else
            x
          end
        else
          x
        end
      else
        []
      end
    end