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

Subject: Re: [xsl] Got xml base path in the xslt file
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 15 Sep 2009 20:41:37 -0700
At 2009-09-16 10:29 +0800, Dongsheng Song wrote:
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,

This is only true because of the way you called the document() function. You are missing the second argument to use when the first argument is not a node.


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?

Supply a second argument which is the node from which to obtain the base URI:


document($fileName,.)

... will resolve a relative URI in $fileName against the base URI of the fragment from which the current node was obtained.

Then your XSL can be in any directory and the document() function will still be off of the data file fragment.

I hope this helps.

. . . . . . . . . . . . Ken

--
Upcoming hands-on code list, UBL, XSLT, XQuery and XSL-FO classes.
Interested in other classes?  http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread