RE: [xsl] Selecting the first item from a tokenized string

Subject: RE: [xsl] Selecting the first item from a tokenized string
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 13 Jan 2006 14:22:50 -0000
> Michael Kay wrote:
>
> > you can get the Nth item in a sequence using SEQ[N].
> > In the rare cases where that's inconvenient because
> > it changes the evaluation context, you can use
> > subsequence(SEQ, N, 1).
>
>   When can this happen?  Can you show an example?
>
>   Regards,
>
> --drkm
>

Suppose that you have a structure like this:

<e>
  <itemref nr="5"/>
  <itemref nr="7"/>
  <itemref nr="10"/>
</e>
<f>
  <item/>...
</f>

and you want to select the 5th, 7th, and 10th <item> elements.

You can't do

<xsl:for-each select="/e/itemref">
  <xsl:value-of select="/f/item[@nr]"/>

because the context inside the predicate is wrong.

But you can do

<xsl:for-each select="/e/itemref">
  <xsl:value-of select="subsequence(/f/item, @nr, 1)"/>

Of course there are other circumventions as well, involving variables or
current() - but it's nice to be aware of this alternative.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Florent Georges [mailto:darkman_spam@xxxxxxxx]
> Sent: 13 January 2006 13:14
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Selecting the first item from a tokenized string
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ______________________________________________________________
> _____________
> Nouveau : tiliphonez moins cher avec Yahoo! Messenger !
> Dicouvez les tarifs exceptionnels pour appeler la France et
> l'international.
> Tilichargez sur http://fr.messenger.yahoo.com

Current Thread