-- This filter is used by the ODT output format to fix links
return  function(dom)
  for _, link in ipairs(dom:query_selector("t4htlink")) do
    local name = link:get_attribute("name")
    local href = link:get_attribute("href")
    local children = link:get_children()
    -- print("link", name, href, #link._children, link:get_text())
    -- add a link if it contains any subnodes and has href attribute
    if #children > 0 and href then
      link._name = "text:a"
      href = href:gsub("^.+4oo%#", "#")
      link._attr = {["xlink:type"]="simple", ["xlink:href"]=href}
      -- if the link is named, add a bookmark
      if name then
        local bookmark = link:create_element("text:bookmark", {["text:name"] = name})
        link:add_child_node(bookmark)
      end
      -- add bookmark if element has name 
    elseif name then
      link._name = "text:bookmark"
      link._attr = {["text:name"] = name}
    else
      -- just remove the link in other cases
      link:remove_node()
    end
  end
  return dom
end