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/