xsl-list
[Top] [All Lists]

Re: how to get position of node in node-set

2003-09-11 09:42:06
Erwin,

Your problem has been a theme lately. (I hope you've been reading.)

At 12:06 PM 9/11/2003, you wrote:
I have a node-set of entries that all have different values for their text attribute.
An entry looks like this <entry text="aaa"/>.
This node set is build through muenchian grouping and assigned to a variable called 'legend'.

Now, for some current entry, I need to know the position of an entry with the same text attribute
within the $legend node-set.

eg. $legend contains entries <entry text="aaa"/>, <entry text="bbb"/> <entry text="ccc"/>.
for some entry <entry text="ccc"/> I need to get the number 3.

As a result tree fragment (constructed by the processor and bound to a variable), $legend can't be inspected this way, so if you can't find a way to see that a <entry text="ccc"/> node in your source *will be* the third in your order, you're stuck.

If $legend is a true node-set, however, you can traverse it in the usual way, e.g. ask count($legend/entry[(_at_)text=current()/@text]/preceding-sibling::*)+1.

To make $legend a true node set, use XSLT 2.0 (the draft is partially implemented in the current version of Saxon), or, in XSLT 1.0, your friendly vendor's node-set() extension function.

Cheers,
Wendell


======================================================================
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



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