OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook-apps] Re: [docbook] TOC with parents


On 19/11/2015 1:47pm, Aristedes Maniatis wrote:
> My second problem is that your hack breaks all the links. The path is duplicated in the href, which makes sense I guess. My files are all in folders of up to 4 levels, and the TOC is now generated with hrefs like this:
> 
> href="ish/common/types/AccountTransactionType.html"
> 
> rather than
> 
> href="../../../ish/common/types/AccountTransactionType.html"


After a whole lot of debugging and following the code around, I see the real issue. The autotoc.xsl code calls <xsl:call-template name="href.target"> assuming that all links are always to children of the current page. Rather than using <xsl:call-template name="relative.path.link"> which would be more flexible.

So, I'm adding this:

	<xsl:template name="toc.line" mode="toc">
		<xsl:param name="toc-context" select="." />
		<xsl:param name="depth" select="1" />
		<xsl:param name="depth.from.context" select="8" />
		<span>
			<xsl:attribute name="class">
				<xsl:value-of select="local-name(.)" />
			</xsl:attribute>
			<a>
				<xsl:attribute name="href">
					<xsl:call-template name="relative.path.link">
						<xsl:with-param name="target.pathname">
						<xsl:call-template name="href.target.uri">
							<xsl:with-param name="object" select="$toc-context"/>
						</xsl:call-template>
						</xsl:with-param>
					</xsl:call-template>
				</xsl:attribute>
				<xsl:apply-templates select="." mode="titleabbrev.markup" />
			</a>
		</span>
	</xsl:template>

I removed the label stuff for clarity (and because I don't think I need it), so really the only change is switching <xsl:call-template name="href.target"> with

<xsl:call-template name="relative.path.link">
  <xsl:with-param name="target.pathname">
    <xsl:call-template name="href.target.uri">
      <xsl:with-param name="object" select="$toc-context"/>
    </xsl:call-template>
  </xsl:with-param>
</xsl:call-template>


Does the above look about right?

Ari



-- 
-------------------------->
Aristedes Maniatis
ish
http://www.ish.com.au
Level 1, 30 Wilson Street Newtown 2042 Australia
phone +61 2 9550 5001   fax +61 2 9550 4001
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

Attachment: signature.asc
Description: OpenPGP digital signature



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]