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]

Reply via email to