This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Putting parameter into XPATH expression


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@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of MacEwan,
> James (Information Services)
> Sent: Friday, June 22, 2001 12:24 PM
> To: 'xsl-list@lists.mulberrytech.com'
> 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@investorsgroup.com
> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]