-- Revert getsafexml

CREATE OR REPLACE FUNCTION public.getsafexmlpath(val character varying, with_root integer DEFAULT 0)
 RETURNS character varying
 LANGUAGE plpgsql
AS $function$
BEGIN
  IF with_root = 1 THEN
    val = regexp_replace(val, '^\w+', 'root');
  ELSIF with_root = 2 THEN
    val = regexp_replace(val, '^\w+/', '');
  END IF;

  val = UNACCENT(val);
  val = REGEXP_REPLACE(val, '[\., _]', '-', 'g');
  val = REPLACE(val, '&', '-'); /* ampersand should always be blank but it gets fixed in below */
  val = lower(val);
  val = REGEXP_REPLACE(val, '-+', '-', 'g');
  val = REGEXP_REPLACE(val, '[^\/\w\-]', '', 'g');

  RETURN val;

END; $function$

