More specifically, this is a problem for sections which have an id containing '.', and which also contain subsections.
In general, HTML documentation links in the generated HTML docs will look like:
-
https://www.saxonica.com/html/documentationX/section/subsection/page.html
for sections which do not contain subsections
-
https://www.saxonica.com/html/documentationX/section/subsection
for sections which contain subsections, and then we rely on a server redirect to add '/index.html' to the URI, and find the right page
This redirect is defined in indexed.js:
// Ends with something that doesn't have an extension, add /index.html
if (request.uri.match(/^.*\/[^\/\.]+$/)) {
return {
statusCode: 301,
statusDescription: 'Found',
headers: {
'location': { value: request.uri + '/index.html' }
}
};
}
So the problem is that if subsection
contains a '.', then this is itself recognised as an extension, and the redirect to add '/index.html' is not applied.
I think the easiest fix is to add a specific redirect for URIs ending '.net'. It looks like extensibility/dotnetextensions/converting-args.net
is the only section affected by this bug, but this is found in the HTML docs for Saxon 10 and earlier (so also 9.9, 9.8, 9.7...). So although I could update the stylesheets for generating the HTML docs to explicitly add the "/index.html" to URIs as required, we don't really want to have to regenerate all of those.
In general, it would be good to avoid '.' in section ids in the documentation, to prevent a recurrence of this issue. Note that the extensibility/dotnetextensions
section (and in particular the problematic extensibility/dotnetextensions/converting-args.net
) was removed from the docs from Saxon 11. I have searched for ids containing '.' in the Saxon 12 docs, and the remaining list is:
- schema-processing/extensions11/saxon.message
- schema-processing/extensions11/saxon.order-unique
- schema-processing/extensions11/saxon.separator
- schema-processing/extensions11/saxon.flags
- schema-processing/extensions11/saxon.param
Note that none of these currently cause a problem, because these sections do not contain subsections. But I'm thinking I might rename these on the main branch, and add a check that no ids contain '.'.