Interesting... The more typical way is to write a custom URIResolver() that deals with requests from document() and xsl:import/xsl:include.
http://access1.sun.com/technotes/00762.html You can set it on either the TransformerFactory or on the Transformer. It will intercept the calls and allow you to re-route them or pass back whatever you want really. (Ive read that for the document() function it should be set on the Transformer but Ive not tested that) cheers andrew > -----Original Message----- > From: Igor Hersht [mailto:[EMAIL PROTECTED] > Sent: 08 May 2003 18:14 > To: Christine Li > Cc: Chavdar Stefanov; [EMAIL PROTECTED] > Subject: Re: Relative URI resolving with document() function > > > For documentation on document you can see > http://www.w3.org/TR/xslt#document > > About your specific problem. As far as I understand you would like > to have your URL to be relative to your input xml file. > You can do it when you call document() with 2 arguments e.g. > > <xsl:value-of select="document('dir2/t2.xml',document > ('dir1/t1.xml'))/doc/tt"/> > > One can see 'dir2/t2.xml' would use Base URI from 'dir1/t1.xml' > ('dir2/t2.xml' is relative to dir1). > > > Igor Hersht > XSLT Development > IBM Canada Ltd., 8200 Warden Avenue, Markham, Ontario L6G 1C7 > Office D2-260, Phone (905)413-3240 ; FAX (905)413-4839 > > > > > Christine > > Li/Toronto/[EMAIL PROTECTED] To: > "Chavdar Stefanov" <[EMAIL PROTECTED]> > MCA cc: > [EMAIL PROTECTED] > Subject: Re: > Relative URI resolving with document() > 05/08/2003 09:27 function > > AM > > > > > > > > > > > > > Hi, Chavdar > > for document($stringval), if $stringval is a absolute URI, the URI > reference is returned. If the $stringval is a relative URI, > the base URI of > the node in the stylesheet that contains the expression that > includes the > call to the document function is used. > In your case, document("/dir3/dir4/source2.xml") uses a > relative URI, so it > tries to use base URI from the calling stylesheet. The same > as if calling > document("http://myserver.net/dir1/dir2/source2.xml"). > > Christine Li > XSLT Development > IBM Toronto Lab > Tel: (905)413-2601 > Email: [EMAIL PROTECTED] > > > > "Chavdar > > Stefanov" To: > [EMAIL PROTECTED] > > <[EMAIL PROTECTED] cc: > > .com> Subject: Relative URI > resolving with document() function > > 05/08/2003 08:34 > > AM > > > > > > > Hi all, > > I have the following problem. > Let's say that I have the stylesheet "main.xsl" which includes the > stylesheet "secondary.xsl". > These stylesheets are located at base URL > "http://myserver.net/dir1/dir2/". > I am transforming an XML "source1.xml" into HTML which is > located at base > URL "http://myserver.net/dir3/dir4/". > The stylesheet secondary.xsl is using the document() function > to import > another XML "source2.xml" for querying which have the same base URL > location > as "source1.xml". > Now comes the problem. > If I use a relative URL the "source2.xml" is not imported and if I use > absolute URL it works fine. But I need to use server relative URL. > > How Xalan resolves relative URIs with teh document() function > and is this a > > bug or I am doing wrongly. > > Here is a code snippet of how I am using the document() functioin: > > ... > <xsl:variable name="link_doc_xml"> > <xsl:value-of select="concat('/dir3/dir4/', 'source2.xml')"/> > </xsl:variable> > <xsl:variable name="inc_xml_root" select="document($link_doc_xml)"/> > ... > > I'am using Xalan 2.4.0 with Xerces 2.1.0 > > Thanks > > _________________________________________________________________ > Add photos to your e-mail with MSN 8. Get 2 months FREE*. > http://join.msn.com/?page=features/featuredemail > > > > > > > > > > > > --- > Incoming mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.470 / Virus Database: 268 - Release Date: 08/04/2003 > > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.470 / Virus Database: 268 - Release Date: 08/04/2003
