code: def mk_path_str(stmt,
                  with_prefixes=False,
                  prefix_onchange=False,
                  prefix_to_module=False,
                  resolve_top_prefix_to_module=False):
      
      resolved_names = mk_path_list(stmt)
      xpath_elements = []
      last_prefix = None
      for index, resolved_name in enumerate(resolved_names):
          module_name, prefix, node_name = resolved_name
          xpath_element = node_name
          if with_prefixes or (prefix_onchange and prefix != last_prefix):
              new_prefix = prefix
              if (prefix_to_module or
                  (index == 0 and resolve_top_prefix_to_module)):
                  new_prefix = module_name
              xpath_element = '%s:%s' % (new_prefix, node_name)
          xpath_elements.append(xpath_element)
          last_prefix = prefix
      return '/%s' % '/'.join(xpath_elements)
docs: Returns the XPath path of the node.
      with_prefixes indicates whether or not to prefix every node.
  
      prefix_onchange modifies the behavior of with_prefixes and
        only adds prefixes when the prefix changes mid-XPath.
  
      prefix_to_module replaces prefixes with the module name of the prefix.
  
      resolve_top_prefix_to_module resolves the module-level prefix
        to the module name.
  
      Prefixes may be included in the path if the prefix changes mid-path.