Re: [xsl] Position() Function Using Filter

Subject: Re: [xsl] Position() Function Using Filter
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Fri, 28 Oct 2011 15:11:40 +0100
On 28 October 2011 14:56, Lighton Phiri <lighton.phiri@xxxxxxxxx> wrote:
> I am trying to figure out how to get the position of a particular node
> after apply a filter. I am able to get the result after using the
> XPath below, however, I can't seem to figure out how to get the
> position of that node.
>
> bpage = ASTRO_00007.JPG
> books/book[substring-after(substring-after(substring-after(text(),
> '/'), '/'), '/')=$bpage]
>
> <books>
> <book>books/physics/astronomy/ASTRO_00002.JPG</>
> <book>books/physics/astronomy/ASTRO_00003.JPG</>
> <book>books/physics/astronomy/ASTRO_00004.JPG</>
> <book>books/physics/astronomy/ASTRO_00005.JPG</>
> <book>books/physics/astronomy/ASTRO_00006.JPG</>
> <book>books/physics/astronomy/ASTRO_00007.JPG</>
> <book>books/physics/astronomy/ASTRO_00008.JPG</>
> <book>books/physics/astronomy/ASTRO_00009.JPG</>
> <book>books/physics/astronomy/ASTRO_00010.JPG</>
> </books>

count(preceding-sibling::*) to count the number of preceding elements,
so add 1 to that and you get its position amongst its siblings.

Also, instead of the nested substrings, you can do:

book[ends-with(., $bpage)]

or

book[tokenize(., '/')[last()] eq $bpage]

-- 
Andrew Welch
http://andrewjwelch.com

Current Thread