RE: [xsl] Putting parameter into XPATH expression

Subject: RE: [xsl] Putting parameter into XPATH expression
From: "Evan Lenz" <elenz@xxxxxxxxxxx>
Date: Fri, 22 Jun 2001 12:54:47 -0700
Remove the apostrophes around the arguments.

So that, instead of this:
<xsl:with-param name="Position" select="'2'"/>

You have this:
<xsl:with-param name="Position" select="2"/>

You want to pass a number, but you're passing a string instead. That's why
+0 worked--it automatically converted the string to a number.

b['2'] or b['anyString'] will always return true; it won't give you a
positional predicate.

Instead, you want b[2]

Hope this helps,

Evan Lenz
XYZFind Corp.


> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of MacEwan,
> James (Information Services)
> Sent: Friday, June 22, 2001 12:24 PM
> To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
> Subject: [xsl] Putting parameter into XPATH expression
>
>
> Hi,
>
> In the code extract below, I always get the result "OneOneOne" instead of
> "OneTwoThree" which I am expecting.
>
> I found a work around (based on my previous experience writing compilers)
> that gets XSL processor to do what I want: "<xsl:value-of
> select="a/b[$Position + 0 ]/c"/>"
>
> Can someone tell me a better (more correct) way to do this?
>
> XML ------------------
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <a>
>   <b>	<c>One</c> </b>
>   <b>	<c>Two</c> </b>
>   <b>	<c>Three</c> </b>
> </a>
>
>
> In my XSL, I do the following to write out the words One, Two and Three
> ---------------
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>
> <xsl:output method="text"/>
>
> <xsl:template match="/">
> 		 		<xsl:call-template name="Jump">
> 				    <xsl:with-param name="Position"
> select="'1'"/>
> 				</xsl:call-template>
>
> 		 		<xsl:call-template name="Jump">
> 				    <xsl:with-param name="Position"
> select="'2'"/>
> 				</xsl:call-template>
>
> 		 		<xsl:call-template name="Jump">
> 				    <xsl:with-param name="Position"
> select="'3'"/>
> 				</xsl:call-template>
> </xsl:template>
>
> <xsl:template name="Jump">
> 		<xsl:param name="Position"/>
>
> 	<xsl:value-of select="a/b[$Position ]/c"/>
>
> </xsl:template>
>
> Thanks,
>
>
> -James MacEwan
> Software Developer
> Investors Group Inc.
> mailto:James.MacEwan@xxxxxxxxxxxxxxxxxx
> v: (204) 956-8515
> f: (204) 943-3540
>
> "I don't know, lad. It's like no cheese I've ever tasted." -- Wallace
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread