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


The simplest way is to make $position a number by writing

<xsl:with-param name="position" select="1"/>

instead of

<xsl:with-param name="position" select="'1'"/>

which makes it a string.

Or you could force it to a number: a/b[number($position)],

or use a boolean predicate: a/b[position()=$position]

Mike Kay

> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of MacEwan,
> James (Information Services)
> Sent: 22 June 2001 20:24
> 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]