xsl-list
[Top] [All Lists]

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

2004-05-21 08:34:09
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(_at_)innodata-isogen(_dot_)com] 
Sent: 21 May 2004 12:52
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_at_)innodata-isogen(_dot_)com
www.innodata-isogen.com



--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--