Subject: RE: Need help using variable in select statement
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 26 Sep 2005 16:11:20 +0100
|
Variables in XPath represent values, they don't (like macro variables in a
shell language) represent bits of text to be inserted textually into an
expression.
To evaluate an XPath expression read at run-time from a source document, use
an xx:evaluate() expression if your XSLT processor offers one. This can't be
done in pure XSLT without extensions. Namespace prefixes can make it messy
even with extensions.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Frank Stoner [mailto:fstoner@xxxxxxx]
> Sent: 26 September 2005 15:38
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Need help using variable in select statement
>
> I'm trying to mimic the functionality of a tag used in
> documenting .NET C# code.
> The tag identifies a file and path location of xml content to merge
> into the source document.
>
> <include file="content.xml" path="/Top/Child[@name='Me']/*" />
>
> The template that I have written to translate this tag is simply:
>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
> Transform">
> <xsl:template match="include">
> <xsl:variable name="file" select="@file"/>
> <xsl:variable name="path" select="@path"/>
> <xsl:copy-of select="document($file)$path"/>
> </xsl:template>
> </xsl:stylesheet>
>
> The problem is that the use of the $path variable in the "select="
> statement seems to violate some syntax rule and all I get is a
> complaint about an unexpected token on that line.
>
> Now if I substitute the variable value "Top/Child[@name='Me']/*" in
> place of the "$path" variable, the template works as expected.
>
> I've tried a number of ways to build the select statement, but none
> have worked out. Any suggestions?
>
> Thanks,
> Frank
|