Greetings.
Please, would it be possible to add an Index and/or TOC to the HTML output in order to navigate in very long HTML files with a lot of productions.
Example: http://manticore-projects.com/JSQLFormatter/syntax.html#
I have post-added this by parsing the XHTML file via XPATH. It works somehow, but yields in an extra step and the heavy JSOUP/SAXON dependencies.
private static String stripTrailing(String s, String suffix) {
if (s.endsWith(suffix))
return s.substring(0, s.length() - suffix.length());
else
return s;
}
public static void insertTOC(File file) throws IOException {
System.setProperty(W3CDom.XPathFactoryProperty, "net.sf.saxon.xpath.XPathFactoryImpl");
Document doc = Jsoup.parse(file, "UTF-8", "", Parser.xmlParser());
Elements elements = doc.selectXpath("//*[local-name()='a' and not(@href) and @name]");
ArrayList<String> tocEntries = new ArrayList<>();
TreeSet<String> indexEntries = new TreeSet<>();
for (Element link : elements) {
String key = stripTrailing(link.text(), ":");
tocEntries.add(key);
indexEntries.add(key);
}
Element tocElement = doc.body().prependElement("H1");
tocElement.text("Table of Content:");
tocElement.attr("style", "font-size: 14px; font-weight:bold");
Element pElement = tocElement.appendElement("p");
pElement.attr("style", "font-size: 11px; font-weight:normal");
for (String s : tocEntries) {
pElement.appendElement("a").attr("href", "#" + s).text(s);
pElement.appendText(" ");
}
Element indexElement = doc.body().prependElement("H1");
indexElement.text("Index:");
indexElement.attr("style", "font-size: 14px; font-weight:bold");
pElement = indexElement.appendElement("p");
pElement.attr("style", "font-size: 11px; font-weight:normal");
for (String s : indexEntries) {
pElement.appendElement("a").attr("href", "#" + s).text(s);
pElement.appendText(" ");
}
FileUtils.writeStringToFile(file, doc.outerHtml(), StandardCharsets.UTF_8);
}
Greetings.
Please, would it be possible to add an Index and/or TOC to the HTML output in order to navigate in very long HTML files with a lot of productions.
Example: http://manticore-projects.com/JSQLFormatter/syntax.html#
I have post-added this by parsing the XHTML file via XPATH. It works somehow, but yields in an extra step and the heavy JSOUP/SAXON dependencies.