RE: [xsl] Setting Base URL For Resolivng xsl:include/xsl:import

Subject: RE: [xsl] Setting Base URL For Resolivng xsl:include/xsl:import
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 21 May 2004 16:34:09 +0100
Yes, it should work the way you describe it. I can't see any reason from
this description why it isn't working.

Michael Kay  

> -----Original Message-----
> From: Eliot Kimber [mailto:ekimber@xxxxxxxxxxxxxxxxxxx] 
> Sent: 21 May 2004 12:52
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Setting Base URL For Resolivng xsl:include/xsl:import
> 
> This may be a Saxon-specific question but I think it should 
> be a general 
>   XSLT question.
> 
> What I'm trying to do is enable the direct processing of XSLT style 
> sheets that are stored in a versioning repository that provides HTTP 
> access to versions of files. As part of this system, one uses 
> relative 
> URLs in documents to point to other files. At processing time you set 
> the resolution base (e.g., <base> in HTML) to set the appropriate 
> resolution context.
> 
> For example, in an XSLT document I might have a link like this:
> 
>    <xsl:import href="res_000000002/onSnapshot"/>
> 
> This is a relative URL that, in my repository, resolves to a specific 
> version based on the directory the URL fragment is resolved against.
> 
> To run a style sheet with Saxon 6.5.2 I can use a command 
> line like this:
> 
> saxon -o test.html 
> http://localhost:9090/br_00001/snapshot_0002/ver_00003 
> http://localhost:9090/br_00002/snapshot_0005/ver_00008
> 
> Where "http://localhost:9090/br_00002/snapshot_0005/ver_00008"; is the 
> URL of the XSLT style sheet with the above import statement. 
> This works 
> for a single-file style sheet but not if there are includes 
> or imports 
> because the relative URLs are not resolved (in fact, I don't see any 
> attempt to resolve the include in my server log).
> 
> My expectation was that the import statements would be 
> resolved relative 
> to the URL of the style sheet, in this case producing the 
> effective URL:
> 
> http://localhost:9090/br_00002/snapshot_0005/res_000000002/onSnapshot
> 
> However, it appears that this is not case.
> 
> My questions:
> 
> 1. Was my expectation justified or have I misunderstood how URL 
> resolution works generally or in XSLT or in Saxon?
> 
> 2. Is there a general way to establish the URL resolution 
> base in XSLT 
> so that I would get the behavior I expected? In the context of my 
> repository I could, for example, set an attribute on the StyleSheet 
> element as I serve the XSLT document out, although I would 
> prefer to use 
> a command-line option. That is, as a matter of design 
> principle, I want 
> my repository to have know as little as possible about the details of 
> the data it is serving out--my hope being that if tools use standard 
> HTTP mechanisms everything "just works".
> 
> Reading the Saxon docs I see that I could implement my own 
> URL resolver 
> which I'm sure would solve the problem but my hope was that I could 
> enable the direct use of style sheets out of my repository by 
> unmodified 
> XSLT processors.
> 
> Thanks,
> 
> Eliot
> -- 
> W. Eliot Kimber
> Professional Services
> Innodata Isogen
> 9030 Research Blvd, #410
> Austin, TX 78758
> (512) 372-8122
> 
> eliot@xxxxxxxxxxxxxxxxxxx
> www.innodata-isogen.com

Current Thread