[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Getting a distinct list of node names
"David Tolpin" <dvd@xxxxxxxxxxxxxx> wrote in message news:200312162015.hBGKFqkZ014006@xxxxxxxxxxxxxxxxxxxxxx > > > > 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. Yes, either by using keys (e.g. the Muenchian method) or after sorting the node-set then the comparison must be for inequality of the names of the current node and its immediate preceding sibling: not(name() = name(preceding-sibling::*[1])) In case the node-set is not sorted and keys are not used, this cannot be expressed in a single XPath expression. If we had to compare just the values and not the names, then the single XPath expression is: not(. = preceding-sibling::*) but finding all elements with non-duplicate content in this way takes O(N^2) ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL Resume: http://fxsl.sourceforge.net/DNovatchev/Resume/Res.html XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|