Re: [xsl] Finding the first non-empty node

Subject: Re: [xsl] Finding the first non-empty node
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Thu, 15 Aug 2002 16:36:54 +0100
Hi Joe,

> Is there a test for finding the position of the first tag that
> contains data? The example would be as follows:
>
> <root>
>  <tag1/>
>  <tag1/> 
>  <tag1/>
>  <tag1>This one has data</tag>
>  <tag1>This one has data</tag>
>  <tag1>This one has data</tag>
> </root>
>
> So I would like position 4 returned. Thank you

(That isn't well-formed -- you have 'tag1' start tags and 'tag' end
tags.)

You can find all the 'tag' elements that contain some text with:

  tag[string()]

You can find the first such 'tag' element with:

  tag[string()][1]

To get its position, you could count how many preceding sibling 'tag'
elements it has, and add one (to get the normal 1-based counting
scheme):

  count( tag[string()][1]/preceding-sibling::tag ) + 1

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread