This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Finding the first non-empty node
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: "Melton, Joseph (LNG)" <joseph dot melton at lexisnexis dot com>
- Cc: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 15 Aug 2002 16:36:54 +0100
- Subject: Re: [xsl] Finding the first non-empty node
- Organization: Jeni Tennison Consulting Ltd
- References: <659F1E79ACDCE54B9F073F928A8E5AC901A7B355@lnxdayexch02.lexis-nexis.com>
- Reply-to: xsl-list at lists dot mulberrytech dot com
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