RE: [xsl] question on filtering a one-to-many relationship

Subject: RE: [xsl] question on filtering a one-to-many relationship
From: Robby Pelssers <Robby.Pelssers@xxxxxxx>
Date: Tue, 6 Mar 2012 10:53:09 +0100
Thx Michael,

I now understand my stupid mistake.  I should have tested solely on the name
instead of the sequence of names.

Thx for the quick reply !!

Robby

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Tuesday, March 06, 2012 10:48 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] question on filtering a one-to-many relationship

On 06/03/2012 09:30, Robby Pelssers wrote:
> Hi all,
>
> Just to make my use case clear I quickly came up with a simple example
showing my use case.
>
> I need to write a function that enables me to return all<person>'s  which
have at least 1 child that MATCHES a specific search string.
>
>            persons/person[matches(upper-case(children/child/name),
upper-case($searchString))]
>
> Above expression does not work as the matches can only handle a single
string as input and not a sequence of names.  So I was wondering what would be
an elegant way to solve this puzzler?
persons/person[some $n in children/child/name satisifies
matches(upper-case($n), upper-case($searchString))]

or if you prefer to avoid range variables,

persons/person[children/child/name[matches(upper-case(.),
upper-case($searchString))]]

(I'm not sure that applying upper-case() to a regular expression is
particularly good practice, however - for example it will change \w to \W).

Michael Kay
Saxonica
>
> Kind regards,
> Robby Pelssers
>
>
> <persons>
>    <person>
>      <name>Robby</name>
> 	<children>
> 	<child>
> 	<name>Lindsey</name>
> 	<child>
> 	<child>
> 	<name>Valerie<name>
> 	</child>
> 	</children>
>    <person>
>    <person>
>      <name>Audrey</name>
> 	<children>
> 	<child>
> 	<name>Linn</name>
> 	<child>
> 	<child>
> 	<name>Tamara<name>
> 	</child>
> 	</children>
>    </person>
> </persons>

Current Thread