Nikolaos --

First, since this is not a Xalan-specific question, you'd probably get a
faster response from the Mulberry list.

Second, I'm pretty confused about what you're trying to do.  I
understand the first example, but why should the first <C/> element
-not- be selected in the second example?  It is a "C element that comes
after A and has a D parent".

Gary

Nikolaos Giannadakis wrote:
> 
> 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/

Reply via email to