Relative URI resolving with document() function 2003-05-08 - By Igor Hersht
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/IBM@(protected) To: "Chavdar Stefanov" <chavdars@(protected)> MCA cc: xalan-j-users@(protected) .apache.org 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: jycli@(protected)
"Chavdar
Stefanov" To: xalan-j-users@(protected)
<chavdars@(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
|
|