xsl-list
[Top] [All Lists]

Re: Getting a distinct list of node names

2003-12-16 13:39:42
Hi David,

At 03:15 PM 12/16/2003, you wrote:
> > > node:definition/*[not(name() = name(preceding-sibling::*))]
> >
> >Why should this take a long time?  Isn't this the same as
> >
> >*[not(name() = name(preceding-sibling::*[last()]))]
>
> preceding-sibling::*[last()]), which therefore won't de-duplicate properly.
>
> So it won't take a long time, and it won't work either.

But is there a way to express it as a single predicate? I mean, not equal to the name
of any preceding-sibling? Just out of curiousity.

I don't believe so, in XPath 1.0, since we have to test one value (the name of the context node) against many values (the names of the other nodes in the set) ... and while the equality rule for node sets allows us to do such a test, there's no way to get the set of names we want into a node set for testing.

This can presumably, however, be done in XPath 2.0, since it can create sequences on the fly.

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