This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: document() path created from xml
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: Re: [xsl] document() path created from xml
- From: Jeroen Janssen <jeroen at laika dot nl>
- Date: Tue, 04 Sep 2001 12:47:45 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
on 04-09-2001 12:34, Jeni Tennison at mail@jenitennison.com wrote:
Sorry, I made a mistake with the xsl example I sent (apart from the fact
that it doesn't work :-) stupid me!!
My problem is that I want to take the id from one xml document and I want to
use that id to load another document, something like this:
<xsl:variable name="path">
document('../data/institutions/institutions_country<xsl:value-of
select="country/@id"/>.xml')/institutions
</xsl:variable>
<xsl:apply-templates select="$path"/>
Except that this doesn't work..
By the way, you guys are a great help! Sorry I ask so many questions, but
I'm still learning and I find some stuff quite abstract and difficult to
comprehend, especially the xpath stuff.. but thanks to this list (and a
couple of books) I'm learning something new every day.
> Hi Jeroen,
>
>> I'm trying to load an xml document with document(), every file has
>> an id and I need to take this id from the originaly loaded xml, I
>> tried this with a variable but I can't get it to work, this one of
>> the xsls I tried:
>>
>> <xsl:variable name="path">
>> document('../data/institutions/institutions_country0.xml')/institutions
>> </xsl:variable>
>>
>> <xsl:apply-templates select="$path"/>
>
> When you set a variable using its content, then you create a result
> tree fragment; in this case, you create a result tree fragment with a
> single text node whose value is
> "document('../data/institutions/institutions_country0.xml')/institutions".
>
> Instead, you want to evaluate the XPath, to make the $path variable
> hold the resulting institutions element (I think). To do that, use the
> select attribute on xsl:variable, rather than its content, to set the
> variable:
>
> <xsl:variable name="path"
> select="document('../data/institutions/institutions_country0.xml')
> /institutions" />
>
>> A related question; is there any way of seeing what the result of an
>> expression is? I know I'm doing something wrong but "Reference to
>> variable or parameter 'path' must evaluate to a node list" is a bit
>> vague, I would like to see what's actually happening...
>
> I find it helpful to send debugging messages with xsl:message and use
> xsl:copy-of to show the value of variables. For example:
>
> <xsl:message>
> $path: <xsl:copy-of select="$path" />
> </xsl:message>
>
> Where you see the messages depends on the way you're using the
> processor.
>
> I hope that helps,
>
> Jeni
>
> ---
> Jeni Tennison
> http://www.jenitennison.com/
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list