The simplest method would be to create a stylesheet parameter named
something like 'stylesheet.dir' and put the path into it manually. If you
have a static setup, that could work. As a parameter, it could also be reset
on the command line at run time. Then you just use that parameter value in
the paths to your image files.
But I suspect you wanted something that would automatically handle the
location of the stylesheet. XSLT doesn't have a function that returns the
path of the stylesheet file, but there are Saxon and Xalan extension
functions that do. This bit of code uses those extension functions to get
the full path of the stylesheet file, then uses the docbook utility template
named 'getdir' to lop off the filename, leaving the directory path.
<xsl:param name="stylesheet.dir">
<xsl:call-template name="getdir">
<xsl:with-param name="filename">
<xsl:for-each select="document('')">
<xsl:choose>
<xsl:when test="function-available('saxon:systemId')">
<xsl:value-of select="saxon:systemId()"/>
</xsl:when>
<xsl:when test="function-available('NodeInfo:systemId')">
<xsl:value-of select="NodeInfo:systemId()"/>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">
<xsl:text>WARNING: cannot compute stylesheet path</xsl:text>
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:param>
The use of document('') opens the current xsl file, and the xsl:for-each
temporarily switches the current context to that file. Then it tests for the
existance of each function before trying to use it. You'll need to put the
namespace declarations in the root element of the stylesheet file as well.
If you aren't using Saxon or Xalan, then this won't work for you.
Bob Stayton
Sagehill Enterprises
[EMAIL PROTECTED]
----- Original Message -----
From: "Remko Tronçon" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, November 13, 2008 1:58 PM
Subject: [docbook-apps] Relative path names
Hi,
In one of my customization layer stylesheets, I have the following
excerpt:
<fo:block text-align="center">
<fo:external-graphic src="url(/path/to/some/image.png)"
content-type="content-type:image/png" text-align="center"/>
</fo:block>
Is there any way of making that path relative to the stylesheet?
thanks,
Remko
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]