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

Subject: Re: [xsl] Got xml base path in the xslt file
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Wed, 16 Sep 2009 10:06:21 +0100
2009/9/16 Dongsheng Song <dongsheng.song@xxxxxxxxx>:
> 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?


In 2.0 you could do something like:

/doc/doc/doc(resolve-uri(concat(@id, '.xml'), document-uri(/)))/doc/div

or using document() this:

 /doc/doc/document(concat(@id, '.xml'), /)/doc/div



--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

Current Thread