[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Copy path specified by parameter


Subject: Re: [xsl] Copy path specified by parameter
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 14 Jul 2005 14:21:54 +0100

<xsl:param name="path" select="'/part[1]'"/>  

that sets $path to be a string not an XPath (You can't hold expressions
in XPath variables)

so

 <xsl:template match="$path">

is the same as

 <xsl:template match="'/part[1]'"">

and will report an error that a pattern must select nodes not strings.

If you really must have a string then you will need to use an evaluate
extension function that can evaluate an Xpath stored in a string. I
assume you are using saxon8 which has such an extension in which case
you just need
<xsl:template match="/">
 <xsl:copy-of select="saxon:evaluate($path)"/>

but a more natural way for xslt would be to not pass in a string but
rather pass in a sequence selected by teh xpath so have a default of

    <xsl:param name="path" select="/part[1]"/>  <!-- default value -->

and then you could just use
<xsl:sequence (or copy-of) select="$path"/>

Most API's (other than the command line) let you set parameters to be
sequnces (node-sets in xpath 1 terminology)

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________


Current Thread
Keywords