xsl-list
[Top] [All Lists]

RE: [xsl] counting nodes before a certain node

2009-11-30 19:03:44
Hi,

At 06:02 PM 11/30/2009, Mike wrote:
Given XSLT 2.0, you can select two elements $a and $b, and then the number
of elements between these two is

count($b/preceding-sibling::*) - count($b/preceding-sibling::*) - 1

This is probably more efficient than

count(*[. >> $a and $b >> .])

but you can use that if it's more convenient.

This answers the question as posed.

A better solution, however, might be available if you specified your count differently.

For example, you might be better off asking "how do I count notes elements that do not have book or author element ancestors", or "how do I count notes elements that are directly inside books, but not deeper". (From your problem statement it's impossible to know whether one of these might not be the case.)

Cheers,
Wendell

> -----Original Message-----
> From: a kusa [mailto:akusa8(_at_)gmail(_dot_)com]
> Sent: 30 November 2009 22:40
> To: xsl-list
> Subject: [xsl] counting nodes before a certain node
>
> Hi
>
> How do I count nodes up to a certain point in XSLT?
>
> Example:
>
> My xml file looks like this:
>
> <books>
> <book>
> <title>First title</book>
> </book>
> <notes>The following books talk about history.</notes>
> <notes>For further information please log on to </notes>
> <notes>Thank you for choosing.. </notes> <book>
> <title>Abraham Lincoln </title> </book>
>
> <authors>
> sample data
>
> </authors>
> <notes>Please call... </notes>
> <notes>Copyright Information </notes>
> <book>
>
> sample data
> </book>
> </books>
>
> In my XSLT file, I want to count all <notes> just before the
> second <book> element but immediately after the first book
> element or just after <authors>.
>
> How do I count all the notes elements here?
>
> --~------------------------------------------------------------------
> XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
> --~--
>


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>