Hi Andreas,
I don't know whether I correctly understood you use-case but what about going with hof functions [1]?
Maybe your code could turn to something as simple as

declare function local:topath($path){
  let $pathseg := tokenize($path, "/")
  return
    fold-left($pathseg, (), function($out, $segment){
      if($segment = "." or $segment = "") then $out
      else if($segment = "..") then $out[position() lt count($out)]
      else ($out, $segment)
    })
};
local:topath("/a/b/c/../../../g")

Regards,
Marco.

[1] http://docs.basex.org/wiki/Higher-Order_Functions

On 01/04/19 15:49, Andreas Mixich wrote:
I think, I am finding it...

I replaced the first expression with

`prof:dump(concat("in: ", $path, " out: ",
string-join(array:flatten($out)))),`

and this gives me more info. So I may be able to solve this alone.


Reply via email to