[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Spurious matches of CaseB/CaseF in select.olink.key.in.lang
I have a couple of documents with some element IDs overlapping. For example, both have "ch-overview" ID for the first chapter. I tried using $prefer.internal.olink, but it seems to misbehave on such links: it links to internal ID even if @targetdoc points to another document. For example:
<olink targetdoc="doc2" targetptr="ch-overview"/>
links to itself, even though the document ID is clearly different. The reason is that select.olink.key.in.lang template has CaseB/CaseF variables that ignore @targetdoc from <olink/> and use $current.docid instead, and cases B/F have higher precedence than cases A/E (that use olink/@targetdoc).
So, what is the purpose of $prefer.internal.olink, given that:
1. If a check for $current.docid = $targetdoc.att is added to cases B/F (to respect the document ID on the pointer), they become equivalent to cases A/E.
2. Even with $prefer.internal.olink = 0, links within the current document are converted to internal links by olink.as.linkend template in fo/xref.xsl (in the PDF output). I haven't experimented with HTML output - but I am not sure what would be the notion of "external" vs. "internal" link in, say, chunked HTML document.
Is $prefer.internal.olink some vestige of the past that should've been removed, or am I missing some value in it?