[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Getting the path to the stylesheet [RETRY]


Subject: Re: [xsl] Getting the path to the stylesheet [RETRY]
From: Ihe Onwuka <ihe.onwuka@xxxxxxxxxxxxxx>
Date: Fri, 6 Jul 2012 06:20:59 +0100

On Fri, Jul 6, 2012 at 2:51 AM, G. Ken Holman
<gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:
> At 2012-07-05 15:22 +0100, Ihe Onwuka wrote:
>>
>> On Thu, Jul 5, 2012 at 3:06 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
>> >
>> > On 05/07/2012 15:00, Ihe Onwuka wrote:
>> >>
>> >> What is the standard way of getting the absolute path to a stylesheet
>> >> so that references in the result tree can be resolved relative to it.
>> >>
>> >>
>> >
>> > Call the static-base-uri() function.
>> >
>>
>> Sorry for not clarifyingl, does that work for XSLT 1.0, if not  what does.
>
>
> The example below shows you get the base URI of the stylesheet when using
> XSLT 1.0.  I've needed this when working with the OASIS specification
> stylesheets.
>
> I hope this helps.
>
> . . . . . . . . . . Ken
>
> ~/t/ftemp $ pwd
> /Users/admin/t/ftemp
> ~/t/ftemp $ xslt ihe.xml ihe.xsl
>
> Stylesheet URI: file:/Users/admin/t/ftemp/ihe.xsl
>
> ~/t/ftemp $ cat ihe.xsl
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE xsl:stylesheet
> [
> <!NOTATION xsl SYSTEM "">
> <!ENTITY static-base-uri SYSTEM "" NDATA xsl>
> ]>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>   version="1.0">
>
> <xsl:output method="text"/>
>
> <xsl:template match="/">
>   <xsl:variable name="static-base-uri">
>     <xsl:for-each select="document('')">
>       <xsl:value-of select="unparsed-entity-uri('static-base-uri')"/>
>     </xsl:for-each>
>   </xsl:variable>
> Stylesheet URI: <xsl:value-of select="$static-base-uri"/>
>   <xsl:text>&#xa;&#xa;</xsl:text>
> </xsl:template>
>
> </xsl:stylesheet>
> ~/t/ftemp $ cat ihe.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <doc/>
> ~/t/ftemp $
>

Thanks Ken. 2 questions.

Does this cover the case where the stylesheet is invoked from a pi in
the source document.

Why do we need the xsl:for-each on the document('').


Current Thread
Keywords