in freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/Transform.java [1796:1834]
private void preprocessDOM_buildTOC(Document doc) {
preprocessDOM_buildTOC_inner(doc, 0, null);
if (tocNodes.size() > 0) {
preprocessDOM_buildTOC_checkEnsureHasIndexHhml(tocNodes);
preprocessDOM_buildTOC_checkTOCTopology(tocNodes.get(0));
if (!tocNodes.get(0).isFileElement()) {
throw new BugException(
"The root ToC node must be a file-element.");
}
preprocessDOM_buildTOC_checkFileTopology(tocNodes.get(0));
if (simpleNavigationMode) {
// Must do it at the end: We need the docgen_... XML attributes here, and we must be past the
// TOC topology checks.
for (TOCNode tocNode : tocNodes) {
// Don't generate a file for pages that would only contain a table of contents
if (tocNode.isFileElement()
&& (tocNode.getParent() == null || !hasContentInTheSameFile(tocNode))) {
tocNode.setOutputFileName(null);
tocNode.getElement().setAttribute(A_DOCGEN_NOT_ADDRESSABLE, "true");
}
}
}
if (!validationOps.getOutputFilesCanUseAutoID()) {
for (TOCNode tocNode : tocNodes) {
String outputFileName = tocNode.getOutputFileName();
if (outputFileName != null && outputFileName.startsWith(AUTO_ID_PREFIX)) {
throw new DocgenException(XMLUtil.theSomethingElement(tocNode.getElement(), true)
+ " has automatically generated ID that is not allowed as the ID "
+ "is used for generating a file name. (Related setting: \"" + SETTING_VALIDATION
+ "\" per \"" + SETTING_VALIDATION_OUTPUT_FILES_CAN_USE_AUTOID + "\")");
}
}
}
}
}