If I understood the problem correct, I think this /A/B/D/C|//B/D/C//B/D/C Else, try rephrasing the question, Pretty difficult to understand the lingo. Sandeep Randhawa @author XML Module for Netbeans http://xml.netbeans.org -----Original Message----- From: Nikolaos Giannadakis <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] <[EMAIL PROTECTED]> Date: Wednesday, July 04, 2001 6:08 PM Subject: XPath riddle > >Dear All, > >Can you tell what the XPath expression that: >"selects all C elements that come after A and have a D parent" is. > >That is, there might be a schema, which declares the unwanted instances of C >as integers, while >the other C declared has some anonymous complexType. > > ><?xml version="1.0" encoding="UTF-8"?> ><A> > <B> > <C/> <!-- DO NOT select this --> > <D> > <!-- recursion is introduced here --> > <C> <!-- select this --> > <B> > <C/> <!-- DO NOT select this --> > <D> > <C/> <!-- select this --> > </D> > </B> > </C> > </D> > </B> ></A> > > >/A//D/C (/A/descendant::D/C) would suffice, or, better, /A//B/D/C >(/A/descendant::B/D/C). But this would not rule out the possibility of the >B/D/C pattern appearing somewhere after A in another context. I cannot find >any XPath feature that would handle recursion. > > ><?xml version="1.0" encoding="UTF-8"?> ><A> > <B> > <F> > <B> > <D> > <C/> <!-- this would be selected incorrectly --> > </D> > </B> > </F> > <D> > <!-- recursion is introduced here --> > <C> <!-- select this --> > <B> > <C/> <!-- DO NOT select this --> > <D> > <C/> <!-- select this --> > </D> > </B> > </C> > </D> > </B> ></A> > >Using /A/B/D/C | /A/B/D/C//B/D/C would overcome this, but you can see how I >could create another problematic example... >How does one find one's way around this, using a generic XPath approach? >I am not saying this is good XML design. To the contrary! ... it is legal, >nonetheless ...any ideas? > >regards, > >nikolas/ >
