Re: [xsl] Re: . in for

Subject: Re: [xsl] Re: . in for
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Fri, 4 Jan 2002 23:37:02 -0800 (PST)
--- Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> wrote:
 
> Sure. The XPath 2.0 WD gives only two distinct examples of the for
> expression, and neither of them would be achievable using the simple
> mapping operator.
> 
> The first one has two range variables, as follows:
> 
>   for $i in (1, 2),
>       $j in (3, 4)
>   return ($i, $j)
> 
> which returns the sequence:
> 
>   (1, 3, 1, 4, 2, 3, 2, 4)
> 
> and is equivalent to:
> 
>   for $i in (1, 2)
>   return for $j in (3, 4)
>          return ($i, $j)
> 
> This iterates over two sequences - (1, 2) and (3, 4) - within the same
> for expression, to create the sequence that contains pairs of possible
> combinations (ish - obviously in flat sequences the 'pairedness' isn't
> explicit).
> 
> The second example has two for expressions. The inner for expression
> creates a sequence to iterate over using the range variable from the
> outer for expression within a predicate:
> 
>   for $a in distinct-values(//author)
>   return ($a,
>           for $b in //book[$b/author = $a]
>           return $b/title)
> 
> I don't think that you can do either of these with the operator syntax
> because you lose track of what *was* the context node as you go from
> one step to the next. If the outer context item was available with the
> current() function, say, then you could do:
> 
>   (1, 2) -> ((3, 4) -> (current(), .))
> 


Maybe something like this:

( (x, y) | x -> (1,2) | y -> (3,4) )



> and:
> 
>   distinct-values(//author) ->
>     (//book[author = current()] -> (current(), title))
> 
> but without range variables, you can't manage these situations.
> 

And:

 ( (y, x ) | x-> //book[author = y]/title | y -> distinct-values(//author) )


Cheers,

Dimitre Novatchev.

__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread