Re: [xsl] selecting from sequences

Subject: Re: [xsl] selecting from sequences
From: "Vladimir Nesterovsky" <vladimir@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 18 Dec 2008 18:06:28 +0200
- 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: [xsl] 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

Current Thread