xsl-list
[Top] [All Lists]

Re: [xsl] Fwd: XSLT 2.0 Determining Position of Sequence Item During "for expression" evaluation

2007-03-16 15:18:40
I want to write a expression that does something like this...

takes a sequence like this

("Page1","Page2","Page3")

and outputs

Page1 > Page2 > Page3

so, assuming the sequence is in a variable $pages we try something like this...

for $p in $pages
return
 concat( $p, ' > ')

but of course, this causes a trailing ' > ' which we don't want...

This can be written as:

for $cnt in  count(  $pages )
            return
                (
                   ( for $cnt2 in $cnt,
                         $p in 1 to $cnt2 - 1
                            return
                               ($pages[$p],   '>')
                    ),
                    $pages[$cnt]
                 )

And the result is:

Page1 > Page2 > Page3 > Page4





--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play


On 3/16/07, John McGowan <john(_at_)sevenac(_dot_)com> wrote:
> is not absolutely clear what you want to do, something like the
> following may be useful:
>
>
>    for $k in 1 to 10
>       return (4 to 13)[$k]
>
>
> To put it simply, an indexing variable in the range
>
>        1 to count($someSequence)
>

I'll try to explain a little better what I'm getting at...

I want to write a expression that does something like this...

takes a sequence like this

("Page1","Page2","Page3")

and outputs

Page1 > Page2 > Page3

so, assuming the sequence is in a variable $pages we try something like this...

for $p in $pages
return
 concat( $p, ' > ')

but of course, this causes a trailing ' > ' which we don't want...

so something like is what I'm looking for

for $p in $pages
return
 concat($p, if (---sometest---) then '' else ' > ' )

problem is, I can't figure out how to write an expression that can
tell if this is the last item in the sequence.

Does that explain it a little better?

--
John McGowan
Seven A C Consulting, Inc.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--