Subject: RE: selecting from sequences
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 18 Dec 2008 16:36:17 -0000
|
Although it's clear from these responses that there are solutions to these
requirements, I have always felt the need for higher order operators to
achieve this effect:
$seq[>>EXP] everything in $seq after the first item that satisfies EXP
$seq[>>=EXP] everything in $seq after and including -"-
$seq[<<EXP] everything in $seq before the first item that satisfies EXP
$seq[<<=EXP] everything in $seq before and including -"-
They're available in Saxon and EXSLT to some extent in the form xx:leading()
and xx:trailing().
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Vladimir Nesterovsky [mailto:vladimir@xxxxxxxxxxxxxxxxxxxx]
> Sent: 18 December 2008 16:06
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: selecting from sequences
>
> > - the position of the first b?
>
> <!-- 0 means that there is no value. --> <xsl:variable
> name="index" as="xs:integer" select="
> (
> for $i in 1 to count($seq) return
> $seq[$i][self::b],
> 0
> )[1]"/>
>
> > - everything before the first b
>
> <xsl:sequence select="subsequence($seq, 1, $index)"/>
>
> > - everything from the first b to the end
>
>
> <xsl:sequence select="subsequence($seq, $index)"/>
>
> Vladimir Nesterovsky
> http://www.nesterovsky-bros.com
>
> ----- Original Message -----
> From: "Ruud Grosmann" <r.grosmann@xxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Thursday, December 18, 2008 17:28
> Subject: selecting from sequences
>
>
> > hi group,
> >
> > I have question which must have been on this list before,
> but I can't
> > find the answer.
> >
> > In my style sheet I make a selection of the elements and
> pass that to a
> > template. In that template I can reference this sequence as $seq.
> >
> > Selecting from $seq appears to be not that easy, because I
> can't use
> > axes. Axes have a document scope whereas I want to do
> something within
> > the sequence.
> > If for example $seq contains elements a, b, c, b, e:
> >
> > how do I select
> > - everything before the first b
> > - everything from the first b to the end
> > - the position of the first b?
> >
> > As $seq[self::b][1]/preceding-sibling::* is not good
> because it possibly
> > selects element outside the sequence, but are
> preceding-siblings in the
> > document.
> >
> > Thanks in advance,
> >
> > Ruud
|