Re: Preceding Ancestors
Hi Richard, My records show that I had solved your problem before 8 March 2001 -- see the following: http://vbxml.com/snippetcentral/main.asp?view=viewsnippet&id=v20010308030644 In your particular case the single XPath expression is: //p[parent::p or count(.. | $curr/ancestor::node()) = count($curr/ancestor::node() ) and not(@name=../descendant::node()/p/@name ) and count(. | $curr/following::p) != count($curr/following::p )] where $curr is the node for which you need to find the "p" elements in scope. This will highlight (usng the XPath Visualizer): <p a="1" <p a="2" <p a="6" <p a="7" The last element is also hi-lighted, because the current node is in its scope and knows about itself. Hope this helped. Cheers, Dimitre Novatchev. Richard Mitchell wrote: Well I'm trying to create some sort of scoping rule into my XML definition ( well it's already there but I'm trying to get at it from deep inside one long XPath expression ). What I can't work out is how to get at any preceding elements that are in my 'scope' i.e. from a file like <s> <m> <p a="1"/> <p a="2"/> <m> <p a="3"/> <p a="4"/> <p a="5"/> </m> <m> <p a="6"/> <p a="7"/> <---Context is here <p a="8"/> </m> <p a="9"/> </m> </s> And I'm expecting something like <p a="1"/> <p a="2"/> <p a="6"/> I've tried ancestor::*/p but that will give me <p a="9"/> too. Any ideas out there pleeeeze. I'll owe you a beer ( or beverage of your choice ) next time you're in Cambridge. Ta Muchly. __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ 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