RE: [xsl] Got xml base path in the xslt file

Subject: RE: [xsl] Got xml base path in the xslt file
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 16 Sep 2009 08:05:16 +0100
This is what the rarely-used second argument of the document() function is
for. If you change the call from

document($filename)

to

document($filename, /)

then the relative URI is interpreted relative to the base URI of the source
document.

In XSLT 2.0 you can use resolve-uri() explicitly to construct the absolute
URI any way you like.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay  

> -----Original Message-----
> From: Dongsheng Song [mailto:dongsheng.song@xxxxxxxxx] 
> Sent: 16 September 2009 03:29
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Got xml base path in the xslt file
> 
> Hi all,
> I use a xsl file to merge multiple xml files,  the master xml 
> file like this:
> 
> <doc>
> 	<doc id="Intro" />
> 	<doc id="Configuration" />
> 	<doc id="Index" />
> </doc>
> 
> 
> The xsl file like this:
> 
> <xsl:for-each select="doc/doc">
>     <xsl:variable name="fileName"><xsl:value-of select="@id"
> /><xsl:text>.xml</xsl:text></xsl:variable>
> 
>     <xsl:for-each select="document($fileName)">
>         <xsl:copy-of select="doc/div"/>
>     </xsl:for-each>
> </xsl:for-each>
> 
> Because the file path is relative of  the xsl file for 'document'
> function, I have to put xsl and xml files together.
> Can I got the base path of master xml file, so I can store 
> xsl and xml file separately?
> 
> Regards,
> Dongsheng Song

Current Thread