|
Subject: Re: mapping (Was: Re: [xsl] Re: . in for) From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Tue, 8 Jan 2002 19:58:35 +0000 |
Hi Dave,
>> > This example could be handled with a mapping operator:
>> >
>> > <xsl:variable name="emps"
>> > select="//employee[@dept = ($departments -> lower-case(.))]" />
>
> +1 on mapping, but I dislike the above syntax Jeni.
> Scheme gives (map fn sequence).
>
> How about
>
> select='map lower-case(.) $departments'/>
> or
> select='map (lower-case(.) $departments)'/>
>
> or does this go against the idea of extending keywords?
Well, neither follows the pattern of other operators/keywords in the
XPath 2.0 WD (in particular the second will get confusing because it
looks like a function but without a comma between the arguments) The
closest would be something like:
map lower-case(.) over $departments
but this organisation doesn't make it particularly easy to pipe
functions together (or at least not in a similar way to location
paths). Using the example:
$coordinates -> (. * 2)
-> if (position() mod 2) then . + 50 else .
I think that the above syntax would be:
map (if (position() mod 2) then . + 50 else .) over
map (. * 2) over $departments
Personally, I find that hard to follow, but it may be a factor of what
other languages you're used to.
If you want keywords, we could keep the for expression, just drop the
range variable, so that you had:
for $departments return lower-case(.)
and:
for (for $coordinates return (. * 2))
return if (position() mod 2) then . + 50 else .
Or if you just don't like the -> then there are still a few ASCII
characters left, and several interesting combinations of them, or
there's always a word (or two) as the operator, like 'map':
$departments map lower-case(.)
and:
$coordinates map (. * 2)
map if (position() mod 2) then . + 50 else .
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: mapping (Was: Re: [xsl] Re: . i, DPawson | Thread | RE: mapping (Was: Re: [xsl] Re: . i, DPawson |
| Re: Regular expression functions (W, Jeni Tennison | Date | Re: default template (was:RE: [xsl], Wendell Piez |
| Month |