RE: [xsl] Parse or concat query string

Subject: RE: [xsl] Parse or concat query string
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 15 Dec 2005 17:57:26 -0000
> Given an html form that passes the following query string:
> 
> approved=1&approved=3&approved=4&foo=bar
> 
> how do I parse/concat the query string to end up with all the 
> 'approved' parameter values as a comma separated list?

<xsl:variable name="queryParams"
  select="tokenize($URL_query_string, '&amp;')"/>

<xsl:variable name="approvedParams"
  select="for $p in queryParams[startsWith(., 'approved=')]
          return subtring-after($p, 'approved=')"/> 

<xsl:value-of select="concat('(', string-join($approvedParams, ','), ')')

> 
> For example: (1,3,4)
> 
> Also, during this process, can I use as="xs:integer" to verify that 
> the concatenated parameter values are indeed integers?

No, because the values aren't integers until you convert them to integers.

You can use "castable as xs:integer" to test whether they are capable of
being so converted.

Michael Kay
http://www.saxonica.com/

Current Thread