Re: [xsl] Filter by array parameter

Subject: Re: [xsl] Filter by array parameter
From: "Joe Fawcett" <joefawcett@xxxxxxxxxxx>
Date: Sat, 28 Oct 2006 10:21:00 +0100
----- Original Message ----- From: "Giancarlo Rossi" <giancarlo_rossi@xxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Saturday, October 28, 2006 9:59 AM
Subject: [xsl] Filter by array parameter



I need to know how is possible to pass an array string to a Xpath expression
to filter the results.


For example :

<xsl:param name="supplier_param" select="Alitalia,ryanair"


<xsl:for-each select="msxsl:node-set($base)/item[(supplier = $supplier_param or not($supplier_param)) ">

In this case I must pass as parameter the value Alitalia,ryanair to get the
results for this suppliers.


But in this way I get no result.

It' possible in xslt 1.0 pass a an Array as in SQL : WHERE IN
("value1,value2") ?

Thanks in advance.

I think you have two options, either pass the string as you do and use string matching:
Filter: alitalia,ryanair
add separators: ,alitalia,ryanair, ($searchParam)
Compare:
msxsl:node-set($base)/item[contains(concat(',', item, ','), $searchParam)] ">


Alternatively add the parameter as a nodelist, you'll have to change it something like <airlines><airline>alitalia</airline>.....
Then you can compare directly as you did initially.


--

Joe

Current Thread