Subject: Re: XPath optional node question
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Mon, 4 Dec 2000 21:59:21 -0800 (PST)
|
David,
not(self::a) or not(self::b) is wrong -- it is equivalent to self::*
Should be 'and'.
The expression that really works is:
//bar[ancestor::*[not(self::a) and not(self::b)][1][self::foo]]
Cheers,
Dimitre.
David Carlisle wrote:
me> bar[ancestor::foo and ancester::*[self::foo or descendent::foo or
me> self::a or self::b]]
as previously mentioned that fails if there are extra foo in the
tree, but I think
bar[ancestor::*[not(self::a) or not(self::b)][1][self::foo]]
meets the spec: the first ancestor that isn't a or b is foo.
or, going the other way:
foo[descendent::*[not(self::a) or not(self::b)][1][self::bar]]
foo such that the first descendent that isn't a or b is bar.
David
__________________________________________________
Do You Yahoo!?
Yahoo! Shopping - Thousands of Stores. Millions of Products.
http://shopping.yahoo.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|