This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: RE: For expressions and / operator in XPath 2.0
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Thu, 3 Jan 2002 14:57:08 +0000
- Subject: Re: [xsl] RE: For expressions and / operator in XPath 2.0
- Organization: Jeni Tennison Consulting Ltd
- References: <000901c19457$203eb290$465169d5@pcukmka>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Mike,
> Basically, binary operators (and, or, etc) are recognized in the
> same way as XPath 1.0, by virtue of the lexical token that precedes
> them. Function names are recognized by a following "(", axis names
> by a following "::"; "if" by a following "("; "for", "some", and
> "every" by a following "$". So keywords are disambiguated from
> element names by a single-token lookahead.
So you could make 'for' without range variables recognisable through a
following "(" as is done with 'if':
"for" "(" Expr ")" "return" Expr
>> Say you had a sequence of numbers (conceptually coordinate pairs).
>> You could do a 'scale' operation by multiplying the pairs by 2:
>>
>> $coordinates -> (. * 2)
>>
>> and then do a 'move' operation by adding 50 to the odd numbers:
>>
>> $coordinates -> (. * 2) -> (if (position() mod 2) then . +
>> 50 else .)
>
> [Parochial question: does this example have something to do with the
> new algorithm for British vehicle registrations?]
Um, no :) I took inspiration from the transform attribute in SVG:
transform="translate(50,0) scale(2)"
does a scale followed by a move.
I guess it was the 'adding 50 to the second half of the year' that
made you think of the vehicle registrations? You might do something
along those lines with:
$years -> (. - 2000) -> (., . + 50)
Perhaps.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list