| Subject: [xsl] Re: XPath riddle From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Wed, 4 Jul 2001 21:13:18 -0700 (PDT) | 
Hi Nicholas,
I cannot understand why you exclude a node in your second example -- this node
perfectly matches your definition of the result node-set.
Therefore, you have to provide another definition of the wanted result set.
> Can you tell what the XPath expression that:
>  "selects all C elements that come after A and have a D parent" is.
> 
(//A/following::C | //A/descendant::C)[parent::D]
>  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. 
                                             ^^^^^^^^^^^^^^^^^^  
??????????
What "context"? You do not define any particular "context" in your original
definition of the wanted result set. There's something you haven't told us.
Please, explain this statement.
>  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 -->
Why, it exactly matches your definition -- this is a "C" node that follows "A" and
has a "D" parent.
>                                  </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?
Once again, could you provide a correct definition of your result set? The node you
want excluded in your second example matches exactly your definition of the result
set.
Cheers,
Dimitre Novatchev.
__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| [xsl] ANN: XEP 2.5 Released, Nikolai Grigoriev | Thread | RE: [xsl] Re: XPath riddle, Nikolaos Giannadakis | 
| [xsl] ANN: XEP 2.5 Released, Nikolai Grigoriev | Date | Re: [xsl] node-set, Francis Norton | 
| Month |