|
Subject: Re: [xsl] relative path from one node to another (XSLT 2.0 solution) From: "Richard Lewis" <richardlewis@xxxxxxxxxxxxxx> Date: Fri, 20 May 2005 11:44:04 +0100 |
On Fri, 20 May 2005 09:19:52 +0100, "Richard Lewis"
<richardlewis@xxxxxxxxxxxxxx> said:
> I wonder if you'd had any thoughts on the problem I described of
> implementing a mechanism for linking from one output document to another
> using a
> <link section="tom">See Tom's page</link>
> element in the source tree?
>
> Such an element should transformed to an HTML <a> tag with the correct
> 'href' attribute to link from the output document in which it occurs to
> the output document for the section with id 'tom'.
>
OK, I've managed to work out a solution:
First thing I did was to give the document (root) node an id attribute
(id="ROOT") to make it behave a bit more like a section (polymorphism!).
Then I made a named template which takes the id values of two sections
(one may be 'ROOT') and returns the file system path between them:
<xsl:template name="relative-fs-path">
<xsl:param name="from-id" />
<xsl:param name="to-id" />
<xsl:for-each select="//*[@id=$from-id]/ancestor::*[(name()='section'
or name()='document') and (@display='page')]">
<xsl:if test="@id!='ROOT'">../</xsl:if>
</xsl:for-each>
<xsl:for-each
select="//*[@id=$to-id]/ancestor-or-self::*[(name()='section' or
name()='document') and (@display='page')]">
<xsl:if test="@id!='ROOT' and position()!=last()"><xsl:value-of
select="@id" />/</xsl:if>
</xsl:for-each>
</xsl:template>
This generates non-relative paths; e.g. the path from tom.html to
harry.html (see beginning of thread) instead of being simply
"harry.html" is "../../staff/permanent/harry.html".
I use this for getting the file names for xsl:result-document, for
getting the correct path to link from section to another and for the
paths to the images directories and from the site's main menu to the
section documents.
I don't expect this is an ideal solution, but it works. Any comments
would be welcome!
Cheers,
Richard
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] relative path from one no, Richard Lewis | Thread | Re: [xsl] relative path from one no, David Carlisle |
| Re: [xsl] Junit-type Framework for , Dimitre Novatchev | Date | [xsl] multiple node values not bein, Rahil |
| Month |