@Override
        public ResolvedLink resolveLink(Node node, HtmlNodeConverterContext context, ResolvedLink link) {
            // convert all links from relative to absolute http url.
            String curr = link.getUrl();

            if (curr.startsWith("http")) 
                return link;

            try {
                return link.withUrl(new URI(URL_PREFIX).resolve(fileUrl).resolve(curr).toString());
            } catch(Exception e) {
            }

            if (curr.startsWith("#"))
                return link.withUrl(URL_PREFIX + fileUrl + curr);

            if (curr.startsWith("."))
                return link.withUrl(URL_PREFIX + fileUrl + curr);

            return link.withUrl(URL_PREFIX + curr);
        }
ContentFetcher
Common logic for setting options for HTML -> Markdown converter and link resolving.
Override {@link getMarkdownContent} to return a set of key/value pairs, where key gives a markdown file name, and value is markdown content.
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/documentation/ContentFetcher.java